Prometheus의 추천 - blackbox_exporter로 사활 모니터링을 시도하십시오 -

blackbox exporter란 무엇인가.



지금까지의 expoter는 감시 대상의 서버에 도입해 Prometheus 서버로부터 Pull해 메트릭스를 취득하고 있었습니다.
이 경우 ICMP(ping) 감시나 URL 감시에 대해서는 어떻게 부딪쳐도 할 수 없습니다.
그것을 해결해주는 것이 "blackbox exporter"입니다.

외형 감시를 해 주는 expoter이므로, Prometheus 서버에 도입해 움직입니다. (다른 서버에서도 괜찮습니다)

공식 - Download
GitHub - prometheus/blackbox_exporter

도입(ansible)



node_exporter도 ansible을 사용하여 도입하여 서비스 등록까지 했으므로 그것을 기반으로 yml을 만듭니다.

blackbox-exporter.yml
---
- hosts: samplehost
  user: sampleuser
  sudo: yes
  tasks:
  - name: check exist file
    stat:
      path: /usr/bin/blackbox_exporter
    register: file
  - name: wget blackbox_exporter
    get_url:
      url: https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbox_exporter-0.12.0.linux-amd64.tar.gz
      dest: /tmp/blackbox_exporter-0.12.0.linux-amd64.tar.gz
  - name: unarchive blackbox-exporter
    unarchive:
      src: /tmp/blackbox_exporter-0.12.0.linux-amd64.tar.gz
      remote_src: yes
      dest: /tmp/
  - name: copy exporter binary
    shell: cp /tmp/blackbox_exporter-0.12.0.linux-amd64/blackbox_exporter /usr/bin/blackbox_exporter
    when: not file.stat.exists

  - name: add system account prometheus
    user:
      system: yes
      name: prometheus
      state: present
      home: /var/lib/prometheus
      shell: /bin/false
      comment: Prometheus daemon
  - name: create prometheus home directory
    file:
      state: directory
      path: /var/lib/prometheus
      mode: 0755
      group: prometheus
      owner: prometheus
  - name: create blackbox_exporter systemd
    blockinfile:
      path: /etc/systemd/system/blackbox_exporter.service
      create: yes
      block: |
        [Unit]
        Description=black_exporter for Prometheus

        [Service]
        Restart=always
        User=prometheus
        ExecStart=/usr/bin/blackbox_exporter \
            --web.listen-address=0.0.0.0:9115 \
            --config.file=/usr/local/blackbox_exporter/blackbox.yml
        ExecReload=/bin/kill -HUP $MAINPID
        TimeoutStopSec=20s
        SendSIGKILL=no

        [Install]
        WantedBy=multi-user.target
  - name: add blackbox_exporter systemd
    systemd:
      name: blackbox_exporter.service
      enabled: yes
      state: started
  - name: setup icmp
    shell: setcap cap_net_raw+ep /usr/local/blackbox_exporter/blackbox_exporter

blackbox_exporter 설정



기본적으로 다음과 같습니다. 아직 조사하지 않았으므로 우선 기본값으로 두십시오.

blackbox.yml
modules:
  http_2xx:
    prober: http
    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

Prometheus 측 설정



어디에 대해 어떤 프로토콜에 대한 설정은 scrape_configs에 설명하는 것 같습니다.
Prometheus와 Blackbox Exporter에서 서버 사활 모니터링
내용은 상기를 파크리 참고로 했습니다. (고맙습니다!)

글쎄, 커스텀하는 것은 무엇인가 확인하고 나서입니다.

ICMP 사용 시 설정



file_sd로 관리하는 것이 좋을 것 같습니다.

prometheus.yml(발췌)
scrape_configs:
  - job_name: "Blackbox_ICMP"
    metrics_path: /probe
    params:
      module: [icmp]
    file_sd_configs:
      - files:
        - /usr/local/prometheus-2.3.1/filesd/ICMP.yml
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9115 # blackbox_exporterのIP:Port(今回はPrometheusサーバ自身なので127.0.0.1)


/usr/local/prometheus-2.3.1/filesd/ICMP.yml
- targets:
    - XXXXX01
    - XXXXXXX01
  labels:
    project: XXXXXT
- targets:
    - 13.XXX.XXX.234
  labels:
    instance: XX-XXXXX18
    project: XXXXXXXXAI

확인



설정이 끝나면 서비스를 다시 시작하고 우선 Targets에 나와 있는지 확인.



targets가 복수라고 어떻게 되는지 확인.


경고를 설정합니다.




이상!

Prometheus 과거 기사
Prometheus의 추천 - 초기 도입 -
Prometheus 추천 - Service Discovery -
Prometheus의 추천 - exporter 도입 node-exporter(apt-get) -
Prometheus의 추천 - exporter 도입 node-exporter(바이너리) -
Prometheus의 추천 - Service Discovery - EndPoint가 'http://:9100/metrics'가 되어 자신이 되어 버리는 건
Prometheus의 추천 - Grafana에서 모니터링 할 사용자 목록을 원합니다 -
Prometheus의 추천 - Grafana에서 Alert를 Teams에 알리는 것은 간단합니다.

좋은 웹페이지 즐겨찾기