Prometheus agent jmx-exporter配置http接口和数据库连接池监控

Prometheus是一个非常流行开源的系统监控和报警系统,常见的使用方式有两种,一种是和micrometer(侵入式)集成,另外一种就是使用jmx-exporter这个agent(非侵入式)。本文主要介绍这两种使用方式的集成以及http接口和druid的监控配置。

集成

micrometer和prometheus的集成引入以下依赖即可


  io.micrometer
  micrometer-registry-prometheus

同时jmx-exporter预留了jmx这个扩展点,只要我们将监控信息注册成mbean那么jmx也能采集到相关信息,micrometer已经做好了这部分工作我们引入以下依赖即可


  io.micrometer
  micrometer-registry-jmx

完成上面两部分工作后prometheus和jmx相关的集成就结束了,http接口和druid的指标也会被采集到

监控配置

这里我先提供一份标准配置,着急的小伙伴可以直接拿去实验

---
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false
whitelistObjectNames: ["java.lang:type=OperatingSystem", "com.alibaba.druid:*", "metrics:name=httpServerRequests*,type=timers"]
rules:
 - pattern: 'java.lang<>((?!process_cpu_time)\w+):'
   name: os_$1
   type: GAUGE
   attrNameSnakeCase: true
 - pattern: 'com.alibaba.druid<>(\w+)'
   name: datasource_connection_pool_$1_$2
   type: GAUGE
   attrNameSnakeCase: true
 - pattern: 'metrics<>(.*):(.*)'
   name: http_server_requests_$7
   type: GAUGE
   labels: 
     application: $1
     exception: $2
     method: $3
     outcome: $4
     status: $5
     url: $6
   attrNameSnakeCase: true

上面第一个pattern是系统指标,第二个pattern则是druid的指标信息,第三个pattern是http接口的指标信息,pattern本身其实是一个正则表达式,依赖正则表达式会将原指标拆分成多个块,这个块可以通过$引用从而达到自定义name和label的目的。

attrNameSnakeCase是指将特殊字符都转成下划线,建议使用true。

示例

原始的指标name:

metrics<>50thPercentile

pattern

metrics<>(.*):(.*)

pattern会将name切割成多份,使用这些信息就能自定义name和label

http指标

Prometheus agent jmx-exporter配置http接口和数据库连接池监控_第1张图片

关键性指标有调用数、最大rt和最小rt,以及rt的50线、75线、95线、98线、99线、999线。

你可能感兴趣的:(服务器及其部署,java,运维)