Prometheus监控告警体系

 一. 四种监控方式

  1)  Logging:应用程序,开发中间件,web系统等所输出的一些结构化/非结构化的日志,例如应用程序通过一个滚动的文件输出debug或error信息,并通过日志收集系统存储到Elasticsearch中。这是一种最常见的一种监控方式。

  2)Tracing:比如分布式调用链CAT(Central Application Tracking),就是Tracing。Tracing有开始和结束。

  3)Metrics:Metrics和Logging有点类似,Logging属于离散(不连续的)事件,Logging一半记录的是文本信息。而Metrics记录的是数值,可以聚合,是一段时间内某个度量(计数器或者直方图)的原子或者是元数据,可用于查看某段时间某个参数的指标及其趋势。例如接收的HTTP数量可以被建模为计数器,每次的HTTP请求即是我们的度量元数据,可以进行简单的加法聚合,当持续了一段时间我们又可以建模为直方图。

  4)HelathCheck:用于系统健康检查,用于定期检查某个站点服务器是否存活。这种监控方式也是非常重要,常用于集群中。

    

Prometheus监控告警体系

  Prometheus监控则覆盖HelathCheck和Metrics这两种方式。Prometheus专注于衡量系统,随着时间的推移可能会越来越多地追踪,从而成为Tracing的指标。

这四种监控方式比较如下图:

Prometheus监控告警体系

            图片来源:https://peter.bourgon.org/go-for-industrial-programming/

  

   几种监控方式适用场景

    

Prometheus监控告警体系

    Metrics监控分层 

        

Prometheus监控告警体系

    Metrics通用监控架构模式

      

Prometheus监控告警体系

二. MDD理念

   MDD(Metrics Driven Development)度量驱动开发。

二. 什么是Prometheus?

  Prometheus(普罗米修斯)是由德国SoundCloud公司开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。

   Prometheus目前在开源社区相当活跃。Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。

   Prometheus官网地址:https://prometheus.io/

  Prometheus官网文档地址:https://prometheus.io/docs/introduction/overview/

  Prometheus github地址:https://github.com/prometheus/prometheus

  Prometheus特点:

    1)多维度(标签),拉模式(Pull-based)。

    2)白盒(可以深入应用内部来抓取指标数据),黑盒(把应用当成黑盒来监控)监控都支持,。DevOps友好。

三. Prometheus架构

  

Prometheus监控告警体系

  Prometheus基本工作原理

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

Prometheus与其他监控系统对比

  Prometheus对比Zabbix

    1.  Zabbix使用的是 C 和 PHP, Prometheus 使用 Golang, 整体而言 Prometheus 运行速度更快一点。

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

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