简介
blackbox_exporter 是 Prometheus 官方提供的一个 exporter,可以监控 HTTP、 HTTPS,、DNS、 TCP 、ICMP 等目标实例,从而实现对被监控节点进行监控 和数据采集。promethes调用blackbox_exporter去访问目标监控服务器,实现指标的采集
- HTTP/HTPPS:URL/API 可用性检测TCP:端口监听检测
- ICMP:主机存活检测
- DNS:域名解析
地址:https://github.com/prometheus/blackbox_exporter
安装 / 使用
使用kubernetes - deployment部署
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 
 | apiVersion: v1kind: ConfigMap
 metadata:
 name: blackbox-exporter-config
 namespace: cattle-monitoring-system
 data:
 blackbox.yml: |
 modules:
 http_2xx:
 prober: http
 timeout: 5s
 http:
 valid_http_versions: ["HTTP/1.1", "HTTP/2"]
 valid_status_codes: [200]  # Defaults to 2xx
 method: GET
 preferred_ip_protocol: "ip4"
 fail_if_body_not_matches_regexp:
 - "errorCount"
 icmp:
 prober: icmp
 timeout: 5s
 ---
 apiVersion: apps/v1
 kind: Deployment
 metadata:
 name: blackbox-exporter
 namespace: cattle-monitoring-system
 spec:
 replicas: 1
 selector:
 matchLabels:
 app: blackbox-exporter
 template:
 metadata:
 labels:
 app: blackbox-exporter
 spec:
 affinity:
 nodeAffinity:
 requiredDuringSchedulingIgnoredDuringExecution:
 nodeSelectorTerms:
 - matchExpressions:
 - key: kubernetes.io/hostname
 operator: In
 values:
 - k3s-prod-node4
 containers:
 - name: blackbox-exporter
 image: prom/blackbox-exporter:latest
 args:
 - '--config.file=/etc/blackbox_exporter/blackbox.yml'
 ports:
 - containerPort: 9115
 volumeMounts:
 - name: config
 mountPath: /etc/blackbox_exporter
 volumes:
 - name: config
 configMap:
 name: blackbox-exporter-config
 tolerations:
 - effect: NoSchedule
 key: deploy
 operator: Equal
 value: node4
 ---
 apiVersion: v1
 kind: Service
 metadata:
 name: blackbox-exporter
 namespace: cattle-monitoring-system
 labels:
 app: blackbox-exporter
 spec:
 selector:
 app: blackbox-exporter
 ports:
 - name: http
 port: 9115
 targetPort: 9115
 
 | 
配置
blackbox的配置文件中只是制定了监控的类型模块,真正监控具体的数据实在prometheus-server上配置
详细yaml:https://github.com/prometheus/blackbox_exporter/blob/master/example.yml
验证监控数据
| 1
 | curl http://localhost:9115/metrics
 | 
kube-prom operator监听
ServiceMonitor
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 
 | apiVersion: monitoring.coreos.com/v1kind: ServiceMonitor
 metadata:
 name: blackbox-http-monitor
 namespace: cattle-monitoring-system
 labels:
 app: blackbox-http-monitor
 spec:
 selector:
 matchLabels:
 app: blackbox-exporter
 namespaceSelector:
 matchNames:
 - cattle-monitoring-system
 jobLabel: blackbox-http
 endpoints:
 - interval: 30s
 scrapeTimeout: 10s
 path: /probe
 port: http
 params:
 module: [http_2xx]
 
 target: ["http://xxx:9876/xxx"]
 scheme: http
 metricRelabelings:
 - sourceLabels: [__param_target]
 targetLabel: instance
 - sourceLabels: [__address__]
 targetLabel: __tmp
 - sourceLabels: [__tmp]
 regex: .*
 replacement: blackbox-http
 targetLabel: job
 relabelings:
 - sourceLabels: []
 targetLabel: __param_target
 
 replacement: http://xxx:9876/xxx
 - targetLabel: __address__
 replacement: blackbox-exporter:9115
 
 
 - sourceLabels: [__param_target]
 targetLabel: target
 
 - sourceLabels: [__param_target]
 targetLabel: instance
 
 - sourceLabels: [__address__]
 targetLabel: job
 replacement: blackbox-http
 
 - targetLabel: type
 replacement: http
 ---
 apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
 name: blackbox-icmp-monitor
 namespace: cattle-monitoring-system
 spec:
 selector:
 matchLabels:
 app: blackbox-exporter
 namespaceSelector:
 matchNames:
 - cattle-monitoring-system
 jobLabel: blackbox-icmp
 endpoints:
 - interval: 30s
 scrapeTimeout: 10s
 path: /probe
 port: http
 params:
 module: [icmp]
 
 target: ["xxx"]
 scheme: http
 metricRelabelings:
 - sourceLabels: [__param_target]
 targetLabel: instance
 - sourceLabels: [__address__]
 targetLabel: __tmp
 - sourceLabels: [__tmp]
 regex: .*
 replacement: blackbox-icmp
 targetLabel: job
 relabelings:
 - sourceLabels: []
 targetLabel: __param_target
 replacement: xxx
 - targetLabel: __address__
 replacement: blackbox-exporter:9115
 - sourceLabels: [__param_target]
 targetLabel: target
 - sourceLabels: [__param_target]
 targetLabel: instance
 - sourceLabels: [__address__]
 targetLabel: job
 replacement: blackbox-icmp
 
 - targetLabel: type
 replacement: icmp
 
 | 
grafana dashboard id【1860】