首页 文章

jmx_exporter用于在openshift中的prometheus

提问于
浏览
0

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

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

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

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

1 回答

  • 0

    有点晚了,但是我只花了几个小时试图完成同样的工作并且那里的信息非常少,所以这就是我最终得到的结果,以防万一它能帮到别人 .

    假设您已经在openhift中运行了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
    

    您的prometheus现在应该收集指标 . 如果您点击了pod上的端口8080,您还应该看到指标 .

    最后一步是将Prometeus数据源添加到Grafana并开始享受您的指标

相关问题