Prometheus 监控 Java 应用


Prometheus 监控 Java 应用有两种方式:一种是使用官方提供的jar包,然后嵌入到应用中。这种方式一般都是新项目。我认为也是最合适的一种。不过这种情况一般是理想而已。而除了这种方式,第二种是prometheus的jmx_exporter。 
我们就是用的第二种。使用jmx_exporter的方式来监控我们的java应用程序。我们的java应用基本上是使用tomcat作为服务器的。这种情况下有两种方式,一种是基于springboot的jar包启动方式,一种是直接下载tomcat软件之后,将应用打成war包部署的方式。

jmx_exporter的使用非常简单,但是如果不了解就会非常懵逼。jmx_exporter实际也是基于java的jmx通过暴露Mbean来做为代理,使用http的方式来给Prometheus进行指标采集。

1.jar 包启动应用
如果是jar包启动的方式,那么github上面就已经有示例了。可以参照:java -javaagent:./jmx_prometheus_javaagent-0.3.0.jar=9151:config.yaml -jar yourJar.jar,这种方式启动。这种属于在应用启动的时候就给它加上代理。 
这种方式是没有加认证的,如果需要加认证,嗯,有点麻烦,实验过一次,后来发现,还是算了。可能在虚拟机上直接运行程序还好,但是打成docker镜像就真的就有点多余了。 
这种方式是监控的内嵌tomcat的启动的应用,在访问http://ip:9151/metrics,/metrics可有可无,这个时候可以看到很多tomcat指标,当然如果你的config.yaml没有改动,那么可能并不会看到,因为官网的config.yaml中rules下的pattern:Catalina*,这里是不适用与内嵌tomcat的。内嵌的tomcat需要修改为Tomcat。
--------------------- 
 

---
startDelaySeconds: 0
#hostPort: 192.168.226.128:8999
#jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:8999/jmxrmi
ssl: false
wercaseOutputName: true
lowercaseOutputLabelNames: true
rules:
- pattern: 'Tomcat<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+):'
  name: tomcat_$3_total
  labels:
    port: "$2"
    protocol: "$1"
  help: Tomcat global $3
  type: COUNTER
- pattern: 'Tomcat<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount):'
  name: tomcat_servlet_$3_total
  labels:
    module: "$1"
    servlet: "$2"
  help: Tomcat servlet $3 total
  type: COUNTER
- pattern: 'Tomcat<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount):'
  name: tomcat_threadpool_$3
  labels:
    port: "$2"
    protocol: "$1"
  help: Tomcat threadpool $3
  type: GAUGE
- pattern: 'Tomcat<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions):'
  name: tomcat_session_$3_total
  labels:
    context: "$2"
    host: "$1"
  help: Tomcat session $3 total
  type: COUNTER
- pattern: ".*"

当然,你也看到了我的pattern这里有个:”.*”为啥这样?因为这样可以让所有的jmx metrics全部暴露出来,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值