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