使用 Prometheus 和 Grafana 监控基于 Jetty 的 Java 应用程序
Monitor the Jetty-based Java application using Prometheus and Grafana
我已经使用 nohup
和 Jetty 在服务器(8091 中)部署了一个 Java 应用程序。
我需要使用 Prometheus 和 Grafana 监控该应用程序。
所以下载了 JMX 导出器。
需要获取该应用程序监控的所有可用指标(JMX 导出器)。
下载了以下 jar 文件:
https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.1.0/jmx_prometheus_javaagent-0.1.0.jar
Config.yaml
[root@localhost software]# cat config.yaml
---
startDelaySeconds: 0
hostPort: 127.0.0.1:7101
jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:7101/jmxrmi
ssl: false
lowercaseOutputName: true
lowercaseOutputLabelNames: true
rules:
- pattern: ".*"
我平时部署使用的部署命令:(在这个目录下,有Jetty)
nohup -Dorg.eclipse.jetty.server.Request.maxFormContentSize=10000000 -Xms256m -Xmx256m -Djava.io.tmpdir=temp_dir -jar jetty-runner-9.0.7.v20131107.jar --log yyyy_mm_dd-java-application-1-request.log --out yyyy_mm_dd-java-application-1-output.log --port 8091 --path /java-application-1 hotfix.war >> java-application-1.log 2>&1 &
它工作正常..
当我尝试使用 JMX 导出器监视应用程序时,我使用了以下命令:
nohup java -javaagent:./jmx_prometheus_javaagent-0.1.0.jar=7101:config.yaml -Dorg.eclipse.jetty.server.Request.maxFormContentSize=10000000 -Xms256m -Xmx256m -Djava.io.tmpdir=epoch_temp_dir -jar jetty-runner-9.0.7.v20131107.jar --log yyyy_mm_dd-java-application-1-request.log --out yyyy_mm_dd-java-application-1-output.log --port 8091 --path /java-application-1 hotfix.war >> java-application-1.log 2>&1 &
it reports as : [1]+ Aborted (core dumped) nohup
java -javaagent:./jmx_prometheus_javaagent-0.1.0.jar=7101:config.yaml
-Dorg.eclipse.jetty.server.Request.maxFormContentSize=10000000 -Xms256m -Xmx256m -Djava.io.tmpdir=epoch_temp_dir -jar jetty-runner-9.0.7.v20131107.jar --log
yyyy_mm_dd-java-application-1-request.log --out
yyyy_mm_dd-java-application-1-output.log --port 8091 --path
/java-application-1 hotfix.war >> java-application-1.log 2>&1
在日志文件中:
它报告为:
nohup: ignoring input
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Caused by: java.lang.IllegalArgumentException: At most one of hostPort and jmxUrl must be provided
at io.prometheus.jmx.shaded.io.prometheus.jmx.JmxCollector.loadConfig(JmxCollector.java:120)
at io.prometheus.jmx.shaded.io.prometheus.jmx.JmxCollector.<init>(JmxCollector.java:74)
at io.prometheus.jmx.shaded.io.prometheus.jmx.JavaAgent.premain(JavaAgent.java:36)
... 6 more
FATAL ERROR in native method: processing of -javaagent failed
我不确定 config.yaml
和我用来监视部署的 Java 应用程序的命令是否正确。
如何使用 Prometheus 和 Grafana 监控这个基于 Jetty 的 java 应用程序?
您在 config.yaml
中同时指定了 hostPort
和 jmxUrl
键。但最多 其中一个 必须提供。删除其中一个。
删除 config.yaml 中的两个 Hostport and JMXURL
对我有用..
[root@localhost software]# cat config.yaml
---
startDelaySeconds: 0
ssl: false
lowercaseOutputName: true
lowercaseOutputLabelNames: true
rules:
- pattern: ".*"
我已经使用 nohup
和 Jetty 在服务器(8091 中)部署了一个 Java 应用程序。
我需要使用 Prometheus 和 Grafana 监控该应用程序。
所以下载了 JMX 导出器。
需要获取该应用程序监控的所有可用指标(JMX 导出器)。
下载了以下 jar 文件:
https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.1.0/jmx_prometheus_javaagent-0.1.0.jar
Config.yaml
[root@localhost software]# cat config.yaml
---
startDelaySeconds: 0
hostPort: 127.0.0.1:7101
jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:7101/jmxrmi
ssl: false
lowercaseOutputName: true
lowercaseOutputLabelNames: true
rules:
- pattern: ".*"
我平时部署使用的部署命令:(在这个目录下,有Jetty)
nohup -Dorg.eclipse.jetty.server.Request.maxFormContentSize=10000000 -Xms256m -Xmx256m -Djava.io.tmpdir=temp_dir -jar jetty-runner-9.0.7.v20131107.jar --log yyyy_mm_dd-java-application-1-request.log --out yyyy_mm_dd-java-application-1-output.log --port 8091 --path /java-application-1 hotfix.war >> java-application-1.log 2>&1 &
它工作正常..
当我尝试使用 JMX 导出器监视应用程序时,我使用了以下命令:
nohup java -javaagent:./jmx_prometheus_javaagent-0.1.0.jar=7101:config.yaml -Dorg.eclipse.jetty.server.Request.maxFormContentSize=10000000 -Xms256m -Xmx256m -Djava.io.tmpdir=epoch_temp_dir -jar jetty-runner-9.0.7.v20131107.jar --log yyyy_mm_dd-java-application-1-request.log --out yyyy_mm_dd-java-application-1-output.log --port 8091 --path /java-application-1 hotfix.war >> java-application-1.log 2>&1 &
it reports as : [1]+ Aborted (core dumped) nohup java -javaagent:./jmx_prometheus_javaagent-0.1.0.jar=7101:config.yaml -Dorg.eclipse.jetty.server.Request.maxFormContentSize=10000000 -Xms256m -Xmx256m -Djava.io.tmpdir=epoch_temp_dir -jar jetty-runner-9.0.7.v20131107.jar --log yyyy_mm_dd-java-application-1-request.log --out yyyy_mm_dd-java-application-1-output.log --port 8091 --path /java-application-1 hotfix.war >> java-application-1.log 2>&1
在日志文件中: 它报告为:
nohup: ignoring input
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Caused by: java.lang.IllegalArgumentException: At most one of hostPort and jmxUrl must be provided
at io.prometheus.jmx.shaded.io.prometheus.jmx.JmxCollector.loadConfig(JmxCollector.java:120)
at io.prometheus.jmx.shaded.io.prometheus.jmx.JmxCollector.<init>(JmxCollector.java:74)
at io.prometheus.jmx.shaded.io.prometheus.jmx.JavaAgent.premain(JavaAgent.java:36)
... 6 more
FATAL ERROR in native method: processing of -javaagent failed
我不确定 config.yaml
和我用来监视部署的 Java 应用程序的命令是否正确。
如何使用 Prometheus 和 Grafana 监控这个基于 Jetty 的 java 应用程序?
您在 config.yaml
中同时指定了 hostPort
和 jmxUrl
键。但最多 其中一个 必须提供。删除其中一个。
删除 config.yaml 中的两个 Hostport and JMXURL
对我有用..
[root@localhost software]# cat config.yaml
---
startDelaySeconds: 0
ssl: false
lowercaseOutputName: true
lowercaseOutputLabelNames: true
rules:
- pattern: ".*"