Prometheus 监控系统 + Grafana 可视化平台部署

一、Prometheus 概述

Prometheus 是一个开源的服务监控系统时间序列数据库,其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件 Prometheus server周期性从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据新拉取到的数据会持久化到存储设备当中

时间序列数据库:专门用于存储和处理时间序列数据的数据库系统

zabbix和promethus区别:

zabbix 用的关系型数据库(必须按照固定格式存储,去重等),只适用于传统环境
           支持图形化,适合监控本地服务器。(zabbix6.0支持时序数据库)

promethus 用的时间序列数据库(按照时间顺序 快速存储)

                  和k8s是同种Go语言编写,同种系统。适合云原生容器监控都用promethus

每个被监控的主机都可以通过专用的 exporter 程序提供输出监控数据的接口,它会在目标处收集监控数据,并暴露出一个 HTTP 接口供 Prometheus server 查询,Prometheus 通过基于 HTTP 的 pull 的方式来周期性的采集数据。 
如果存在告警规则,则抓取到数据之后会根据规则进行计算,满足告警条件则会生成告警,并发送到 Alertmanager 完成告警的汇总和分发。
当被监控的目标有主动推送数据的需求时,可以以 Pushgateway 组件进行接收并临时存储数据,然后等待 Prometheus server 完成数据的采集。

任何被监控的目标都需要事先纳入到监控系统中才能进行时序数据采集、存储、告警和展示,监控目标可以通过配置信息以静态形式指定,也可以让 Prometheus 通过服务发现的机制进行动态管理。
Prometheus 能够直接把 API Server 作为服务发现系统使用,进而动态发现和监控集群中的所有可被监控的对象。


Prometheus 官网地址:https://prometheus.io

Prometheus github 地址:https://github.com/prometheus

存储引擎-TSDB

TSDB 作为 Prometheus 的存储引擎完美契合了监控数据的应用场景
●存储的数据量级十分庞大
●大部分时间都是写入操作
●写入操作几乎是顺序添加,大多数时候数据都以时间排序
●很少更新数据,大多数情况在数据被采集到数秒或者数分钟后就会被写入数据库
●删除操作一般为区块删除,选定开始的历史时间并指定后续的区块。很少单独删除某个时间或者分开的随机时间的数据
●基本数据大,一般超过内存大小。一般选取的只是其一小部分且没有规律,缓存几乎不起任何作用
●读操作是十分典型的升序或者降序的顺序读
高并发的读操作十分常见


Prometheus 的特点:

●多维数据模型:由度量名称和键值对标识的时间序列数据
时间序列数据:按照时间顺序记录系统、设备状态变化的数据,每个数据称为一个样本;服务器指标数据、应用程序性能监控数据、网络数据等都是时序数据

内置时间序列数据库:Prometheus (本地存储,15天)

 外置的远端存储通常会用:InfluxDB(小中型)、OpenTSDB(分布式、大型)长期存储

promQL 一种灵活的查询语言,可以利用多维数据完成复杂查询

基于 HTTP 的 pull(拉取)方式采集时间序列数据

●同时支持 PushGateway 组件收集短期数据

●通过静态配置或服务发现发现目标

●支持作为数据源接入 Grafana    


二、Prometheus 的生态组件

Prometheus 负责时序型指标数据的采集及存储,但数据的分析、聚合及直观展示以及告警等功能并非由 Prometheus Server 所负责。
Prometheus 生态圈中包含了多个组件,其中部分组件可选:

1、Exporters

暴露器用于数据原生不支持Promethus监控系统 ,周期性采集的数据,转化为Promethus可识别的http格式 对外暴露给Promethus

常用的 Exporters:

●Node-Exporter:用于收集服务器节点的物理指标状态数据,如平均负载、CPU、内存、磁盘、网络等资源信息的指标数据,需要部署到所有运算节点。
指标详细介绍:https://github.com/prometheus/node_exporter

●mysqld-exporter/nginx-exporter

●Kube-State-Metrics:为 Prometheus 采集 K8S 资源数据的 exporter,通过监听 APIServer 收集 kubernetes 集群内资源对象的状态指标数据,例如 pod、deployment、service 等等。同时它也提供自己的数据,主要是资源采集个数和采集发生的异常次数统计。
需要注意的是 kube-state-metrics 只是简单的提供一个 metrics 数据,并不会存储这些指标数据,所以可以使用 Prometheus 来抓取这些数据然后存储, 主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等;调度了多少个 replicas ?现在可用的有几个?多少个 Pod 是 running/stopped/terminated 状态?Pod 重启了多少次?有多少 job 在运行中。

●cAdvisor:用来监控容器内部使用资源的信息,比如 CPU、内存、网络I/O、磁盘I/O 。

●blackbox-exporter:监控业务容器存活性。

2、Pushgateway

中转站。接收短期任务的数据,并临时存储。在任务结束时push推送数据给 Prometheus Server,然后 Prometheus server 统一从 Pushgateway中pull拉取数据。

可以理解成目标主机可以上报短期任务的数据到 Pushgateway,然后 Prometheus server 统一从 Pushgateway 拉取数据。

3、Prometheus server

功能:1、拉取 监控数据    2、存储 监控数据

Promethus Server 通过 http pu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值