综合技术交流
直播中

ss

7年用户 8762经验值
擅长:电源/新能源 制造/封装 RF/无线
私信 关注
[经验]

prometheus做监控服务的整个流程介绍

最近有个新项目需要搞一套完整的监控告警系统,我们使用了开源监控告警系统Prometheus;其功能强大,可以很方便对其进行扩展,并且可以安装和使用简单;本文首先介绍Prometheus的整个监控流程;然后介绍如何收集监控数据,如何展示监控数据,如何触发告警;最后展示一个业务系统监控的demo。
监控架构Prometheus的整个架构流程可以参考如下图片:

整个流程大致分为收集数据,存储数据,展示监控数据,监控告警;核心组件包括:Exporters,Prometheus Server,AlertManager,PushGateway;
  • Exporters:监控数据采集器,将数据通过Http的方式暴露给Prometheus Server;
  • Prometheus Server:负责对监控数据的获取,存储以及查询;获取的监控数据需要是指定的Metrics 格式,这样才能处理监控数据;对于查询Prometheus提供了PromQL方便对数据进行查询汇总,当然Prometheus本身也提供了Web UI;
  • AlertManager:Prometheus支持通过PromQL来创建告警规则,如果满足规则则创建一条告警,后续的告警流程就交给AlertManager,其提供了多种告警方式包括email,webhook等方式;
  • PushGateway:正常情况下Prometheus Server能够直接与Exporter进行通信,然后pull数据;当网络需求无法满足时就可以使用PushGateway作为中转站了;
收集数据Exporter的主要功能就是收集数据,然后将数据通过http的方式暴露给Prometheus,然后Prometheus通过定期拉取的方式来获取监控数据;
数据的来源多种多样包括:系统级监控数据比如节点的cpu,io等,中间件比如mysql,mq等,进程级监控比如jvm等,业务监控数据等;除了监控的业务数据每个系统可能不一样,除此之外其他的监控数据其实每个系统都是大同小异的;所以在Exporter的来源分成了两类:社区提供的,用户自定义的;
Exporter来源
  • 社区提供
范围常用Exporter
数据库MySQL Exporter, Redis Exporter, MongoDB Exporter等
硬件Node Exporter等
消息队列Kafka Exporter, RabbitMQ Exporter等
HTTP服务Apache Exporter, Nginx Exporter等
存储HDFS Exporter等
API服务Docker Hub Exporter, GitHub Exporter等
其他JIRA Exporter, Jenkins Exporter, Confluence Exporter等
官方提供的第三方Exporter:Exporters
  • 用户自定义
除了以上提供的第三方Exporter,用户也可以自定义Exporter,当然需要基于Prometheus提供的Client Library创建自己的Exporter程序,提供了对多种语言的支持包括:Go、Java/Scala、Python、Ruby等;
Exporter运行方式从Exporter的运行方式上来讲,又可以分为:独立运行和集成到应用中;
  • 独立运行
像mysql,redis,mq这些中间件本身时不支持Prometheus,这时候就可以提供一个独立的Exporter,通过中间件对外提供的监控数据API,来获取监控数据,然后转换成Prometheus可以识别的数据格式;
  • 集成到应用中
一些需要自定义监控指标的系统,可以通过Prometheus提供的Client Library将监控数据在系统内部提供给Prometheus;
数据格式Prometheus通过轮询的方式从Exporter获取监控数据,当然数据需要遵循一定的格式,不然Prometheus也是无法识别的,这个格式就是 Metrics 格式.
{

更多回帖

发帖
×
20
完善资料,
赚取积分