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全部暴露出来,
上一篇: JS通过位运算实现权限加解密
下一篇: C++的基本语言学习 , 简单易懂
推荐阅读
-
Java 高级应用编程 第一章 工具类
-
java-使用war将spring-boot和angular 7应用程序部署到tomcat 8.5中
-
性能监测工具优化Java应用程序(转TT SOA)
-
Effective Java 在工作中的应用总结
-
应用alter index monitoring usage;语句监控索引使用与否
-
PHP、Java、C#实现URI参数签名算法,确保应用与REST服务器之间的
-
《深入理解java虚拟机》学习笔记--第四章:虚拟机性能监控与故障处理工具 虚拟机java
-
《深入理解java虚拟机》学习笔记--第四章:虚拟机性能监控与故障处理工具 虚拟机java
-
java-从 android 应用程序响应时间发送 php 查询到服务器
-
微信开放平台基于网站应用授权登录源码(java)