01_Prometheus概述

Prometheus概述

一、是什么

Prometheus是一个开源系统监控和警报工具包,受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcoud以开源软件的形式进行研发,并目于2015年早期对外发布早期版本,2016年5月继Kubernetes之后成为第二个正式加入CNCE基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本能更好地与容器平台、云平台配合。

主要特点

支持多维数据模型由指标名称和键值对标识的时间序列数据

内置时间序列库TSDB(Time Serices Database)

支持PromQL(Promethues Query Language)对数据的查询和分析、图形展示和监控告警。

不依赖分布式存储;单个服务器节点是自治的

支持HTTP 的拉取(pull)方式收集时间序列数据

通过中间网关Pushgateway推送时间序列

通过服务发现或静态配置2种方式发现目标

支持多种可视化和仪表盘,如:grafana

二、组成

2.1 核心组件

Prometheus Server,主要用于抓取数据和存储时序数据,另外还提供査询和 Alert Rule 配置管理

client libraries,用于检测应用程序代码的客户端库。

pushgateway,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。

exporters 收集监控样本数据,并以标准格式向 Prometheus 提供。例如:收集服务器系统数据的 node exporter,收集 MSOL 监控样本数据的是 MySQL exporter 等等

用于告警通知管理的 alertmanager 。

2.2 基础架构

从这个架构图,也可以看出 Prometheus的主要模块包含, Server,Exporters,Pushgateway,PromQL,Alertmanager, WebUl等
它大致使用逻辑是这样:

  • Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据(Targets是Prometheus采集Agent需要抓取的采
    集目标)
  • 当新拉取的数据大于配置内存缓存区的时候,Prometheus 会将数据持久化到磁盘(如果使用remote storage 将持久化到云端)
  • Prometheus 可以配置 rules,然后定时査询数据,当条件触发的时候,会将 alerts 推送到配置的 Alertmanager。
  • Aertmanager 收到警告的时候,可以根据配置(163,钉钉等),聚合,去重,降噪,最后发送警告。
  • 可以使用 API Prometheus Console 或者 Grafana 查询和聚合数据

三、其他的监控软件

在监控系统中,常见的开源的监控系统有Zabbix、Prometheus、Nagios、Cacti、Graphite、Ganglia等,大部分企业都在基于这些开源监控系统的基础上进行开发。虽然每种监控系统都有各自的特点和功能,面向的用户对象与侧重点也有所不同,但是都吸纳了采集数据、告警、展示等基本功能。

  • Cacti

最初发布于2001年, Cacti 是一款开源的基于Web的网络监控和专为数据记录而设计的图形化工具。它可以用于实时显示网络数据,如CPU负载或带宽利用率。

Cacti是RRDtool的前端应用程序,RRDtool是一种用于存储实时变化数据的开源数据库工具,其使用SNMP作为其默认收集算法,但如果你喜欢本地Perl的PHP脚本,那么你也可以使用它们。

其最新版本0.8.8h于2016年5月发布,主要功能包括无限图形项目、图形自动填充支持、图形数据处理、自定义数据采集脚本、内置SNMP支持、图形模板、数据源模板、主机模板和基于用户的管理

  • Zabbix

Zabbix 作为企业级的网络监控工具,通过从服务器,虚拟机和网络设备收集的数据提供实时监控,自动发现,映射和可扩展等功能。

Zabbix的企业级监控软件为用户提供内置的Java应用服务器监控,硬件监控和CPU,内存,网络,磁盘空间性能监控。

该企业级网络监控工具能够每分钟进行 3,000,000 次检查,具有更高的安全性和数据中心监控功能

  • Prometheus

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,由 SoundCloud 公司开发。

Prometheus 基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供 HTTP 接口就可以接入监控系统,不需要任何 SDK 或者其他的集成过程。这样做非常适合虚拟化环境比如 VM 或者 Docker

Prometheus 应该是为数不多的适合 Docker、Mesos、Kubernetes 环境的监控系统之一

  • Grafana

Grafana:是一款采用go语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具。目前已经支持绝大部分常用的时序数据库。

与zabbix的对比
ZabbixPrometheus
后端用C开发,界面用PHP开发,定制化难度很高。后端用golang开发,前端是Grafana,JSON编辑即可解决定制化难度较低
6.0支持单个Zabbix实例监控超过10万个业务服务支持更大的集群规模,速度也更快
更适合监控物理机环境(物理主机,交换机,网络等监控)更适合云环境的监控,对OpenStack,Kubernetes有更好的集成
监控数据存储在关系型数据库内,如 MySQL很难从现有数据中扩展维度监控数据存储在基于时间序列的数据库内,便于对已有数据进行新的聚合。十万级监控数据,Prometheus数据查询速率比Zabbix更快
安装简单,zabbix-server 一个软件包中包括了所有的服务端功能安装相对复杂,监控、告警和界面都分属于不同的组件
图形化界面比较成熟,界面上基本上能完成全部的配置操作界面相对较弱,很多配置需要修改配置文件
发展时间更长,对于很多监控场景,都有现成的解决方案2015 年后开始快速发展,发展时间短,但现在也非常的成熟
总结

监控系统没有绝对的谁好谁不好,最重要的是适合自己的公司团队,能够合理利用最小的成本解决问题。prometheus,zabbix 都只是工具,监控思想才是最重要的。

  • 物理机、硬件设备的监控推荐使用Zabbix
  • docker容器,Kubernetes监控推荐用Prometheus
  • 云服务器厂商自带有监控系统,有的监控不全面,也可以搭配zabbix和Prometheus来一起使用。
    监控推荐使用Zabbix
  • docker容器,Kubernetes监控推荐用Prometheus
  • 云服务器厂商自带有监控系统,有的监控不全面,也可以搭配zabbix和Prometheus来一起使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写代码的大狼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值