Blackbox Exporter 및 Grafana로 웹사이트 성능을 모니터링하는 방법은 무엇입니까?

웹사이트 모니터링을 위한 Blackbox Exporter 활용

Grafana를 사용하여 서버 지표를 모니터링하는 데 만족하셨다면, 웹사이트 모니터링을 위한 Blackbox Exporter도 매우 유용하게 활용할 수 있습니다.

본 튜토리얼에서는 CentOS/RHEL 환경에서 Blackbox Exporter를 설치하고 Prometheus 및 Grafana와 연동하여 웹사이트 성능과 가동 시간을 효과적으로 모니터링하는 방법을 상세히 안내합니다.

Blackbox Exporter란 무엇인가?

Blackbox Exporter는 Prometheus에서 HTTPS, HTTP, TCP, DNS 및 ICMP와 같은 다양한 엔드포인트의 상태를 검사하는 데 사용되는 강력한 도구입니다. 정의된 엔드포인트를 기반으로 Blackbox Exporter는 Grafana를 통해 시각화할 수 있는 다양한 지표들을 생성합니다. 특히 응답 시간 측정은 Blackbox Exporter의 핵심 기능 중 하나입니다.

Blackbox Exporter는 자체 호스팅 솔루션으로 제공됩니다. 만약 SaaS 또는 클라우드 기반 솔루션을 찾고 있다면 Grafana worldPing을 고려해 볼 수 있습니다.

사전 준비 사항

본격적인 진행에 앞서 Prometheus 및 Grafana가 서버에 미리 설치되어 있어야 합니다. 만약 설치가 필요하다면 관련 문서를 참조하여 먼저 설치를 완료해 주시기 바랍니다.

Blackbox Exporter 설치 과정

이제 Blackbox Exporter를 설치하는 과정을 단계별로 살펴보겠습니다.

1단계: Blackbox Exporter 다운로드

공식 다운로드 페이지에서 최신 Linux AMD 버전의 Blackbox Exporter 패키지를 다운로드합니다. 여기서는 blackbox_exporter-0.16.0.linux-amd64.tar.gz 파일을 기준으로 설명합니다.

  • 다운로드한 파일을 서버에 업로드합니다.
  • 압축된 파일을 서버에서 추출합니다.
[[email protected] ~]$ tar -xzf blackbox_exporter-0.16.0.linux-amd64.tar.gz

추출된 폴더로 이동하여 내부 파일들을 확인합니다.

[[email protected] ~]$ cd blackbox_exporter-0.16.0.linux-amd64/
[[email protected] blackbox_exporter-0.16.0.linux-amd64]$ ls -l
total 16672
-rwxr-xr-x. 1 centos centos 17050332 Nov 11 2019 blackbox_exporter
-rw-r--r--. 1 centos centos 629 Nov 11 2019 blackbox.yml
-rw-r--r--. 1 centos centos 11357 Nov 11 2019 LICENSE
-rw-r--r--. 1 centos centos 94 Nov 11 2019 NOTICE

여기서 중요한 파일은 blackbox_exporter 실행 파일과 blackbox.yml 설정 파일입니다.

  • blackbox_exporter: Blackbox Exporter 서비스를 실행하는 데 사용되는 실행 파일입니다.
  • blackbox.yml: 프로브할 엔드포인트 및 사용할 모듈을 정의하는 Blackbox Exporter의 핵심 구성 파일입니다.

아래 명령을 통해 Blackbox Exporter에서 사용 가능한 모든 플래그와 옵션을 확인할 수 있습니다.

[[email protected] blackbox_exporter-0.16.0.linux-amd64]$ ./blackbox_exporter -h
usage: blackbox_exporter [<flags>]

Flags:
-h, --help Show context-sensitive help (also try --help-long and --help-man).

--config.file="blackbox.yml"
Blackbox exporter configuration file.
--web.listen-address=":9115"
The address to listen on for HTTP requests.

--timeout-offset=0.5 Offset to subtract from timeout in seconds.

--config.check If true validate the config file and then exit.

