# 为什么选择 Prometheus
在前言中,简单介绍了我们公司选择 Prometheus 的理由,以及使用后给我们带来的好处。
在这里主要和其他监控方案对比,方便大家更好的了解 Prometheus。
## Prometheus vs Zabbix
* Zabbix 使用的是 C 和 PHP, Prometheus 使用 Golang, 整体而言 Prometheus 运行速度更快一点。
* Zabbix 属于传统主机监控,主要用于物理主机,交换机,网络等监控,Prometheus 不仅适用主机监控,还适用于 Cloud, SaaS, Openstack,Container 监控。
* Zabbix 在传统主机监控方面,有更丰富的插件。
* Zabbix 可以在 WebGui 中配置很多事情,但是 Prometheus 需要手动修改文件配置。
## Prometheus vs Graphite
* [Graphite](http://graphite.readthedocs.io/en/latest/overview.html) 功能较少,它专注于两件事,存储时序数据,
可视化数据,其他功能需要安装相关插件,而 Prometheus 属于一站式,提供告警和趋势分析的常见功能,它提供更强的数据存储和查询能力。
* 在水平扩展方案以及数据存储周期上,Graphite 做的更好。
## Prometheus vs InfluxDB
* [InfluxDB](https://www.influxdata.com/) 是一个开源的时序数据库,主要用于存储数据,如果想搭建监控告警系统,
需要依赖其他系统。
* InfluxDB 在存储水平扩展以及高可用方面做的更好, 毕竟核心是数据库。
## Prometheus vs OpenTSDB
* [OpenTSDB](http://opentsdb.net/) 是一个分布式时序数据库,它依赖 Hadoop 和 HBase,能存储更长久数据,
如果你系统已经运行了 Hadoop 和 HBase, 它是个不错的选择。
* 如果想搭建监控告警系统,OpenTSDB 需要依赖其他系统。
## Prometheus vs Nagios
* [Nagios](https://www.nagios.org/) 数据不支持自定义 Labels, 不支持查询,告警也不支持去噪,分组, 没有数据存储,如果想查询历史状态,需要安装插件。
* Nagios 是上世纪 90 年代的监控系统,比较适合小集群或静态系统的监控,显然 Nagios 太古老了,很多特性都没有,Prometheus 要优秀很多。
## Prometheus vs Sensu
* [Sensu](https://sensuapp.org/) 广义上讲是 Nagios 的升级版本,它解决了很多 Nagios 的问题,如果你对 Nagios 很熟悉,使用 Sensu 是个不错的选择。
* Sensu 依赖 RabbitMQ 和 Redis,数据存储上扩展性更好。
## 总结
* Prometheus 属于一站式监控告警平台,依赖少,功能齐全。
* Prometheus 支持对云的或容器的监控,其他系统主要对主机监控。
* Prometheus 数据查询语句表现力更强大,内置更强大的统计函数。
* Prometheus 在数据存储扩展性以及持久性上没有 InfluxDB,OpenTSDB,Sensu 好。
- 前言
- 修订记录
- 如何贡献
- Prometheus 简介
- Prometheus 是什么?
- 为什么选择 Prometheus?
- Prometheus 安装
- 二进制包安装
- Docker 安装
- 基础概念
- 数据模型
- Metric types
- 作业与实例
- PromQL
- PromQL 基本使用
- 与 SQL 对比
- 数据可视化
- Web Console
- Grafana
- Prometheus 配置
- 全局配置
- 告警配置
- 规则配置
- 数据拉取配置
- 远程可写存储
- 远程可读存储
- 服务发现
- 配置样例
- Exporter
- 文本格式
- Golang Sample Exporter
- Python Sample Exporter
- Node Exporter 安装使用
- Node Exporter 常用查询
- 其他 Exporter 介绍
- Pushgateway
- Pushgateway 是什么?
- 如何使用 Pushgateway?
- 数据存储
- Memory Store
- Local Store
- Remote Store
- Rule
- 如何配置
- Rule 触发逻辑
- Aleretmanager
- Aleretmanager 是什么?
- 如何实现告警分组和去噪
- 通过 Email 接收告警
- 通过 OneAlert 管理告警
- 通过 Webhooks 接收告警
- 其他告警接收方案
- 使用 Prometheus 实现主机运行状态监控的完整演示
- Target 配置
- Rule 配置
- Alertmanager 配置
- 演示功能
- Prometheus Tool
- Promu 介绍和使用
- Client SDK
- Prometheus 性能调优
- 通过 Metrics 查看 Prometheus 运行状态
- 通过日志分析 Prometheus 运行状态
- 通过调整启动参数优化性能
- Prometheus 与 JVM 监控
- JVM Exporter 安装
- JVM 数据查询
- Prometheus 与容器监控
- Docker 监控
- Rocket 监控
- Prometheus 与容器编排
- Kubernetes
- Docker Swarm
- Prometheus 与 DevOps
- 如何从 0 开发一个 exporter
- 使用 Webhooks 开发一个 alert receiver
- 产品化
- 高可用方案探讨
- 集群方案
- 主从方案
- v2.0 功能洞见
- 新功能
- 新存储架构
- 常见问题收录
- 如何热加载新配置?
- 为什么重启 Prometheus 过后,数据无法查询?
- 如何删除 Pushgateway 的数据?
- 为什么内存使用这么高?
- 为什么有数据丢失?
- Prometheus 如何通过认证后拉取数据?
