为什么说Prometheus是开源网络监控工具的后起之秀?优势有哪些?
更多相关内容
网络监控是网络管理的重要组成部分,定期网络监控可以预防故障、优化性能、规划容量,确保网络的可用性、安全性等。相比较普通的监控工具,开源网络监控工具拥有可定制性、灵活性、可扩展性等优势,受到国内外众多企业的追捧,有哪些好用的开源网络监控工具,该如何选择呢?
一、盘点好用的开源网络监控工具
1、开源网络监控工具盘点
工具 | 描述 | 主要特点 |
---|---|---|
Cacti | 一种图形解决方案,可与 RRDTool 一起收集 LAN 中的性能数据。 | –简单的网络管理协议(SNMP)支持 –绘制交通数据图表 –易于设置的模板 –用于数据存储的MySQL数据库 |
Nagios Core | 一种流行的监控工具,具有可扩展性和易用性的界面。 | – 自动发现设备 – 复杂的性能图 – 通过附加组件进行定制 – PHP Web 界面 (Nagios V-Shell) – RESTful API |
Icinga 2 | 一个灵活的工具,建立在Nagios Core之上,提供可定制的仪表板和出色的可视化功能。 | – 用于自定义配置的RESTful API – 实时性能数据监控 – 对 Graphite 和 InfluxDB的原生支持 – 通过电子邮件或文本发出警报和通知 |
Zabbix | 涵盖网络、服务器、云、应用、业务监控的综合监控工具。 | – 网络带宽使用情况跟踪 – 网络运行状况和配置更改监控 – SNMP、IPMI 和 IPv6 支持 – 用于轻松发现设备的模板 – 警报和通知 – 支持广泛的平台 |
Prometheus | 一种用于监控时间序列数据的流行工具,拥有大量社区追随者。 | – 时间序列数据监控 – 用于事件通知的警报管理器 – 与各种数据源(Docker、StatsD、JMX)集成 – 用于可视化的 Grafana 集成 |
2、对比展现Prometheus优势
作为发行时间最晚(Prometheus发行于2016年)的开源网络监控工具,Prometheus有哪些优势呢?以传统的Zabbix为例,一起来对比吧!
Zabbix | Prometheus | |
---|---|---|
监控规模 | 集群规模上限为10000个节点 | 支持更大的集群规模 |
监控对象 | 物理机环境 | 云环境 |
存储 | 关系型数据库 | 时间序列的数据库 |
服务发现 | Push | Pull/Push |
配置 | 配置复杂 | 一个核心Server组件,配置简单 |
社区活跃度 | 国内比较活跃,社区活跃度相对较低 | 开源社区非常活跃CNCF支持 |
二、Prometheus 是做什么的?
Prometheus 是一款免费软件,可帮助监控和发送有关计算机系统的警报,2012年已经产生并一直存在,并在公司和组织中变得非常流行。许多开发人员和用户积极为它做出贡献。它不属于任何特定公司,由共同工作的社区管理。2016 年,Prometheus 成为云原生计算基金会的一部分。
核心组件:
- Prometheus Server
- Exporter
- Alertmanager
- Pushgateway
- Service discovery
Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。
1、工作流程
- Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server;
- 在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理;
- Prometheus Server与Push网络需求无法直接满足时,就可以利用PushGateway来进行中转;
- Service discovery:监控系统而言就意味着没有了一个固定的监控目标,所有的监控对象(基础设施、应用、服务)都在动态的变化。
2、Exporter
定义:广义上来讲,任何向Prometheus提供监控样本数据的程序都可以被称为一个Exporter,Exporter的一个实例称为Target。
若要从Target (host or service)收集监视数据,首先必须在要收集的Target上安装收集组件,称为Exporter,他们的官网(http://prometheus.io)上有很多Exporter:
– Consul exporter (official)
– Memcached exporter (official)
– MySQL server exporter (official)
– Node/system metrics exporter (official)
– HAProxy exporter (official)
– RabbitMQ exporter
– Grok exporter
– InfluxDB exporter (official)
可根据所监控的对象选取特定的Exporter:
范围 | Exporter |
---|---|
数据库 | MySQL exporter, Redis exporter, MongoDB exporter, MSSQL exporter等 |
硬件 | Apcupsd exporter, IoT Edison exporter, IPMI exporter, Node exporter等 |
消息队列 | Beanstalkd exporter, Kafka exporter, NSQ exporter, RabbitMQ exporter等 |
存储 | Ceph exporter, Gluster exporter, HDFS exporter, RabbitMQ exporter等 |
HTTP服务 | Apache exporter, HAProxy exporter, ScaleIO exporter等 |
API服务 | AWS ECS exporter, Docker Cloud exporter, Docker Hub exporter, GitHub exporter等 |
日志 | Fluentd exporter, Grok exporter等 |
监控系统 | Collected exporter, Graphite exporter, InfluxDB exporter, Nagios exporter, SNMP exporter等 |
其他 | Blockbox exporter, JIRA exporter, Jenkins exporter, Confluence exporter等 |
工作方式:
– 注册指标:exporter需要定义要导出的指标及其相关信息
– 数据收集:exporter定期从系统或应用程序中收集指标数据
– 指标转换:exporter将收集到的指标数据转换为Prometheus的指标类型
– 暴露指标:exporter提供一个HTTP接口,通过该接口将转换后的指标暴露给Prometheus
3、告警产生以及推送
- Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息
- Alertmanager根据配置推送给对接的平台,支持对接多种平台告警推送
流程:
- 告警路由:会根据事先定义的路由配置对告警进行路由。路由配置规定了如何处理不同的告警,包括将告警发送到不同的接收者(如电子邮件、PagerDuty、Slack等)、进行静默处理或者进行其他操作。
- 告警抑制:Alertmanager会对接收到的告警进行去重处理,以避免重复通知。
- 告警分组:Alertmanager会将具有相同标签或属性的告警进行分组,以便进行更有效的通知和处理。这样可以避免发送大量重复的告警通知,提供更清晰的告警视图。
三、示例:将Prometheus与AsterNOS结合
1、为什么使用Prometheus监控AsterNOS
2、效果展示
以星融元CX-M园区网络为例,使用Prometheus + SNMP + Grafana组合方案进行监控,能够采集系统运行数据,实现网络数据可视化以及网络架构拓扑展示。
在AsterNOS设备上部署Node exporter,以HTTP接口的形式暴露AsterNOS的系统运行数据,Prometheus将主动Pull数据。Prometheus获取到数据后一方面用于评估告警规则——若产生告警将由Alertmanager推送给所对接的服务;另一方面落地到Prometheus服务器本地存储中。Grafana可以利用Prometheus所存储的监控数据来进行可视化展示。
以Node exporter所采集的数据作为来源展示