--history.limit=100 The maximum amount of items to keep in the history.

--web.external-url=<url>
The URL under which Blackbox exporter is externally reachable (for example, if Blackbox exporter is served via a
reverse proxy). Used for generating relative and absolute links back to Blackbox exporter itself. If the URL has a
path portion, it will be used to prefix all HTTP endpoints served by Blackbox exporter. If omitted, relevant URL
components will be derived automatically.

--web.route-prefix=<path>
Prefix for the internal routes of web endpoints. Defaults to path of --web.external-url.

--log.level=info Only log messages with the given severity or above. One of: [debug, info, warn, error]

--log.format=logfmt Output format of log messages. One of: [logfmt, json]
--version Show application version.

2단계: Blackbox 사용자 생성

새로운 사용자를 생성하거나 기존 Prometheus 사용자를 활용할 수 있습니다.

새로운 사용자를 생성할 경우, 해당 사용자에게 필요한 권한을 부여하고 관련 파일의 소유권을 할당합니다.

[[email protected] ~]$ sudo useradd -rs /bin/false blackbox
[[email protected] ~]$ sudo chmod -R 777 /home/centos/blackbox_exporter-0.16.0.linux-amd64
[[email protected] ~]$ sudo chown -R blackbox:blackbox /home/centos/blackbox_exporter-0.16.0.linux-amd64

3단계: Blackbox 서비스 구성

Blackbox Exporter를 systemd 서비스로 등록하는 단계입니다. blackbox.service 파일을 생성하고 아래 내용을 입력한 후 저장합니다.

[[email protected] ~]$ sudo gedit /etc/systemd/system/blackbox.service

[Unit]
Description=Blackbox Exporter Service
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=blackbox
Group=blackbox
ExecStart=/home/centos/blackbox_exporter-0.16.0.linux-amd64/blackbox_exporter --config.file==/home/centos/blackbox_exporter-0.16.0.linux-amd64/blackbox.yml

[Install]
WantedBy=multi-user.target

설정 파일의 경로를 실제 경로로 정확하게 수정해야 합니다.

4단계: Blackbox Exporter 실행

이제 아래 명령을 실행하여 Blackbox Exporter를 서비스로 시작합니다.

