CentOS 8
Sponsored Link

Prometheus : Blackbox exporter
2020/07/28
 
Blackbox exporter を設定することにより、HTTP, HTTPS, DNS, TCP, ICMP での死活監視が可能となります。
[1] 設定をしたいノードで、Prometheus のリポジトリを設定後、Blackbox exporter をインストールします。
[root@node02 ~]#
dnf -y install blackbox_exporter
[2] Blackbox exporter の設定です。デフォルトのままでも問題なく動作します。
[root@node02 ~]#
vi /etc/prometheus/blackbox.yml
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

[root@node02 ~]#
systemctl enable --now blackbox_exporter
[3] Firewalld を有効にしている場合は、サービスの許可が必要です。
[root@node02 ~]#
firewall-cmd --add-port=9115/tcp --permanent

success
[root@node02 ~]#
firewall-cmd --reload

success
[4] Prometheus サーバー側で設定を追加します。
[root@dlp ~]#
vi /etc/prometheus/prometheus.yml
.....
.....
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

.....
.....

  # [icmp] モジュールを使用する場合
  # 任意の [job_name]
  - job_name: 'Blackbox_icmp'
    metrics_path: /probe
    params:
      module: [icmp]
    static_configs:
      - targets:
        # 対象ノードのホスト名 または IP アドレス
        - node02.srv.world
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        # Blackbox exporter ホスト:ポート
        replacement: node02.srv.world:9115

  # [ssh_banner] モジュールを使用する場合
  - job_name: 'Blackbox_ssh'
    metrics_path: /probe
    params:
      module: [ssh_banner]
    static_configs:
      - targets:
        # 対象ノード:ポート
        - node02.srv.world:22
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: node02.srv.world:9115

  # [tcp_connect] モジュールを使用する場合
  - job_name: 'Blackbox_tcp'
    metrics_path: /probe
    params:
      module: [tcp_connect]
    static_configs:
      - targets:
        # 対象ノード:ポート (下例は MariaDB/MySQL)
        - node02.srv.world:3306
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: node02.srv.world:9115 

[root@dlp ~]#
systemctl restart prometheus
[5] Prometheus Web UI にアクセスしてデータを確認します。[Targets] に設定したターゲットが表示されます。
データは [probe_success] メトリックで確認できます。[1] が成功、[0] が失敗です。
関連コンテンツ