Prometheus

发布时间 2023-12-27 09:27:13作者: 木乃伊人

一、简介

       开源监控系统和警报工具包,从2012年开始由Google工程师在Soundcloud以开源软件形式研发,于2015年早期对外发布早期版本。2016年5月继Kubernates之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本,能更好的与容器平台,云平台配合。

 二、特点

  1. 支持多维数据模型由指标名称和键值对标识的时间序列数据。
  2. 内置时间序列库TSDB(Time Serices Database)。
  3. 支持PromQL(Prometheus Query Language)   ,对数据的查询和分析、图形展示和监控告警。  
  4. 不依赖分布式存储;单个服务器节点是自治的。
  5. 支持HTTP的拉取(pull)方式收集时间序列数据。
  6. 通过中间网关Pushgateway推送时间序列。
  7. 通过服务发现与静态配置2种方式发现目标。
  8. 支持多种可视化和仪表盘。如grafana。

三、核心组件

  1. prometheus Server。主要用于抓取数据和存储时序数据,另外还提供查询和Alert Rule 配置管理。   
  2. client libraries。用于检测应用程序代码的客户端库。
  3. push gateway。用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
  4. exporters。收集监控样本数据,并以标准格式向Prometheus提供。例如:收集服务器系统数据的node_exporter,收集MySql监控样本数据的MySql exporter等等。
  5. alertmanager。用于告警通知管理。  

 四、基础架构

      【业务逻辑】

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

五、Prometheus与Zabbix的对比           

        小结:监控系统没有绝对的最好,只有最适合。可以参考以下要点:

    1.  物理机、硬件设配的监控推荐使用Zabbix。
    2. Docker容器,Kunernates监控推荐使用Prometheus。
    3. 云服务器厂商自带监控系统,有的监控系统不全面,也可以Zabbix和Prometheus混合使用。