赞
踩
Prometheus是一个非常流行开源的系统监控和报警系统,常见的使用方式有两种,一种是和micrometer(侵入式)集成,另外一种就是使用jmx-exporter这个agent(非侵入式)。本文主要介绍这两种使用方式的集成以及http接口和druid的监控配置。
micrometer和prometheus的集成引入以下依赖即可
- <dependency>
- <groupId>io.micrometer</groupId>
- <artifactId>micrometer-registry-prometheus</artifactId>
- </dependency>
同时jmx-exporter预留了jmx这个扩展点,只要我们将监控信息注册成mbean那么jmx也能采集到相关信息,micrometer已经做好了这部分工作我们引入以下依赖即可
- <dependency>
- <groupId>io.micrometer</groupId>
- <artifactId>micrometer-registry-jmx</artifactId>
- </dependency>
完成上面两部分工作后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<type=OperatingSystem><>((?!process_cpu_time)\w+):' name: os_$1 type: GAUGE attrNameSnakeCase: true - pattern: 'com.alibaba.druid<type=DruidDataSource, id=(\d+)><>(\w+)' name: datasource_connection_pool_$1_$2 type: GAUGE attrNameSnakeCase: true - pattern: 'metrics<name=httpServerRequests.application.(.*).exception.(.*).method.(.*).outcome.(.*).status.(.*).uri.(.*), type=timers><>(.*):(.*)' 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<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
关键性指标有调用数、最大rt和最小rt,以及rt的50线、75线、95线、98线、99线、999线。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。