使用Prometheus和Grafana监视基于jetty的java应用程序

时间:2017-11-06 10:49:12

标签: java jmx grafana prometheus

我使用nohup和jetty在服务器中部署了一个java应用程序(在8091中)。

我需要使用prometheus和Grafana来监控该应用程序。

所以下载了JMX导出器。

需要获取该applciation监控的所有可用指标(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 &
  

它报告为:[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应用程序?

1 个答案:

答案 0 :(得分:4)

删除config.yaml中的两个Hostport and JMXURL对我有用..

 [root@localhost software]# cat config.yaml
    ---
    startDelaySeconds: 0
    ssl: false
    lowercaseOutputName: true
    lowercaseOutputLabelNames: true
    rules:
    - pattern: ".*"
相关问题