Jak monitorować wydajność witryny za pomocą Blackbox Exporter i Grafana?

Cenisz sobie Grafanę za monitoring metryk serwera? W takim razie z pewnością docenisz możliwości Blackbox Exportera w kontekście monitorowania stron internetowych!

W tym poradniku nauczysz się, jak zainstalować Blackbox Exporter na systemach CentOS/RHEL. Zrozumiesz również, jak efektywnie wykorzystać go w połączeniu z Prometheus i Grafaną, aby śledzić wydajność i dostępność Twojej witryny.

Czym jest Blackbox Exporter?

Blackbox Exporter, stworzony przez Prometheus, jest narzędziem służącym do testowania dostępności różnych punktów końcowych, takich jak HTTPS, HTTP, TCP, DNS czy ICMP. Po skonfigurowaniu docelowego punktu, Blackbox Exporter generuje szeroki wachlarz metryk, które z łatwością można wizualizować w Grafanie. Kluczową cechą tego eksportera jest pomiar czasu odpowiedzi.

Blackbox Exporter to rozwiązanie, które możesz uruchomić samodzielnie. Jeśli natomiast szukasz usługi opartej na chmurze, warto rozważyć Grafana worldPing.

Wymagania wstępne

Aby przejść dalej, musisz mieć już zainstalowane Prometheus i Grafana. Jeśli ich nie masz, skorzystaj z wcześniejszych instrukcji instalacji tych aplikacji.

Proces instalacji Blackbox Exportera

Przejdźmy teraz do samego procesu instalacji Blackbox Exportera.

Krok 1: Pobranie Blackbox Exportera

Odwiedź oficjalną stronę i pobierz najnowszy pakiet Blackbox Exportera dla systemu Linux AMD. W tym przykładzie używam pliku blackbox_exporter-0.16.0.linux-amd64.tar.gz.

  • Po pobraniu, przenieś plik na swój serwer.
  • Następnie rozpakuj zawartość archiwum.
[[email protected] ~]$ tar -xzf blackbox_exporter-0.16.0.linux-amd64.tar.gz

Sprawdźmy, jakie pliki znajdują się w rozpakowanym katalogu Blackbox Exportera.

[[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

W tym zestawie plików kluczowe są `blackbox_exporter` oraz `blackbox.yml`.

  • `blackbox_exporter` to plik wykonywalny, który uruchamia usługę.
  • `blackbox.yml` to plik konfiguracyjny w formacie YAML. Definiuje on wszystkie punkty końcowe, które mają być monitorowane, oraz moduły, które mają być wykorzystane do tego celu.

Uruchomienie poniższego polecenia wyświetli wszystkie możliwe flagi, które możesz wykorzystać z Blackbox Exporterem.

[[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.

Krok 2: Utworzenie użytkownika dla Blackbox

Ten krok jest opcjonalny.

Możesz utworzyć nowego użytkownika dedykowanego dla Blackbox lub użyć istniejącego użytkownika Prometheus.

Konieczne będzie przypisanie praw dostępu i własności do plików nowemu użytkownikowi.

[[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

Krok 3: Konfiguracja usługi Blackbox

Teraz skonfigurujemy Blackbox Exporter jako usługę w systemd. Utwórz plik `blackbox.service`, wklej do niego poniższą konfigurację i zapisz go.

[[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

Pamiętaj, aby dostosować ścieżkę do lokalizacji, w której rozpakowałeś pliki Exportera.

Krok 4: Uruchomienie Blackbox Exportera

Użyj poniższych poleceń, aby uruchomić Blackbox Exporter jako usługę.

[[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 newsblog.pl.linuxvmimages.com systemd[1]: Started Blackbox Exporter Service.
Jun 13 17:28:40 newsblog.pl.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 newsblog.pl.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 newsblog.pl.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 newsblog.pl.linuxvmimages.com blackbox_exporter[30

Gratulacje!

Blackbox Exporter został pomyślnie uruchomiony. Możesz go sprawdzić, odwiedzając adres http://localhost:9115/.

Integracja Blackboxa z Prometheusem

Połączmy teraz Blackbox Exporter z Prometheusem, aby móc zacząć zbierać metryki.

  • W pliku `prometheus.yml` dodaj zadanie `blackbox` z poniższą konfiguracją. Będę monitorować działanie strony 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
  • Po ponownym sprawdzeniu celów w interfejsie Prometheus pod adresem http://localhost:9090/targets, zobaczysz zadanie `blackbox`, które monitoruje skonfigurowany punkt końcowy.

  • Przejdź do zakładki „Graph” i uruchom zapytanie `probe_http_duration_seconds`.

  • Na podstawie danych zebranych przez Prometheus zostanie wygenerowana wizualizacja.

Czas na wizualizację danych Blackboxa w Grafanie.

Najszybszym sposobem na start jest wykorzystanie gotowego panelu nawigacyjnego – Blackbox Exporter for Prometheus.

  • W Grafanie kliknij znak „+”, a następnie „Import”.
  • W sekcji „Import via grafana.com” wpisz identyfikator panelu 7587 i kliknij „Load”.
  • Następnie wybierz źródło danych Prometheus i kliknij „Import”.

  • Panel „Prometheus Blackbox Exporter” zostanie zaimportowany.
  • Teraz możesz wizualizować metryki takie jak globalny czas sondowania, status, czas trwania HTTP, średni czas sondy, średnie wyszukiwanie DNS, ważność SSL i wiele innych.

  • Każdy z tych elementów to osobny panel na pulpicie. Przyjrzyjmy się szczegółowo panelowi „HTTP Duration”. Ten panel przedstawia wizualizację czasu potrzebnego na połączenie, procesowanie, rozwiązywanie, TLS i transfer danych.

Na pulpicie nawigacyjnym masz wiele opcji do wypróbowania. Możesz zmienić zakres czasu, dla którego chcesz wizualizować dane, jak również częstotliwość odświeżania danych – w tym przypadku nowe dane pojawiają się co 5 sekund.

  • Po kliknięciu strzałki w dół przy panelu „HTTP Duration” pojawią się dodatkowe opcje. Kliknij „Edit”.

  • Poniżej panelu wizualizacji znajdziesz edytor zapytań. Obecnie wyświetlana jest wizualizacja dla zapytania `probe_http_duration_seconds`.

  • Istnieje całe mnóstwo dostępnych zapytań, które możesz z łatwością wizualizować i dodawać do pulpitu nawigacyjnego, w zależności od potrzeb.

  • Masz również możliwość zmiany typu wizualizacji. Średni czas trwania sondy prezentowany jest jako tekst. W panelu wizualizacji po prawej stronie, kliknij „Gauge” dla średniego czasu trwania sondy.

  • Wizualizacja zostanie odpowiednio zmieniona.

Podsumowanie

Ten artykuł miał na celu przedstawienie, jak łatwo można monitorować witrynę za pomocą Prometheus Blackbox i Grafany. Zachęcam Cię do eksplorowania wszystkich dostępnych opcji. Jeżeli chcesz zgłębić tajniki Grafany, zerknij na jej kurs online.

Podobał Ci się ten artykuł? Podziel się nim ze światem!