Prometheus的优劣势与Zabbix的对比

Posted 玉兔捣药!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus的优劣势与Zabbix的对比相关的知识,希望对你有一定的参考价值。

Prometheus简要介绍:

Prometheus是一款警报工具包,它是一个独立的开源项目,并且独立于任何公司进行维护。其完整的监控解决方案对传统监控系统对测试和告警模型进行了彻底对颠覆,形成了基于中央化的规则计算、统一分析和告警的新模型。Kubernetes之后Prometheus是第二个加入Cloud Native Computing Foundation(云原生云计算基金会)托管的项目。

 

Prometheus的优点:

1、强大的数据模型:Prometheus中有一个内置的时间序列数据库(TSDB),采集到的所有监控数据都会以一种指标的形式存储在里面。除了储存了基本的名称外,还有描述每一个样本的标签。指标名称和一组标签是判定每一条时间序列的唯一标识,且它按照时间的前后顺序去保存一系列的样本值。关于维度的标签有两种来源方式:监控对象的状态或对于环境的定义。基于这些Labels我们可以方便地对监控数据进行聚合,过滤, 裁剪。

 

2、监控服务的内部运行状态用户可以通过在应用程序中添加对Prometheus的支持轻松的获取到服务和应用内部的真实运行状态这点完全得益于Prometheus丰富的Client库

 

3、管理方便Prometheus唯一需要的就是一个本地磁盘因为它的核心部分只有一个单独的二进制文件没有像数据库缓存等一系列的第三方依赖这一特性使它不会潜在级联故障的风险基于Pull模型的架构方式Prometheus可以在本地电脑测试环境等任何地方搭建监控系统在遇到复杂的情况下它的Service Discovery能力可以动态管理监控目标

 

4、强大的查询语言PromQLPromQL不仅可以轻松回答诸如预测四小时之后磁盘空间占用大致会是什么情况这一类的问题还能实现对监控数据对查询与聚合

 

5、高效率运作大量对监控任务必然就会对应产生大量的数据面对数以百万的监控指标Prometheus可以以每秒处理数十万的数据点进行这就体现出它的高效处理机制

 

6、强可扩展性Prometheus Server可以在数据中心和团队中独立运行也可以通过Prometheus对于联邦集群的支持使多个独立的实例产生一个逻辑集群功能分区sharding+联邦集群federation可以应用在单实例Prometheus Server处理的任务量过大的时候

 

7、集成简易使用Prometheus可以快速搭建监控服务,并且可以非常方便地在应用程序中进行集成。目前支持: JavaJMXPythonGoRuby.NetNode.js等等语言的客户端SDK,基于这些SDK可以快速让应用程序纳入到 Prometheus的监控当中,或者开发自己的监控数据收集程序。同时这些客户端收集的监控数据,不仅仅支持 Prometheus,还能支持Graphite这些其他的监控工具。 同时Prometheus还支持与其他的监控系统进行集成:GraphiteStatsdCollectedScollectormuiniNagios等。 Prometheus社区还提供了大量第三方实现的监控数据采集支持:JMXCloudWatchEC2MySQLPostgresSQLHaskellBashSNMPConsulHaproxyMesosBindCouchDBDjangoMemcachedRabbitMQRedisRethinkDBRsyslog等等。

 

8、可视化通过Prometheus Server中自带的Prometheus UI不仅可以直接对数据进行查询还可以以图形化对形式展示数据且它提供的API还可以实现自己的监控可视化UI

 

 

Prometheus的缺点:

 

1Prometheus 是基于 Metric 的监控,不适用于日志(Logs)、事件(Event)、调用链(Tracing)。

 

2Prometheus 默认是 Pull 模型,合理规划你的网络,尽量不要转发。

 

3、对于集群化和水平扩展,官方和社区都没有银弹,需要合理选择 FederateCortexThanos 等方案。

 

4、监控系统一般情况下可用性大于一致性,容忍部分副本数据丢失,保证查询请求成功。

 

5Prometheus 不一定保证数据准确,这里的不准确一是指 ratehistogram_quantile 等函数会做统计和推断,产生一些反直觉的结果

 

 

PrometheusZabbix的对比

 

 

 

对比项

Prometheus

Zabbix

对云环境的支持

更适合云环境的监控OpenStack,Kubern etes有更好的集成

更适合监控物理机环境

发展

2015年后开始发展迅速但是相对于Zabbix来说发展时间还是较短成熟度不及对方

发展时间长对多种监控场景都有成熟的解决方案

集群规模

支持更大的集群规模速度也快

集群规模上限节点为10000

二次开发

提供了GoJava/ScalaPythonRuby等丰富的sdk二次开发很便捷

采用常用的api学习成本较低

管理

二进制文件启动

LNMP+编译

数据存储方式

Prometheus TSDB 监控数据以时间为维度统计情况较多时序数据库更适用于监控数据的存储按时间索引性能更高

MySQL较常用学习成本低

配置

配置文件更好的支持自动化配置

图形化学习成本低

client

丰富的client库为各种中间件应用提供专业的exporter监控项更全面

zabbix_agent自定义脚本支持自定义监控项对监控设计者对格局要求较高

 

 

以上是关于Prometheus的优劣势与Zabbix的对比的主要内容,如果未能解决你的问题,请参考以下文章

强!Prometheus与Zabbix的对比选型!

004.redis 的 RDB 和 AOF 两种持久化机制的优劣势对比

k8s实战之部署Prometheus+Grafana可视化监控告警平台

WordPress建站的优劣势都有哪些?

四大存储方式技术解析其优劣势

prometheus和zabbix的对比