[Monitoring] 05. 프로메테우스 (CentOS Stream 8 기준) - Blackbox exporter

Date:     Updated:

카테고리:

태그:


05. Blackbox exporter


Blackbox Exporter는 Prometheus 모니터링 시스템과 함께 사용되는 오픈 소스 프로젝트로, HTTP, HTTPS, DNS, TCP 등과 같은 네트워크 서비스의 활성 상태를 모니터링하기 위해 설계되었다.


■ Blackbox exporter 설치 및 설정


▶ 설치

{
    mkdir /etc/blackbox_exporter
    dnf -y install wget
    wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.24.0/blackbox_exporter-0.24.0.linux-amd64.tar.gz 
	tar -zxpvf blackbox_exporter-0.24.0.linux-amd64.tar.gz 
	cp blackbox_exporter-0.24.0.linux-amd64/* /etc/blackbox_exporter
}
cat <<EOF > /etc/systemd/system/blackbox_exporter.service
[Unit]
Description=Alert Manager
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/etc/blackbox_exporter/blackbox_exporter --config.file=/etc/blackbox_exporter/blackbox.yml

[Install]
WantedBy=multi-user.target
EOF
{
    systemctl enable --now blackbox_exporter
	firewall-cmd --add-port=9115/tcp --permanent
	firewall-cmd --reload
}


▶ /etc/blackbox_exporter/blackbox.yml 파일 (기본값 유지)

vi /etc/blackbox_exporter/blackbox.yml 

modules:
  http_2xx:
    prober: http
    http:
      preferred_ip_protocol: "ip4"
  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
  grpc:
    prober: grpc
    grpc:
      tls: true
      preferred_ip_protocol: "ip4"
  grpc_plain:
    prober: grpc
    grpc:
      tls: false
      service: "service1"
  ssh_banner:
    prober: tcp
    tcp:
      query_response:
      - expect: "^SSH-2.0-"
      - send: "SSH-2.0-blackbox-ssh-check"
  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
  icmp_ttl5:
    prober: icmp
    timeout: 5s
    icmp:
      ttl: 5


▶ Prometheus 서버 노드에 설정을 추가 (/etc/prometheus/prometheus.yml)

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.test.srv
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        # Blackbox Exporter 호스트:포트
        replacement: node02.test.srv:9115

  # [tcp_connect] 모듈을 사용하는 경우
  - job_name: 'Blackbox_ssh'
    metrics_path: /probe
    params:
      module: [ssh_banner]
    static_configs:
      - targets:
        # 대상 호스트:포트
        - node02.test.srv:22
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: node02.test.srv:9115

  # [tcp_connect] 모듈을 사용하는 경우
  - job_name: 'Blackbox_tcp'
    metrics_path: /probe
    params:
      module: [tcp_connect]
    static_configs:
      - targets:
        # 대상 호스트:포트 (아래 예시는 MariaDB/MySQL)
        - node02.test.srv:3306
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: node02.test.srv:9115
systemctl restart prometheus


■ 결과 확인


▶ Prometheus 웹 UI에 접속하고, [Status] - [Targets]

  • [probe_success] 메트릭에서 데이터를 확인할 수 있으며, [1]은 성공을 의미하고, [0]은 실패를 의미한다.

212121

2222222

MONITORING 카테고리 내 다른 글 보러가기

댓글 남기기