簡體   English   中英

Kube.netes 中 Prometheus 的動態目標?

[英]Dynamic targets for Prometheus in Kubernetes?

在我的 docker 設置中,我維護了targets.json文件,該文件動態更新了要探測的目標。 該文件一開始是空的,但在某些用例中附加了目標。

樣本目標.json

[
  {
    "targets": [
      "x.x.x.x"
    ],
    "labels": {
      "app": "testApp1"
    }
  },
  {
    "targets": [
      "x.x.x.x"
    ],
    "labels": {
      "app": "testApp2"
    }
  }
]

然后將此文件作為file_sd_configs提供給普羅米修斯配置。 一切正常,由於應用程序中的某些事件,目標被添加到 targets.json 文件中,並且普羅米修斯開始監視黑盒以進行健康檢查。

scrape_configs:
  - job_name: 'test-run'
    metrics_path: /probe
    params:
      module: [icmp]
    file_sd_configs:
      - files:
        - targets.json
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: blackbox:9115

在我的 node.js 應用程序中,我能夠將 append 數據傳輸到 targets.json 文件,現在我試圖在 minikube 上的 Kube.netes 中復制它。 我嘗試如下添加 ConfigMap 並且它有效,但我不想在配置中填充目標,而是維護一個 json 文件。

這可以使用持久卷來完成嗎? 運行 Prometheus 的 pod 將始終讀取目標文件,而運行 pod 的應用程序將寫入目標文件。

kind: ConfigMap
apiVersion: v1
metadata:
  name: prometheus-cm
data:
  targets.json: |-
    [
      {
        "targets": [
          "x.x.x.x"
        ],
        "labels": {
          "app": "testApp1"
        }
      }
    ]

簡單來說,Kube.netes 中推薦的策略是一個 pod 可以讀取 json 文件,另一個 pod 可以寫入該文件。

為了實現您的目標,您需要使用PVC

PersistentVolume (PV)是集群中已由管理員配置的一塊存儲。 它是集群中的資源,就像節點是集群資源一樣。 PV 是類似於 Volumes 的卷插件,但其生命周期獨立於使用 PV 的任何單個 pod。 這個 API object 捕獲存儲實現的細節,無論是 NFS、iSCSI 還是特定於雲提供商的存儲系統。

PersistentVolumeClaim (PVC)是用戶的存儲請求。 它類似於豆莢。 Pod消耗節點資源,PVC消耗PV資源。 Pod 可以請求特定級別的資源(CPU 和內存)。 聲明可以請求特定的大小和訪問模式(例如,可以掛載一次讀/寫或多次只讀)。

json 文件需要持久化,如果一個 pod 必須寫入它而另一個 pod 必須讀取它。 有一個官方指南分步驟描述該概念:

  • 創建PersistentVolume

  • 創建PersistentVolumeClaim

  • 創建一個使用PersistentVolumeClaim作為卷的Pod

我還建議閱讀此內容:作為補充,在您的 Kube.netes 集群上創建 ReadWriteMany PersistentVolumeClaims

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM