天天看点

Prometheus监控运维实战一: Prometheus介绍

promehteus是一款近年来非常火热的容器监控系统,它使用go语言开发,设计思路来源于google的borgmom(一个监控容器平台的系统)。

由前谷歌sre  matt t.proudd在加入soundcloud之后,与另一位工程师julius volz合伙推出,并将其开源发布。2016年,由google发起的原生云基金会(cloud native computing foundation)将其纳入其下,成为该基金会继kubernetes后,第二大开源项目。

promehteus天然具有对容器的适配性,可非常方便的满足容器的监控需求,也可用来监控传统资源。近年来随着kubernetes容器平台的火爆,prometheus的热度也不断上升,大有超越老牌监控系统zabbix成为no.1的趋势,目前已在众多公司得到广泛的使用。

 多维度数据模型

 灵活的查询语言

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

 通过基于http的pull方式采集时序数据

 可以通过中间网关进行数据推送

 通过服务发现或者静态配置来发现目标服务对象

 支持多种多样的图表和界面展示,比如grafana 等

 prmoetheus  server: 服务端,用于处理和存储监控数据

 exporter: 监控客户端,用于收集各类监控数据,不同的监控需求由不同的exporter处理,如node-exporter、mysql-exporter、blackbox-exporter等。

 pushgateway:在不支持pull 拉取监控数据的场景中,可通过部署pushgateway的方式,由监控源主动上报到promtehus。

 alertmanager: 独立组件,用于处理告警信息。

 web-ui:pometheus自带的web界面,可进行监控数据的展示与查询。

 其他支持工具:promethues项目本身提供的组件及丰富的开源工具和套件。 

官方架构图:

Prometheus监控运维实战一: Prometheus介绍

  prometheus可通过多种方式来发现要监控的资源列表,包括:

  用户提供的静态资源列表

  基于文件的发现  

  自动发现。例如,使用dns srv记录来生成列表或通过查询consul等配置中心获取信息.

 prometheus根据配置的job定时去拉取各个监控节点的数据,任何组件只要提供对应的http接口就可以接入监控,不需要任何sdk或其他集成过程,非常适合虚拟化环境的监控,如kubernetes、docker等。

 默认的拉取方式为pull,也可以使用pushgateway提供的push 方式获取各个监控节点的数据,并将获取到的数据存入tsdb(一种时序型数据库)。

prometheus提供一套内置的promql语言,其自带的web-ui查询数据支持按条件表达式的方式,查询相关的监控数据。

prometheus自带的web-ui可支持图表展示 ,但功能及界面较简陋,常规方案是接入到grafana进行展示管理。

promehteus server没有内置告警工具,程序基于配置的rules发送告警信息到alertmanager,由alertmanager对告警信息进行统一处理。alertmanger支持对告警信息进行聚合和收敛,并通过邮箱、短信、微信、钉钉等多种告警方式发送给相关的接收人。