公司之前一直使用的是zabbix+grafana的监控方式,随着应用容器化,k8s应用的监控需求增加,于是便研究了Prometheus,在这里将Prometheus和zabbix做了对比。
具体如下:
对比项 | Prometheus | zabbix | Prometheus优势 | zabbix优势 |
---|---|---|---|---|
管理 | 二进制文件启动 | LNMP+编译 | 轻量级server,便于迁移和维护 | – |
配置 | 配置文件 | 图形化 | 更好的支持自动化配置 | 学习成本低 |
client | 丰富的client库 | zabbix_agent自定义脚本 | 为各种中间件、应用提供专业的exporter,监控项更全面 | 支持自定义监控项,对监控设计者的格局要求较高 |
数据存储方式 | Prometheus TSDB | MySQL | 监控数据以时间为维度统计情况较多,时序数据库更适用于监控数据的存储,按时间索引性能更高 | MySQL较常用,学习成本低 |
数据处理 | PromQL | MySQL | PromQL计算函数丰富,统计维度广 | 同上 |
二次开发 | 丰富的sdk | api | 提供了Go、Java/Scala、Python、Ruby等sdk,二次开发更便捷 | api适配较为常用,学习成本低 |
对云环境的支持 | 原生支持容器监控 | 更适合物理机监控 | 自动发现容器,更好的适配k8s | – |
告警方式 | 可按照标签分组,收敛 | 在次数上收敛 | 告警收敛方式更多样化 | – |
监控项值 | 支持数字 | 支持数字字符串 | – | 可做日志监控 |
总的来说,zabbix更适合于物理机/虚拟机的监控,Prometheus更适合容器的监控。,二者各有优点,但是鱼与熊掌不可兼得,只能根据自己的需求做取舍。