Prometheus와 Blackbox Exporter에서 서버 사활 모니터링
13211 단어 blackbox_exporterprometheus
Prometheus는 오픈 소스 모니터링 도구입니다. 이 도구의 주요 특징은 다음과 같습니다.
위의 모든 특징은 내 요구에 부합하며 매우 좋아하는 도구입니다.
글쎄,이 기사에서 다루는 것은 Blackbox Exporter라는 구성 요소입니다. 이 구성 요소는 다양한 통신 프로토콜을 통해 대상 서버의 사활 상태에 대한 메트릭을 생성합니다. Prometheus를 운용하는데 있어서 꼭 눌러 두고 싶은 컴퍼넌트입니다만, 이 컴퍼넌트에 관한 일본어의 기사를 볼 수 없습니다. 그래서 비망록을 겸해 구축부터 운용까지의 방법을 아래에 적습니다.
구축 방법
간편하게 감시 환경을 구축한다면 Docker를 이용하는 것이 좋습니다. Docker 이미지는 공식 이미지를 사용합니다. Docker Compose 파일은 다음과 같습니다.
./docker-compose.yml
version: '2'
services:
prometheus:
image: prom/prometheus:latest
ports:
- 9090:9090
volumes:
- data-prometheus:/prometheus
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
command: -config.file=/etc/prometheus/prometheus.yml -storage.local.path=/prometheus -web.console.libraries=/usr/share/prometheus/console_libraries -web.console.templates=/usr/share/prometheus/consoles
blackbox_exporter:
image: prom/blackbox-exporter:latest
volumes:
- ./blackbox_exporter/config.yml:/etc/blackbox_exporter/config.yml
volumes:
data-prometheus:
driver: local
Blackbox Exporter 설정
Blackbox Exporter 구성 파일은 GitHub 저장소의 것을 유용합니다. 독자적으로 리퀘스트나 응답등의 세세한 조정을 할 수 있으므로, 흥미가 있는 분은 구성 혹은 Example 를 참조해 주세요.
./blackbox_exporter/config.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
에서 사용할 모듈을 설정합니다. 다음은 주요 프로토콜에서 설정하는 방법을 설명합니다.
HTTP를 이용하는 경우
모듈로 http_2xx
를 설정하십시오. targets
에서 URL을 설정합니다. 재 라벨 설정에 대해서는 Prometheus Configuration를 유용합니다. replacement
에서는 Blackbox Exporter 구성 요소의 IP 주소 또는 호스트 이름과 포트 번호(9115)를 설정합니다.
./prometheus/prometheus.yml
scrape_configs:
- job_name: 'blackbox_http'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- http://example.com:8080
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
ICMP를 이용하는 경우
모듈로 icmp
를 설정하십시오. targets
는 IP 주소 또는 호스트 이름을 설정합니다.
./prometheus/prometheus.yml
scrape_configs:
- job_name: 'blackbox_icmp'
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- example.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
포트 지정 TCP를 이용하는 경우
모듈로 tcp_connect
를 설정하십시오. targets
는 IP 주소 또는 호스트 이름과 포트 번호를 설정합니다.
./prometheus/prometheus.yml
scrape_configs:
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- example.com:1666
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
운영방법
대상 서버의 사활 상태에 대해서는 probe_success 메트릭스를 확인합니다. 1이면 가동, 0이면 정지를 의미합니다.
Prometheus의 경고 규칙에 다음 설명을 추가하면 2분 이상 중지된 인스턴스가 있는 경우 경고가 작동합니다. 실제의 경고 통지에 대해서는 AlertManager 컴퍼넌트가 받아들입니다. 이 컴퍼넌트에 대해서는 대상 범위외이므로 설명은 생략합니다.
ALERT probe_down
IF probe_success == 0
FOR 2m
LABELS { severity = "critical" }
ANNOTATIONS {
summary = "Instance {{ $labels.instance }} down",
description = "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes.",
}
마지막으로
편안한 Prometheus 생활을 보내십시오.
Reference
이 문제에 관하여(Prometheus와 Blackbox Exporter에서 서버 사활 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mmorita44/items/8eca5e6fae9fd40807ce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
version: '2'
services:
prometheus:
image: prom/prometheus:latest
ports:
- 9090:9090
volumes:
- data-prometheus:/prometheus
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
command: -config.file=/etc/prometheus/prometheus.yml -storage.local.path=/prometheus -web.console.libraries=/usr/share/prometheus/console_libraries -web.console.templates=/usr/share/prometheus/consoles
blackbox_exporter:
image: prom/blackbox-exporter:latest
volumes:
- ./blackbox_exporter/config.yml:/etc/blackbox_exporter/config.yml
volumes:
data-prometheus:
driver: local
Blackbox Exporter 구성 파일은 GitHub 저장소의 것을 유용합니다. 독자적으로 리퀘스트나 응답등의 세세한 조정을 할 수 있으므로, 흥미가 있는 분은 구성 혹은 Example 를 참조해 주세요.
./blackbox_exporter/config.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
에서 사용할 모듈을 설정합니다. 다음은 주요 프로토콜에서 설정하는 방법을 설명합니다.
HTTP를 이용하는 경우
모듈로 http_2xx
를 설정하십시오. targets
에서 URL을 설정합니다. 재 라벨 설정에 대해서는 Prometheus Configuration를 유용합니다. replacement
에서는 Blackbox Exporter 구성 요소의 IP 주소 또는 호스트 이름과 포트 번호(9115)를 설정합니다.
./prometheus/prometheus.yml
scrape_configs:
- job_name: 'blackbox_http'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- http://example.com:8080
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
ICMP를 이용하는 경우
모듈로 icmp
를 설정하십시오. targets
는 IP 주소 또는 호스트 이름을 설정합니다.
./prometheus/prometheus.yml
scrape_configs:
- job_name: 'blackbox_icmp'
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- example.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
포트 지정 TCP를 이용하는 경우
모듈로 tcp_connect
를 설정하십시오. targets
는 IP 주소 또는 호스트 이름과 포트 번호를 설정합니다.
./prometheus/prometheus.yml
scrape_configs:
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- example.com:1666
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
운영방법
대상 서버의 사활 상태에 대해서는 probe_success 메트릭스를 확인합니다. 1이면 가동, 0이면 정지를 의미합니다.
Prometheus의 경고 규칙에 다음 설명을 추가하면 2분 이상 중지된 인스턴스가 있는 경우 경고가 작동합니다. 실제의 경고 통지에 대해서는 AlertManager 컴퍼넌트가 받아들입니다. 이 컴퍼넌트에 대해서는 대상 범위외이므로 설명은 생략합니다.
ALERT probe_down
IF probe_success == 0
FOR 2m
LABELS { severity = "critical" }
ANNOTATIONS {
summary = "Instance {{ $labels.instance }} down",
description = "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes.",
}
마지막으로
편안한 Prometheus 생활을 보내십시오.
Reference
이 문제에 관하여(Prometheus와 Blackbox Exporter에서 서버 사활 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mmorita44/items/8eca5e6fae9fd40807ce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
scrape_configs:
- job_name: 'blackbox_http'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- http://example.com:8080
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
scrape_configs:
- job_name: 'blackbox_icmp'
metrics_path: /probe
params:
module: [icmp]
static_configs:
- targets:
- example.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
scrape_configs:
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- example.com:1666
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox_exporter:9115
대상 서버의 사활 상태에 대해서는 probe_success 메트릭스를 확인합니다. 1이면 가동, 0이면 정지를 의미합니다.
Prometheus의 경고 규칙에 다음 설명을 추가하면 2분 이상 중지된 인스턴스가 있는 경우 경고가 작동합니다. 실제의 경고 통지에 대해서는 AlertManager 컴퍼넌트가 받아들입니다. 이 컴퍼넌트에 대해서는 대상 범위외이므로 설명은 생략합니다.
ALERT probe_down
IF probe_success == 0
FOR 2m
LABELS { severity = "critical" }
ANNOTATIONS {
summary = "Instance {{ $labels.instance }} down",
description = "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes.",
}
마지막으로
편안한 Prometheus 생활을 보내십시오.
Reference
이 문제에 관하여(Prometheus와 Blackbox Exporter에서 서버 사활 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mmorita44/items/8eca5e6fae9fd40807ce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Prometheus와 Blackbox Exporter에서 서버 사활 모니터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mmorita44/items/8eca5e6fae9fd40807ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)