[英]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.