Prometheus中的黑盒监控blackbox
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Prometheus中的黑盒监控blackbox
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                一、安裝blackbox-exporter
地址:https://github.com/prometheus/blackbox_exporter
創建configmap
blackbox.yaml
modules:
  http_2xx:
    prober: http
  http_post_2xx:
    prober: http
    http:
      method: POST
  tcp_connect:
    prober: tcp
  pop3s_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^+OK"
      tls: true
      tls_config:
        insecure_skip_verify: false
  ssh_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^SSH-2.0-"
  irc_banner:
    prober: tcp
    tcp:
      query_response:
      - send: "NICK prober"
      - send: "USER prober prober prober :prober"
      - expect: "PING :([^ ]+)"
        send: "PONG ${1}"
      - expect: "^:[^ ]+ 001"
  icmp:
    prober: icmp
創建
# kubectl create cm blackbox-config --from-file=blackbox.yaml -n monitoring configmap/blackbox-config created
創建blackcbox-exporter
blackbox-exporter.yaml
apiVersion: v1
kind: Service
metadata:
  name: blackbox
  namespace: monitoring
  labels:
    k8s-app: blackbox
spec:
  selector:
    k8s-app: blackbox
  ports:
  - name: blackbox
    port: 9115
    protocol: TCP
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: blackbox
  namespace: monitoring
  labels:
    k8s-app: blackbox
spec:
  selector:
    matchLabels:
      k8s-app: blackbox
  replicas: 1
  template:
    metadata:
      labels:
        k8s-app: blackbox
    spec:
      containers:
      - name: blackbox
        image: prom/blackbox-exporter:master
        imagePullPolicy: IfNotPresent
        args: ["--config.file=/etc/blackbox/blackbox.yaml"]
        resources:
          requests:
            memory: 100M
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
          readOnly: true
        - name: blackbox-config
          mountPath: /etc/blackbox
          readOnly: true
      nodeSelector:
        monitor: "true"
      volumes:  
        - name: tz-config
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
        - name: blackbox-config
          configMap:
            name: blackbox-config
創建
kubectl create -f blackbox-exporter.yaml
查看
# kubectl get svc,pod -n monitoring -l k8s-app=blackbox NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/blackbox ClusterIP 10.108.47.141 <none> 9115/TCP 10m NAME READY STATUS RESTARTS AGE pod/blackbox-86b7486879-w6n22 1/1 Running 0 5m9s
測試
# curl "http://10.108.47.141:9115/probe?target=baidu.com&module=http_2xx"
# HELP probe_dns_lookup_time_seconds Returns the time taken for probe dns lookup in seconds
# TYPE probe_dns_lookup_time_seconds gauge
probe_dns_lookup_time_seconds 0.017669272
# HELP probe_duration_seconds Returns how long the probe took to complete in seconds
# TYPE probe_duration_seconds gauge
probe_duration_seconds 0.079658423
# HELP probe_failed_due_to_regex Indicates if probe failed due to regex
# TYPE probe_failed_due_to_regex gauge
probe_failed_due_to_regex 0
# HELP probe_http_content_length Length of http content response
# TYPE probe_http_content_length gauge
probe_http_content_length 81
# HELP probe_http_duration_seconds Duration of http request by phase, summed over all redirects
# TYPE probe_http_duration_seconds gauge
probe_http_duration_seconds{phase="connect"} 0.031100739
probe_http_duration_seconds{phase="processing"} 0.030203142
probe_http_duration_seconds{phase="resolve"} 0.017669272
probe_http_duration_seconds{phase="tls"} 0
probe_http_duration_seconds{phase="transfer"} 0.0002315
# HELP probe_http_last_modified_timestamp_seconds Returns the Last-Modified HTTP response header in unixtime
# TYPE probe_http_last_modified_timestamp_seconds gauge
probe_http_last_modified_timestamp_seconds 1.26330408e+09
# HELP probe_http_redirects The number of redirects
# TYPE probe_http_redirects gauge
probe_http_redirects 0
# HELP probe_http_ssl Indicates if SSL was used for the final redirect
# TYPE probe_http_ssl gauge
probe_http_ssl 0
# HELP probe_http_status_code Response HTTP status code
# TYPE probe_http_status_code gauge
probe_http_status_code 200
# HELP probe_http_uncompressed_body_length Length of uncompressed response body
# TYPE probe_http_uncompressed_body_length gauge
probe_http_uncompressed_body_length 81
# HELP probe_http_version Returns the version of HTTP of the probe response
# TYPE probe_http_version gauge
probe_http_version 1.1
# HELP probe_ip_addr_hash Specifies the hash of IP address. It's useful to detect if the IP address changes.
# TYPE probe_ip_addr_hash gauge
probe_ip_addr_hash 2.752187856e+09
# HELP probe_ip_protocol Specifies whether probe ip protocol is IP4 or IP6
# TYPE probe_ip_protocol gauge
probe_ip_protocol 4
# HELP probe_success Displays whether or not the probe was a success
# TYPE probe_success gauge
probe_success 1
二、Blacakbox-exporter應用
使用prometheus addition 功能,添加blackbox功能應用
地址:https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/additional-scrape-config.md
先創建一個secret
prometheus-additional.yaml
- job_name: 'blackbox'
  metrics_path: /probe
  params:
    module: [http_2xx]  # Look for a HTTP 200 response.
  static_configs:
    - targets:
      #- http://prometheus.io    # Target to probe with http.
      #- https://prometheus.io   # Target to probe with https.
      - https://www.baidu.com # Target to probe with http on port 8080.
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: blackbox:9115  # The blackbox exporter's real hostname:port.
替換ip地址為blackbox的service名稱
創建
kubectl create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml --dry-run -oyaml > additional-scrape-configs.yaml
# kubectl create -f additional-scrape-configs.yaml -n monitoring secret/additional-scrape-configs created
查看
# kubectl get secret -n monitoring NAME TYPE DATA AGE additional-scrape-configs Opaque
修改Prometheus的CRD
$path/prometheus/kube-prometheus/manifests/prometheus-prometheus.yaml
  serviceAccountName: prometheus-k8s
  additionalScrapeConfigs:
    name: additional-scrape-configs
    key: prometheus-additional.yaml
  serviceMonitorNamespaceSelector: {}
  serviceMonitorSelector: {}
新增additionalScrapeConfigs配置項
# kubectl replace -f prometheus-prometheus.yaml
重啟Prometheus,不能自動啟動,就先刪除Prometheus的pod
查看prometheus中status/configuration
導入grafana的dashboard,可以在grafana官網上尋找
總結
以上是生活随笔為你收集整理的Prometheus中的黑盒监控blackbox的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 房贷还完贷款如何解除抵押,在房管局办理解
 - 下一篇: 信用卡临时额度害死人!谨防这四个常见陷阱