原文
Probe模板
# Prometheus Operator CRD 版本
apiVersion: monitoring.coreos.com/v1
# 对应 K8S 的资源类型,这里面 Probe
kind: Probe
# 对应 K8S 的 Metadata,这里只用关心 name,如果没有指定 jobLabel,对应抓取指标 label 中 job 的值为 Service 的名称。
metadata:
name: redis-exporter # 填写一个唯一名称
namespace: cm-prometheus # namespace固定,不需要修改
spec:
# 默认情况下分配给抓取指标的作业名称,可不填
[ jobLabel: string ]
# 用于探测目标的探针规范。prober.URL为必填参数。如果目标为空,则无法探测。
[ prober: ProberSpec ]
[ url: string ]
# 用于抓取的HTTP方案。默认为http。
[ schema: string ]
# 收集指标的路径。默认为/probe
[ path: string ]
[ proxyUrl: string ]
# 在blackbox-exporter中配置的如何探测目标:blaockbox的配置参考:https://github.com/prometheus/blackbox_exporter/blob/master/example.yml
[ module: string ]
# Targets定义了一组要探测的静态或动态发现的目标。
[ targets ]
# 定义用于探测的静态目标集
[ staticConfig: ProbeTargetStaticConfig ]
# 要探测的主机列表
[ static: []string ]
# 给抓取的指标增加新的标签
[ labels: map[string]string ]
# 在抓取的时候替换标签 https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
[ relabelingConfigs: []RelabelConfig ]
# 定义了用于探测的Ingress对象集,operator为每一个ingress关联的host/path配置了一个target
[ ingress: ProbeTargetIngress ]
[selector: Kubernetes meta/v1.LabelSelector]
[namespaceSelector: NamespaceSelector]
# 在抓取的时候替换标签 https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
[ relabelingConfigs: []RelabelConfig ]
# 使用配置的探针探测目标的时间间隔。如果没有指定,则使用Prometheus的全局抓取间隔
[ interval: Duration ]
# 从Prometheus导出器获取度量的超时。如果未指定,则使用Prometheus全局抓取间隔
[ scrapeTimeout: Duration ]
# 在抓取端点时使用的TLS配置 https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.ProbeTLSConfig
[ tlsConfig: ProbeTLSConfig]
# 秘密挂载到抓取目标的读取持有者令牌。秘密需要在与探测相同的名称空间中,并且可以由Prometheus Operator访问。https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#secretkeyselector-v1-core
[ bearerTokenSecret: Kubernetes core/v1.SecretKeySelector ]
# 基本认证:https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.BasicAuth
[ basicAuth: BasicAuth ]
[ oauth2: OAuth2 ]
# 在摄入时替换标签:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
[ metricRelabelings: []RelabelConfig ]
# 使用的授权方法以及证书
[ authorization: SafeAuthorization ]
# SampleLimit定义了将被接受的每次抓取样本数量的限制,sample就是一行metrics
[ sampleLimit: uint64 ]
# TargetLimit定义了将被接受的抓取目标数量的限制
[ targetLimit: uint64 ]
# labelLimit定义了一行metrics的limit数
[ labelLimit: uint64 ]
# labelNameLengthLimit定义了每个label的长度限制
[ labelNameLengthLimit: uint64 ]
# labelValueLengthLimit定义了每个label的value长度限制
[ labelValueLengthLimit: uint64 ]
示例
apiVersion: monitoring.coreos.com/v1
kind: Probe
metadata:
labels:
app.kubernetes.io/component: exporter
app.kubernetes.io/name: blackbox-exporter
app.kubernetes.io/part-of: kube-prometheus
app.kubernetes.io/version: 0.23.0
name: prometheus-demo
namespace: monitoring
spec:
module: http_2xx
prober:
url: blackbox-exporter.monitoring.svc:19115
targets:
staticConfig:
labels:
environment: prometheus.io
static:
- https://demo.do.prometheus.io/
- https://prometheus.demo.do.prometheus.io/-/healthy
- https://alertmanager.demo.do.prometheus.io/-/healthy
- https://node.demo.do.prometheus.io/
- https://grafana.demo.do.prometheus.io/api/health
blackboxExporter-configuration.yaml
apiVersion: v1
data:
config.yml: |-
"modules":
"http_2xx":
"http":
"preferred_ip_protocol": "ip4"
"prober": "http"
"http_post_2xx":
"http":
"method": "POST"
"preferred_ip_protocol": "ip4"
"prober": "http"
"irc_banner":
"prober": "tcp"
"tcp":
"preferred_ip_protocol": "ip4"
"query_response":
- "send": "NICK prober"
- "send": "USER prober prober prober :prober"
- "expect": "PING :([^ ]+)"
"send": "PONG ${1}"
- "expect": "^:[^ ]+ 001"
"pop3s_banner":
"prober": "tcp"
"tcp":
"preferred_ip_protocol": "ip4"
"query_response":
- "expect": "^+OK"
"tls": true
"tls_config":
"insecure_skip_verify": false
"ssh_banner":
"prober": "tcp"
"tcp":
"preferred_ip_protocol": "ip4"
"query_response":
- "expect": "^SSH-2.0-"
"tcp_connect":
"prober": "tcp"
"tcp":
"preferred_ip_protocol": "ip4"
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/component: exporter
app.kubernetes.io/name: blackbox-exporter
app.kubernetes.io/part-of: kube-prometheus
app.kubernetes.io/version: 0.23.0
name: blackbox-exporter-configuration
namespace: monitoring