前言
本文基于设计开发一个应用功能监控项目的需求,其能在不入侵系统的情况下正常监控应用功能。调研之后选择了prometheus+grafana+springboot2的方案。本文基于此简单讲述一下这几个系统之间的配置、交互和使用。并从prometheus的功能,配置,使用,以及与dashboard和springboot/springcloud的集成等方面简单分析,对于各单独系统的安装不在本文讲述范围之内。
一、prometheus
1.简介
Prometheus,是一个开源的系统监控和告警的工具包,其采用Pull方式采集时间序列的度量数据(也支持push方式),通过Http协议传输。它的工作方式是被监控的服务需要公开一个Prometheus端点,这端点是一个HTTP接口,该接口公开了度量的列表和当前的值,然后Prometheus应用从此接口定时拉取数据,一般可以存放在时序数据库中,然后通过可视化的Dashboard(e.g.Grafana)进行数据展示。
2.支持的prometheus metrics
Counter,Gauge,Histogram,Summary,不进行细节介绍了,后面会专门写prometheus的文章。需要注意的是counter只能增不能减,适用于服务请求量,用户访问数等统计,但是如果需要统计有增有减的指标需要用Gauge。
3.支持的exporter很多,可以方便的监控很多应用,同时也可以自定义开发非官方提供的exporter。
二、grafana
1.简介
grafana,是一个开源的dashboard展示工具,可以支持很多主流数据源,包括时序性的和非时序性的。其提供的展示配置以及可扩展性能满足绝大部分时间序列数据展示需求,是一个比较优秀的工具。
2.支持的数据源
prometheus,inflexdb,elasticsearch,mysql,postgreSQL,openTSDB等,更多数据源
三、springboot2与prometheus的集成
1.springboot集成配置
springboot2.x与prometheus的集成与springboot1.x区别比较大。prometheus官方提供的Java client不能支持2.x的处理。很多其中调用的class都找不到了。所以在2.x中 simpleclient_spring_boot就不起作用了,启动会报错。幸好开源工具包io.micrometer提供了2.x中对prometheus采集端点的支持。所以在依赖中添加以下配置(使用gradle作为编译工具)&#x