[[email protected] ~]$ sudo systemctl daemon-reload
[[email protected] ~]$ sudo systemctl start blackbox.service
[[email protected] ~]$ sudo systemctl status blackbox.service
● blackbox.service - Blackbox Exporter Service
Loaded: loaded (/etc/systemd/system/blackbox.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-06-13 17:28:40 EDT; 1s ago
Main PID: 30427 (blackbox_export)
Tasks: 5
CGroup: /system.slice/blackbox.service
└─30427 /usr/local/bin/blackbox_exporter --config.file=/etc/blackbox.yml

Jun 13 17:28:40 koreantech.org.linuxvmimages.com systemd[1]: Started Blackbox Exporter Service.
Jun 13 17:28:40 koreantech.org.linuxvmimages.com blackbox_exporter[30427]: level=info ts=2020-06-13T21:28:40.283Z caller=main.go:212 msg="Starting b...b9a9)"
Jun 13 17:28:40 koreantech.org.linuxvmimages.com blackbox_exporter[30427]: level=info ts=2020-06-13T21:28:40.283Z caller=main.go:213 msg="Build cont...SSING)
Jun 13 17:28:40 koreantech.org.linuxvmimages.com blackbox_exporter[30427]: level=info ts=2020-06-13T21:28:40.283Z caller=main.go:225 msg="Loaded config file"
Jun 13 17:28:40 koreantech.org.linuxvmimages.com blackbox_exporter[30

이제 Blackbox Exporter가 성공적으로 시작되었습니다. http://localhost:9115/ 주소에서 Blackbox Exporter의 상태를 확인할 수 있습니다.

Prometheus와 Blackbox 통합

다음으로 Blackbox Exporter를 Prometheus와 연동하여 지표를 수집하는 방법을 알아보겠습니다.

  • prometheus.yml 파일에 아래와 같이 Blackbox 작업을 추가합니다. 여기서는 https://www.telegraph.co.uk 웹사이트의 성능을 모니터링하는 예시를 보여드립니다.
[[email protected] ~]$ sudo gedit /etc/prometheus/prometheus.yml

- job_name: 'blackbox'
metrics_path: /probe
params:
module: [http_2xx] # Look for a HTTP 200 response.
static_configs:
- targets:
- https://www.telegraph.co.uk
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 # The blackbox exporter's real hostname:port.
[[email protected] ~]$ sudo systemctl restart prometheus.service
  • http://localhost:9090/targets 에서 Prometheus 대상을 확인하면 Blackbox 작업이 정상적으로 실행 중임을 확인할 수 있습니다.

  • 그래프 탭에서 쿼리(probe_http_duration_seconds)를 실행하여 지표 데이터를 확인합니다.

  • Prometheus에서 수집한 데이터를 기반으로 시각화 그래프를 생성합니다.

이제 Grafana에서 Blackbox 작업을 시각화할 차례입니다.

다양한 방법이 있지만, 미리 만들어진 대시보드를 활용하는 것이 가장 빠르고 효과적입니다. Prometheus Blackbox Exporter 대시보드를 사용해 보겠습니다.

  • Grafana 대시보드로 이동하여 + 기호를 클릭하고 가져오기를 선택합니다.
  • Import via grafana.com 옵션에서 대시보드 ID 7587을 입력하고 로드를 클릭합니다.
  • Prometheus 데이터 소스를 선택한 후 가져오기를 클릭합니다.

  • Prometheus Blackbox Exporter 대시보드를 성공적으로 가져왔습니다.
  • 이제 글로벌 프로브 기간, 상태, HTTP 기간, 평균 프로브 기간, 평균 DNS 조회, SSL 만료일 등 다양한 지표를 시각화할 수 있습니다.

  • 이러한 지표들은 대시보드 내에서 개별 패널로 구성됩니다. HTTP 기간 패널을 예시로 살펴보겠습니다. 이 패널에서는 연결, 처리, 해결, TLS 및 전송 요청에 소요되는 시간을 시각적으로 확인할 수 있습니다.

대시보드에는 다양한 사용자 정의 옵션이 제공됩니다. 시각화할 데이터의 시간 범위를 조정하거나, 데이터 갱신 간격을 변경할 수 있습니다. 기본적으로 데이터는 5초마다 대시보드에 갱신됩니다.

  • HTTP 기간 패널의 아래쪽 화살표를 클릭하면 다양한 메뉴 옵션이 나타납니다. 편집을 클릭하여 패널 설정을 확인합니다.

  • 시각화 패널 하단에는 쿼리 편집기가 있습니다. 현재 스냅샷에서는 probe_http_duration_seconds 쿼리가 시각화에 사용되고 있음을 확인할 수 있습니다.

  • Blackbox Exporter는 수많은 지표를 제공하며, 필요에 따라 쿼리를 편집하여 원하는 시각화를 추가할 수 있습니다.

  • 시각화 유형을 변경하는 옵션도 다양하게 제공됩니다. 예를 들어, 평균 프로브 기간은 현재 텍스트 형식으로 표시되지만, 오른쪽 시각화 패널에서 게이지 옵션을 선택하면 다른 형태로 시각화할 수 있습니다.

  • 다음은 시각화 형식이 변경된 모습입니다.

결론

본 튜토리얼을 통해 Prometheus, Blackbox Exporter, 그리고 Grafana를 함께 사용하여 웹사이트를 모니터링하는 것이 얼마나 쉽고 강력한지 알아보았습니다. 다양한 기능을 직접 경험하고 탐색해 보시기를 적극 권장합니다. Grafana에 대해 더 자세히 배우고 싶다면 온라인 강좌를 참고해 보세요.

본 기사를 통해 유익한 정보를 얻으셨기를 바랍니다. 이 정보를 다른 사람들과 공유해 보는 건 어떨까요?