提问人:Rick 提问时间:5/26/2023 更新时间:5/27/2023 访问量:475
如何使用 Google Managed Prometheus 配置 Blackbox-exporter?
How to Configure Blackbox-exporter with Google Managed Prometheus?
问:
我要迁移到 Google Managed Prometheus。我一直在使用 Helm 部署的 Prometheus 版本来监控我的 kubernetes 集群。helm 部署的 Prometheus 具有多种选择器,包括 Pod Monitor、Service Monitor 和 Probe Monitor。Google Managed Prometheus 只有 Pod 监视器 (PodMonitoring)。我正在将 Google 托管的 Prometheus 与托管集合结合使用。
我想继续使用我的黑匣子导出器探测器来获取正常运行时间指标。我在现有的 Prometheus 上配置了“kind: Probe”。但是,由于 Google Managed Promtheus 仅使用 PodMonitoring,我不确定 blackbox-exporter 是否兼容。
我喜欢 blackbox-exporter,因为我可以将其配置为检查我的所有入口主机,而无需手动为每个主机创建一个。我经常将带有新端点的新入口添加到我的集群中,因此这种自动化非常棒。
有没有人使用 Google 管理的 Prometheus 配置了黑盒导出器?
我尝试过端口转发实际的 blackbox-exporter pod 以查看它公开了哪些指标,但这并没有显示我想要的所有指标。
答:
每个只能 (!?) 一个项目,并且 的查询字符串必须根据 来定义。请参阅以下示例。endpoints
PodMonitoring
/probe?...
params
此限制似乎与CRD相矛盾:
- Google 的变体
PodMonitoring
- Prometheus Operator
PodMonitor
要探测多个 Ingress,您可以有一个 Blackbox 导出器,但每个 Ingress 都需要一个,例如:Deployment
PodMonitoring
podmonitorings.yaml
:
apiVersion: v1
kind: List
metadata: {}
items:
- kind: PodMonitoring
apiVersion: monitoring.googleapis.com/v1
metadata:
name: google-com
spec:
selector:
matchLabels:
app: blackbox
type: exporter
endpoints:
- interval: 30s
path: /probe
params:
target:
- google.com
module:
- http_2xx
port: 9115
targetLabels:
metadata:
- pod
- container
- kind: PodMonitoring
apiVersion: monitoring.googleapis.com/v1
metadata:
name: stackoverflow-com
spec:
selector:
matchLabels:
app: blackbox
type: exporter
endpoints:
- interval: 30s
path: /probe
params:
target:
- stackoverflow.com
module:
- http_2xx
port: 9115
targetLabels:
metadata:
- pod
- container
- kind: PodMonitoring
apiVersion: monitoring.googleapis.com/v1
metadata:
name: prometheus-com
spec:
selector:
matchLabels:
app: blackbox
type: exporter
endpoints:
- interval: 30s
path: /probe
params:
target:
- prometheus.io
module:
- http_2xx
port: 9115
targetLabels:
metadata:
- pod
- container
blackbox-exporter.yaml
config 定义:
ConfigMap
定义 Blackbox Exporter 配置- (使用记录的)
http_2xx
- 我添加了一个(gRPC 探测器)
foo
- (使用记录的)
Deployment
的 Blackbox Exporter 使用ConfigMap
blackbox-exporter.yaml
:
apiVersion: v1
kind: List
metadata: {}
items:
- kind: ConfigMap
apiVersion: v1
metadata:
name: blackbox-exporter
data:
blackbox.yml: |+
modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
valid_status_codes: [] # Defaults to 2xx
method: GET
follow_redirects: true
fail_if_ssl: false
fail_if_not_ssl: false
tls_config:
insecure_skip_verify: false
preferred_ip_protocol: "ip4" # defaults to "ip6"
ip_protocol_fallback: false # no fallback to "ip6"
foo:
prober: grpc
grpc:
service: ""
preferred_ip_protocol: ip4
tls: true
tls_config:
insecure_skip_verify: false
- kind: Deployment
apiVersion: apps/v1
metadata:
name: blackbox-exporter
spec:
selector:
matchLabels:
app: blackbox
type: exporter
template:
metadata:
labels:
app: blackbox
type: exporter
spec:
containers:
- name: blackbox-exporter
image: docker.io/prom/blackbox-exporter:v0.24.0
args:
- --config.file=/config/blackbox.yml
ports:
- name: http
containerPort: 9115
volumeMounts:
- name: vol
mountPath: /config
volumes:
- name: vol
configMap:
name: blackbox-exporter
NAMESPACE="test"
kubectl create namespace ${NAMESPACE}
# Deploy Blackbox exporter
kubectl apply \
--filename=${PWD}/blackbox-exporter.yaml \
--namespace=${NAMESPACE}
# Apply PodMonitorings
kubectl apply \
--filename=${PWD}/podmonitorings.yaml \
--namespace=${NAMESPACE}
然后你需要在命名空间中。有几种方法可以做到这一点。不要从此文件中删除任何内容,但请确保该列表包含一些新预期的指标名称:PATCH
operatorconfig/config
gmp-public
matchOneOf
KUBE_EDITOR=nano kubectl edit operatorconfig/config \
--namespace=gmp-public
您需要添加要包含的指标:
apiVersion: monitoring.googleapis.com/v1
collection:
filter:
matchOneOf:
- '{__name__=~"blackbox_exporter_.+"}'
- '{__name__=~"probe_.+"}'
kubeletScraping:
interval: 30s
kind: OperatorConfig
metadata:
name: config
抓取 (~1m) 后,你将看到 Metrics Diagnostics 下列出的指标:blackbox_exporter_*
probe_*
并且能够在 Google 的指标导出器和 Google 管理的 Prometheus 前端中查询它们:
https://console.cloud.google.com/monitoring/metrics-diagnostics;duration=PT1H?project={project}
您可以端口转发到 Blackbox Exporter 以执行探测:
kubectl port-forward deployment/blackbox-exporter \
--namespace=${NAMESPACE} \
9115:9115
然后(本地):
# Blackbox Exporter's metrics
curl --get http://localhost:9115/metrics
# Blackbox Exporter's HTTP probe for e.g. Google
curl --get http://localhost:9115/probe?target=google.com&module=http_2xx
# Blackbox Exporter's gRPC probe for Google's Cloud Profiler
curl --get http://localhost:9115/probe?target=cloudprofiler.googleapis.com:443&module=foo
评论
PodMonitor
PodMonitors
探测
查询字符串定义(指标)PodMonitor
spec.endpoints
path