当前位置:   article > 正文

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

prometheus agent

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

集成

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

  1. <dependency>
  2. <groupId>io.micrometer</groupId>
  3. <artifactId>micrometer-registry-prometheus</artifactId>
  4. </dependency>

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

  1. <dependency>
  2. <groupId>io.micrometer</groupId>
  3. <artifactId>micrometer-registry-jmx</artifactId>
  4. </dependency>

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

监控配置

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

  1. ---
  2. ssl: false
  3. lowercaseOutputName: false
  4. lowercaseOutputLabelNames: false
  5. whitelistObjectNames: ["java.lang:type=OperatingSystem", "com.alibaba.druid:*", "metrics:name=httpServerRequests*,type=timers"]
  6. rules:
  7. - pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'
  8. name: os_$1
  9. type: GAUGE
  10. attrNameSnakeCase: true
  11. - pattern: 'com.alibaba.druid<type=DruidDataSource, id=(\d+)><>(\w+)'
  12. name: datasource_connection_pool_$1_$2
  13. type: GAUGE
  14. attrNameSnakeCase: true
  15. - pattern: 'metrics<name=httpServerRequests.application.(.*).exception.(.*).method.(.*).outcome.(.*).status.(.*).uri.(.*), type=timers><>(.*):(.*)'
  16. name: http_server_requests_$7
  17. type: GAUGE
  18. labels:
  19. application: $1
  20. exception: $2
  21. method: $3
  22. outcome: $4
  23. status: $5
  24. url: $6
  25. attrNameSnakeCase: true

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

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

示例

原始的指标name:

metrics<name=httpServerRequests.application.c2f-boot-demo.exception.None.method.GET.outcome.SUCCESS.status.200.uri./user/page, type=timers><>50thPercentile

pattern

metrics<name=httpServerRequests.application.(.*).exception.(.*).method.(.*).outcome.(.*).status.(.*).uri.(.*), type=timers><>(.*):(.*)

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

http指标

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/336925
推荐阅读
相关标签
  

闽ICP备14008679号