jmx_exporter for openshift中的prometheus

时间:2018-06-14 11:45:49

标签: openshift jmx prometheus javaagents

我们正在OpenShift中部署我们的微服务。我们希望使用Prometheus监控JMX指标,以便稍后使用Grafana显示它们。

我们找到了JMX_EXPORTER,据我所知,它可用于收集Prometheus特定格式的JMX指标。

现在,我们想以某种方式将代理绑定到我们的代码,以便我们可以从OpenShift内部访问指标。

我们可以以某种方式在Glassfish中部署代理/加载代理,类似于Jolokia的工作原理吗?这里的文档https://github.com/prometheus/jmx_exporter并没有给我们带来太大的影响。

1 个答案:

答案 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中并开始使用您的指标