Blackbox黑盒程序是prometheus用于tcp,http,icmp等协议监控站点存活的工具。下面提供部署方法:
---
configmap:
apiVersion: v1 kind: ConfigMap metadata: labels: app: blackbox-exporter name: blackbox-exporter namespace: xltest-lyz data: blackbox.yml: |- modules: http_2xx: prober: http timeout: 2s http: valid_http_versions: ["HTTP/1.1", "HTTP/2"] valid_status_codes: [200,301,302] method: GET preferred_ip_protocol: "ip4" tcp_connect: prober: tcp timeout: 2s http_403: prober: http timeout: 2s http: valid_http_versions: ["HTTP/1.1", "HTTP/2"] valid_status_codes: [403] method: GET preferred_ip_protocol: "ip4" https_403: prober: https timeout: 2s http: valid_http_versions: ["HTTP/1.1", "HTTP/2"] valid_status_codes: [403] method: GET preferred_ip_protocol: "ip4" tcp_connect: prober: tcp
编辑blackbox的配置,我的配置包含了http_2xx,tcp,http和https的403规则。注意修改namespace。
---
deplyoment.yaml
kind: Deployment apiVersion: apps/v1 metadata: name: blackbox-exporter namespace: xltest-lyz labels: app: blackbox-exporter #annotations: #deployment.kubernetes.io/revision: 1 spec: replicas: 1 selector: matchLabels: app: blackbox-exporter template: metadata: labels: app: blackbox-exporter spec: volumes: - name: config configMap: name: blackbox-exporter defaultMode: 420 containers: - name: blackbox-exporter image: prom/blackbox-exporter:v0.16.0 imagePullPolicy: IfNotPresent args: - --config.file=/etc/blackbox_exporter/blackbox.yml - --log.level=info - --web.listen-address=:9115 ports: - name: blackbox-port containerPort: 9115 protocol: TCP resources: limits: cpu: 200m memory: 256Mi requests: cpu: 100m memory: 50Mi volumeMounts: - name: config mountPath: /etc/blackbox_exporter readinessProbe: tcpSocket: port: 9115 initialDelaySeconds: 5 timeoutSeconds: 5 periodSeconds: 10 successThreshold: 1 failureThreshold: 3
注意修改namespace
---
svc.yaml
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: "true" service.beta.kubernetes.io/alicloud-loadbalancer-id: 你的slb实例id labels: app: blackbox-exporter name: blackbox-exporter namespace: xltest-lyz spec: externalTrafficPolicy: Local ports: - name: balckbox port: 9115 protocol: TCP targetPort: 9115 selector: app: blackbox-exporter sessionAffinity: None type: LoadBalancer
暴露balckbox程序到公网或私网,以便prometheus引用blackbox。
---
三个yaml建立后,访问你的slb ip :9115端口即可显示blackbox页面,说明安装正常,同时blackbox也支持动态加载。
---
接着编写你的prometheus抓取配置:
- job_name: 'blackbox_tcp_80' scrape_interval: 45s metrics_path: /probe params: module: [tcp_connect] static_configs: - targets: - www.baidu,com:80 relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: balckbox暴露ip:9115
添加你所需要监控的job,配置生效。
即可看到promethues已监控到你的站点
---
配置grafana,完成配置。
可以使用这句语句来扩展
饼图:count_values('value',probe_success{job="blackbox_tcp_443"})
点状图:probe_success{job="blackbox_tcp_443"}