我们正在OpenShift中部署我们的微服务。我们希望使用Prometheus监控JMX指标,以便稍后使用Grafana显示它们。
我们找到了JMX_EXPORTER,据我所知,它可用于收集Prometheus特定格式的JMX指标。
现在,我们想以某种方式将代理绑定到我们的代码,以便我们可以从OpenShift内部访问指标。
我们可以以某种方式在Glassfish中部署代理/加载代理,类似于Jolokia的工作原理吗?这里的文档https://github.com/prometheus/jmx_exporter并没有给我们带来太大的影响。
答案 0 :(得分:0)
有点晚了,但是我只是花了几个小时试图完成相同的工作,而且那里的信息很少,所以这就是我最后得到的,以防万一它对某人有所帮助。
这假设您的openshift中已经运行了prometeus代理(默认值为3.9)
首先通过添加
激活您的jmx_exporter-javaagent:/path/to/jmx_prometheus_javaagent-0.3.1.jar=8080:/path/to/jmx.yaml
您的应用调用 -jmx.yaml可以包含几项内容,但最重要的是提取规则-它们与您的应用程序高度相关。例如我的看起来像这样:
startDelaySeconds: 0
ssl: false
rules:
- pattern : "kafka.consumer<type=(.+), client-id=(.+)-([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[34][0-9a-fA-F]{3}-[89ab][0-9a-fA-F]{3}-[0-9a-fA-F]{12})-StreamThread-([0-9]+)(.*), topic=(.+)><>(.+): "
name: dataplatform_$1_$7
labels:
clientId: "$2"
fullClientId: "$2$5"
clientUUID: "$3"
threadNum: "$4"
extraClientName: "$5"
topic: "$6"
第二步是添加适当的注释并公开端口。将以下内容添加到您的部署Yaml中:
template:
metadata:
annotations:
openshift.io/generated-by: OpenShiftWebConsole
prometheus.io/path: /metrics
prometheus.io/port: "8080"
prometheus.io/scrape: "true"
然后暴露容器上的端口:
ports:
- containerPort: 8080
protocol: TCP
您的普罗米修斯现在应该收集指标。如果您在Pod上点击了8080端口,那么您还应该查看指标。
最后一步是将Prometeus数据源添加到您的Grafana中并开始使用您的指标