原创-prometheus-k8s-Blackbox站点监控部署指南

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"}

原文地址:https://www.cnblogs.com/normanlin/p/14505878.html