1. 初探--prometheus调研

  Prometheus 是由前 Google 工程师从 2012 年开始在 Soundcloud 以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了证明这一点,Prometheus 2016 5 月加入 CNCF 基金会,成为继 Kubernetes 之后的第二个 CNCF 托管项目。

1.1 架构图

1. 初探--prometheus调研

  Prometheus Server 直接从监控目标中或者间接通过推送网关来拉取监控指标,它在本地存储所有抓取到的样本数据,并对此数据执行一系列规则,以汇总和记录现有数据的新时间序列或生成告警。可以通过 Grafana 或者其他工具来实现监控数据的可视化。

  Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VMDockerKubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如VarnishHaproxyNginxMySQLLinux系统信息(包括磁盘、内存、CPU、网络等等)

  在Prometheus中,每一个暴露监控样本数据的HTTP服务称为一个实例。例如在当前主机上运行的node exporter可以被称为一个实例(Instance)

1.2 组件 1.2.1 prometheus server

  负责数据的收集和存储,并且对外提供PromQL实现监控数据的查询以及聚合分析。

1.2.2 Exporters

  广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target。Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus ServerPrometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。

  一般来说可以将Exporter分为2类:

  直接采集:这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisorKubernetesEtcdGokit等,都直接内置了用于向Prometheus暴露监控数据的端点。

  间接采集:间接采集,原有监控目标并不直接支持Prometheus,因此我们需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序。例如: Mysql ExporterJMX ExporterConsul Exporter等。

  从间接采集的Exporter的来源上来讲,主要分为两类:

社区提供

  Prometheus社区提供了丰富的Exporter实现,涵盖了从基础设施,中间件以及网络等各个方面的监控功能。这些Exporter可以实现大部分通用的监控需求。下表列举一些社区中常用的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, ScaleIO Exporter等

 

HTTP服务

 

Apache Exporter, HAProxy Exporter, Nginx Exporter等

 

API服务

 

AWS ECS Exporter, Docker Cloud Exporter, Docker Hub Exporter, GitHub Exporter等

 

日志

 

Fluentd Exporter, Grok Exporter等

 

监控系统

 

Collectd Exporter, Graphite Exporter, InfluxDB Exporter, Nagios Exporter, SNMP Exporter等

 

其它

 

Blockbox Exporter, JIRA Exporter, Jenkins Exporter, Confluence Exporter等

 

 

用户自定义

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydwfz.html