Prometheus是继kubernetes第二个从CNCF中毕业的项目,个人也是非常的喜欢这款通过数据指标发现和预测告警的开源监控平台,官方的话就不多说了,根据官网的介绍有以下功能,但是有些简短的概括了你也不一定知道,所以加了一些个人的白话
Prometheus之白话文一段
实现高纬度的数据模型
时间序列数据通过 metric 名和键值对来区分,这里你可以区分多(隔离)环境的监控指标。
所有的 metrics 都可以设置任意的多维标签,可以自定义添加多个,比如这个服务的监控属于哪个团队的。
数据模型更随意,不需要刻意设置为以点分隔的字符串;
可以对数据模型进行聚合,切割和切片操作;
支持双精度浮点类型,标签可以设为全 unicode;看到这可能你还是不知道啥意思,那就等接下来用到的时候就恍然大悟了...
强大的PromQL语句
支持查询语句,可以通过PromSQL进行数值之间的比较
可以通过PromSQL内嵌的函数计算指标的变化,比如平均值,增长率等等...
出色的可视化
个人觉得一点都不咋出色,哈哈,还是结合
Grafana
使用吧,毕竟人家专业啊~
高效的存储
可以根据需求设置指标数据的存储天数,也可以持久化存储,比如通过
remotestorageadapter
使用简单
部署简单
支持动态发现
支持热加载
支持配置文件格式检查
精准的告警
告警指的不是
Prometheus
,而是Alertmanager
可以设置沉默时间,可以对告警进行分组,可以对告警进行匹配从而决定告警邮件发给哪些负责人
支持多种告警媒介,比如常用的
slack
,企业微信
,钉钉
,邮件
还有一些国外常用的,你也可以自己定制;
支持多语言客户端库
对常见的编程语言都是支持的
拥有丰富的exporter生态
完美的支持常见的中间件,数据库,主机等等监控
还有一些有时候会被忽略的监控对象比如:证书有效期,域名有效期等等
比如还有jmx,snmp,vmi等等exporter,这些你可以在github.com搜索
prometheus exporter
看到
上面整那么多的意思就是除了 Zabbix
,Prometheus也是没有什么不能监控的,甚至做的更简单,更人性化,但是这里不会介绍太多Prometheus的指标类型,网上很多,就不想整了, https://yunlzheng.gitbook.io/prometheus-book/introduction
写的算是很走心了,大部分还是要自己实践中琢磨到底如何做。
Prometheus之少不了的部署篇
ServerName | ServerVersion | Functions | 配置文件 |
---|---|---|---|
Promethues | v2.12.0 | 数据处理 | prometheus.yaml |
influxdb | v1.7 | 监控指标的持久化存储 | influxdb.conf |
remotestorageadapter | latest | 数据远程转存适配器 | |
alertmanager | v0.19.0 | 告警管理 | config.yml |
pushgateway | v0.10.0 | 实现push模式推送指标 | |
grafana | v6.0.0 | 数据的可视化展示平台 | grafana.ini |
cadvisor | v0.32.0 | 分析正在运行容器的指标和性能数据 | |
Docker | v18.03.0-ce | 容器运行时 | |
docker-compose | v1.11.2 | 容器编排工具 |
但是你可以直接拿来使用和测试,使用 docker-compose
管理的配置清单,对于还没有k8s环境的人来说,也算是福音了。docker-compose-monitor-platform.yml
:
version: '3.4'