用于在 Kubernetes 中监控 Orleans 的 Prometheus 配置

Prometheus configuration for monitoring Orleans in Kubernetes

我正在尝试让 Prometheus 与我的奥尔良筒仓一起运行...

  1. 我使用 this 消费者在端口 8082 上公开 Prometheus 的 Orleans 指标。使用本地 Prometheus 实例并使用同一存储库中的 grafana.json 我发现它有效.

      _ = builder.AddPrometheusTelemetryConsumerWithSelfServer(port: 8082);
    
  2. 按照 this guide 在 Kubernetes 上安装普罗米修斯到我的筒仓部署的不同命名空间。

  3. 按照说明,我将 prometheus 标签添加到我的 orleans 部署 yaml 中:

      spec:
       replicas: 2
       selector:
         matchLabels:
         app: mysilo
       template:
         metadata:
           annotations:
             prometheus.io/scrape: 'true'
             prometheus.io/port: '8082'
           labels:
             app: mysilo
    

我在 prometheus yml 中的工作:

    - job_name: "orleans"
      kubernetes_sd_configs:
        - role: pod
          namespaces:
            names:
              - orleans
          selectors:
            - role: "pod"
              label: "app=mysilo"

根据同一指南,如果“pod 元数据使用 prometheus.io/scrape 和 prometheus.io/port 注释进行注释,所有 pods 指标都会被发现。”。我假设我不需要任何额外的安装。

有了这一切,端口转发了我的 prometheus pod,我可以看到 prometheus 正在 http://localhost:9090/metrics 中工作,但我的 grafana 仪表板中没有显示任何指标(同样,我可以让它工作在只有一个筒仓的本地机器中)。

在探索 grafana 时,我发现它似乎找不到实例:

    sum(rate(process_cpu_seconds_total{job=~"orleans", instance=~"()"}[3m])) * 100

目的是监控我的 orleans 孤岛正在使用的资源(不是 pods 指标本身,而是 orleans 指标),但我遗漏了一些东西:(

感谢@BozoJoe 的评论,我可以对此进行调试。

问题是它试图抓取端口 30000 和 1111,而不是我之前所说的 8082。感谢位于 localhost:9090/targets

的 Prometheus 仪表板,我可以看到这一点

所以我查看了 prometheus 配置文件并确保开始废弃正确的端口(我还对搜索名称添加了一些限制):

  - job_name: "orleans"
    kubernetes_sd_configs:
     - role: pod
       namespaces:
         names:
          - orleans
       selectors:
          - role: "pod"
            label: "app=mysilo"
    relabel_configs:
    - source_labels: [__meta_kubernetes_pod_container_name]
      action: keep   
      regex: 'my-silo-name*'
    - source_labels: [__address__]
      action: replace
      regex: ([^:]+):.*
      replacement: :8081
      target_label: __address__