1、概述
什么是普罗米修斯?
Prometheus是一个开源系统监控和警报工具包,受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年5月继Kubernetes之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合。
2、特点
普罗米修斯的主要特点是:
支持多维数据模型由指标名称和键值对标识的时间序列数据
内置时间序列库TSDB(Time Serices Database)
支持PromQL(Promethues Query Language),对数据的查询和分析、图形展示和监控告警。
不依赖分布式存储;单个服务器节点是自治的
支持HTTP 的拉取(pull)方式收集时间序列数据
通过中间网关Pushgateway推送时间序列
通过服务发现或静态配置2种方式发现目标
支持多种可视化和仪表盘,如:grafana
3、核心组件
Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
client libraries,用于检测应用程序代码的客户端库。
push gateway ,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
exporters 收集监控样本数据,并以标准格式向 Prometheus 提供。例如:收集服务器系统数据的 node_exporter, 收集 MySQL 监控样本数据的是 MySQL exporter 等等。
用于告警通知管理的 alertmanager 。

4、基础架构
从这个架构图,也可以看出 Prometheus 的主要模块包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。
它大致使用逻辑是这样:
Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据(Targets是Prometheus采集Agent需要抓取的采集目标)
当新拉取的数据大于配置内存缓存区的时候,Prometheus 会将数据持久化到磁盘(如果使用 remote storage 将持久化到云端)。
Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alerts 推送到配置的 Alertmanager。
Alertmanager 收到警告的时候,可以根据配置(163,钉钉等),聚合,去重,降噪,最后发送警告。
可以使用 API, Prometheus Console 或者 Grafana 查询和聚合数据。
5、Prometheus与Zabbix的对比
6、总结
监控系统没有绝对的谁好谁不好,最重要的是适合自己的公司团队,能够合理利用最小的成本解决问题。prometheus,zabbix 都只是工具,监控思想才是最重要的。
实在不知道怎么选?参考如下:
物理机、硬件设备的监控推荐使用Zabbix
而docker容器,Kubernetes监控推荐用Prometheus
云服务器厂商自带有监控系统,有的监控不全面,也可以搭配zabbix和Prometheus来一起使用
评论区