其他的example有:
httpserversampleconfig.yml:
tomcat 安装步骤:
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar
<?xml version='1.0' encoding='utf-8'?>
<!-- 把此端口改成 -1 ,避免启动多个 tomcat 实例时端口冲突,但是停止实例只能通过 kill -9 "tomcat pid" 命令,无法使用 shutdown.sh -->
<Server port="-1" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<!-- 把此端口改成 25013,不同的实例监听在不同的端口,避免启动多个 tomcat 实例时端口冲突 -->
<Connector port="25013" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- 没有用到 AJP 连接方式,所以注释掉此行,不监听 8009 端口 -->
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/oss" docBase="tx-web-oss" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
---
lowercaseOutputLabelNames: true
lowercaseOutputName: true
rules:
- pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+):'
name: tomcat_$3_total
labels:
port: "$2"
protocol: "$1"
help: Tomcat global $3
type: COUNTER
- pattern: 'Catalina<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: 'Catalina<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: 'Catalina<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
JAVA_OPTS="-javaagent:/work1/soft/monitor/jmx_prometheus_javaagent-0.3.1.jar=30013:/work1/soft/monitor/tomcat.yml"
具体如下:
##JDK PATH
export JAVA_HOME=/usr/java/jdk1.8.0_73
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
JAVA_OPTS="-Dfile.encoding=utf-8 -javaagent:/work1/soft/monitor/jmx_prometheus_javaagent-0.3.1.jar=30013:/work1/soft/monitor/tomcat.yml"
# OS specific support. $var _must_ be set to either true or false.
cygwin=false
darwin=false
os400=false
hpux=false
case "`uname`" in
- job_name: 'jmx_tomcat'
static_configs:
- targets: ['192.168.1.137:30013']
labels:
instance: '137-info'
- targets: ['192.168.1.138:30013']
labels:
instance: '138-admin'
- targets: ['192.168.1.139:30014']
labels:
instance: '139-user'
注意,这里没有需要添加工程名的要求,但是下面的springboot方式需要注意工程名
2. http://192.168.1.208:6060 可以看到metrics的信息。
3.prometheus.yml中添加如下信息:
- job_name: 'jmx'
static_configs:
- targets: ['192.168.1.208:6060']
labels:
instance: '192.168.1.208'
4.grafana界面上添加dashboard 使用的是https://grafana.com/grafana/dashboards/3457
8563也很不错,可以直接添加job name:https://grafana.com/grafana/dashboards/8563。
参考:https://blog.csdn.net/weixin_34413103/article/details/88716872
如果使用的不是tomcat容器,可以使用上文提到的httpserversampleconfig.yml或者自定义一个yml,如果使用的是tomcat容器,可以使用上面的tomcat.yml。在idea的vm options中添加:
-javaagent:./lib/jmx_prometheus_javaagent-0.12.0.jar=192.168.1.208:6060:./config/tomcat.yml
jar包和yml文件需要提前放入指定目录中。
直接cmd启动:
java -javaagent:./jmx_prometheus_javaagent-0.12.0.jar=192.168.1.208:6060:./tomcat.yml -jar Market.jar
springboot2的Micrometer:Micrometer 是一款监控指标的度量类库,可以让你在没有供应商锁定的情况下对 JVM 的应用程序代码进行调整。Spring Boot 2.0 增强了对 Micrometer 的集成,不再提供自己的指标 API。依靠 micrometer.io 来满足所有应用程序监视需求。
Micrometer 包括尺寸指标的支持,当与尺寸监测系统配对时,尺寸指标可以有效访问特定的指定度量标准,并且可以在其尺寸范围内向下钻取。
指标可以输出到各种系统和开箱即用的 Spring Boot 2.0,为 Atlas、Datadog、Ganglia、Graphite、Influx、JMX、New Relic、Prometheus、SignalFx、StatsD 和 Wavefront 提供支持,另外还可以使用简单的内存中度量标准。
集成后提供 JVM 指标(包括 CPU、内存、线程和 GC)、Logback、Tomcat、Spring MVC & 提供 RestTemplate。
springboot2监控指标见:https://www.cnblogs.com/JiangWJ/p/11117475.html
配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>io.github.mweirauch</groupId>
<artifactId>micrometer-jvm-extras</artifactId>
<version>0.1.2</version>
</dependency>
application.properties:
#prometheus配置
management.metrics.export.prometheus.enabled=true
management.metrics.export.prometheus.step=1ms
management.metrics.export.prometheus.descriptions=true
management.endpoint.prometheus.enabled=true
management.endpoints.web.exposure.include=health,info,env,prometheus,metrics,httptrace,threaddump,heapdump,springmetrics
直接
prometheus.yml:
- job_name: 'springboot2'
metrics_path: '/api/actuator/prometheus'
static_configs:
- targets: ['192.168.1.208:8080']
labels:
instance: '192.168.1.208-boot'
效果:
通过界面上add panel可以添加指标,可添加的指标如下:
地址:https://github.com/java-rookie/client_java 参考:https://www.jianshu.com/p/60c6d6cb4c49