部署Blackbox Exporter
1.blackbox-exporter.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: blackbox-exporter
name: blackbox-exporter
spec:
ports:
- name: blackbox
port: 9115
protocol: TCP
selector:
app: blackbox-exporter
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: blackbox-exporter
name: blackbox-exporter
spec:
replicas: 1
selector:
matchLabels:
app: blackbox-exporter
template:
metadata:
labels:
app: blackbox-exporter
spec:
containers:
- image: prom/blackbox-exporter
imagePullPolicy: IfNotPresent
name: blackbox-exporter
2.创建blackbox-exporter相关资源
kubectl apply -f blackbox-exporter.yaml
为blackbox-exporter配置ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTP
name: blackbox
spec:
ingressClassName: nginx
rules:
- host: blackbox.example.com
http:
paths:
- backend:
service:
name: blackbox-exporter
port:
number: 9115
path: /
pathType: Prefix
status:
loadBalancer: {}
对要监控的svc配置annotations
apiVersion: v1
kind: "Service"
metadata:
name: prometheus
labels:
name: prometheus
annotations:
prometheus_io_probe: "true"
....
配置prometheus job
...
- job_name: 'kubernetes-services'
metrics_path: /probe
params:
module: [http_2xx]
kubernetes_sd_configs:
- role: service
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_probe]
action: keep
regex: true
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: blackbox.example.com
- source_labels: [__param_target]
target_label: instance
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_service_name]
target_label: kubernetes_name
...
配置讲解
将通过服务发现获取到的Service实例地址__address__
转换为获取监控数据的请求参数
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: blackbox.example.com
- source_labels: [__param_target]
target_label: instance
监控样本添加额外的标签信息
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_service_name]
target_label: kubernetes_name
ref: