一 prometheus的基本概念
- 指标 metric
- TS 时间序列数据,存储的数据库叫TSDB,叫时序数据库。
- zabbix(后端数据库关系型) 存在性能瓶颈。
- 趋势数据: 聚合分析的结果。
- 告警升级,阶梯型通知
- 数据节点: target
- 数据抓取:scrape
告警系统组成部分
- 监控采集: 被监控端要有监控代理,应用程序自带仪表盘。黑盒监控(探针),网络设备:(snmp)
- 数据存储:SQL、Nosql(kv\document、tsdb、)
- 展示: Grafana
- 报警: 通知作用 。
- 媒介
- 媒介
- 邮件、短信、钉钉、微信、Slack
- 推荐:《监控的艺术》书籍
- 邮件、短信、钉钉、微信、Slack
常见的监控软件:
- Cacti 、Nagios
- Zabbix
- Openfalcon/夜莺
- CAT(美团点评)
- Prometheus
功能实现:
- 创始人在google, 去了soundcloud
- 2012年研发,2015年发布,现在是2.0阶段
- 现在已经捐给了CNCF
- Metric ,多维度的标签组合都代表一个独立的时间序列。
- 内建了时序数据的聚合、切割、切片
- 支持双精度浮点型数据
缺点:
- 日志的存储不支持。
二 prometheus的工作原理
-
prometheus是一款时序数据库,一块设计目标监控的关键组件。数据默认是一个月,如果时间更长需要对接其他时序数据库。
- 整合生态系统内的其他组件,例如pushgateway\Altermanager和Grafana等,可构成一个完整的IT监控系统。
- 监控采集模式
-
Pull : 监控系统去监控端拿数据, prometheus仅支持该模式。
- Push: 监控端推送数据到监控系统
-
Pull : 监控系统去监控端拿数据, prometheus仅支持该模式。
- 监控的组件:
-
PushGateway: 受限于网络等因素,可能导致prometheus无法拉取到客户端的数据,此时需要pushgateway,客户端将数据上传到pushgateway上,prometheus去pushgateway上拉数据。
- 内部的查询引擎: PromQL语句 ,内置了web的接口。可以基于web界面调用promQL接口。
-
Prometheus ,内置的存储数据默认一个月,如果需要存储时间较长需对接其他时序数据库。
-
AlerManager: 告警组件, 本身不支持告警,需要结合promQL的结果结合表达式进行告警。
- 展示界面可以借助Grafana。
-
node_exporter ,查询指标之后暴露给prometheus。一对一的指标抓取代理器。
- 自动发现: 可以自动服务的发现并纳入到系统
-
PushGateway: 受限于网络等因素,可能导致prometheus无法拉取到客户端的数据,此时需要pushgateway,客户端将数据上传到pushgateway上,prometheus去pushgateway上拉数据。
架构图: