1 Sprawdzenie Prometheusa

Przegląd

Zabbix może odpytywać metryki udostępniane w formacie liniowym Prometheus.

Aby rozpocząć zbieranie danych Prometheus, wymagane są dwa kroki:

  • główna pozycja HTTP wskazująca na odpowiedni punkt końcowy danych, np. https://<prometheus host>/metrics
  • pozycje zależne korzystające z opcji przetwarzania wstępnego Prometheus do odpytywania wymaganych danych z metryk zebranych przez główną pozycję

Istnieją dwie opcje przetwarzania wstępnego danych Prometheus:

  • Wzorzec Prometheus - używany w zwykłych pozycjach do odpytywania danych Prometheus
  • Prometheus do JSON - używany w zwykłych pozycjach oraz do wykrywania niskiego poziomu. W tym przypadku odpytywane dane Prometheus są zwracane w formacie JSON.
Przetwarzanie zbiorcze

Przetwarzanie zbiorcze jest obsługiwane dla pozycji zależnych. Aby włączyć buforowanie i indeksowanie, preprocessing Prometheus pattern musi być pierwszym krokiem preprocessing. Gdy Prometheus pattern jest pierwszym krokiem preprocessing, przeanalizowane dane Prometheus są buforowane i indeksowane przez pierwszy warunek <label>==<value> w kroku preprocessing Prometheus pattern. Ta pamięć podręczna jest ponownie używana podczas przetwarzania innych pozycji zależnych w tym wsadzie. Aby uzyskać optymalną wydajność, pierwsza etykieta powinna być tą, która ma najwięcej różnych wartości.

Jeśli przed pierwszym krokiem trzeba wykonać inne preprocessing, należy go przenieść albo do pozycji głównej, albo do nowej pozycji zależnej, która będzie używana jako pozycja główna dla pozycji zależnych.

Konfiguracja

Zakładając, że skonfigurowano nadrzędną pozycję HTTP, należy utworzyć pozycję zależną, która używa kroku przetwarzania Prometheus:

  • Wprowadź ogólne parametry pozycji zależnej w formularzu konfiguracji
  • Przejdź do zakładki Przetwarzanie wstępne
  • Wybierz opcję przetwarzania wstępnego Prometheus (Prometheus pattern lub Prometheus to JSON)

Poniższe parametry są specyficzne dla opcji przetwarzania wstępnego Prometheus pattern:

Parameter Description Examples
Pattern Aby zdefiniować wymagany wzorzec danych, możesz użyć języka zapytań podobnego do języka zapytań Prometheus (zob. tabela porównawcza), np.:
<metric name> - wybór według nazwy metryki
{__name__="<metric name>"} - wybór według nazwy metryki
{__name__=\~"<regex>"} - wybór według nazwy metryki pasującej do wyrażenia regularnego
{<label name>="<label value>",...} - wybór według nazwy etykiety
{<label name>=\~"<regex>",...} - wybór według nazwy etykiety pasującej do wyrażenia regularnego
{__name__=\~".*"}==<value> - wybór według wartości metryki
Lub kombinację powyższych:
<metric name>{<label1 name>="<label1 value>",<label2 name>=\~"<regex>",...}==<value>

Wartość etykiety może być dowolnym ciągiem znaków UTF-8, jednak znak ukośnika odwrotnego, cudzysłów i znak nowej linii muszą być odpowiednio poprzedzone znakami \\, \" i \n; pozostałych znaków nie należy poprzedzać.
wmi_os_physical_memory_free_bytes
cpu_usage_system{cpu="cpu-total"}
cpu_usage_system{cpu=\~".*"}
cpu_usage_system{cpu="cpu-total",host=\~".*"}
wmi_service_state{name="dhcp"}==1
wmi_os_timezone{timezone=\~".*"}==1
Result processing Określ, czy zwrócić wartość, etykietę, czy zastosować odpowiednią funkcję (jeśli wzorzec pasuje do kilku wierszy i wynik musi zostać zagregowany):
value - zwróć wartość metryki (błąd, jeśli dopasowano wiele wierszy)
label - zwróć wartość etykiety określonej w polu Label (błąd, jeśli dopasowano wiele metryk)
sum - zwróć sumę wartości
min - zwróć wartość minimalną
max - zwróć wartość maksymalną
avg - zwróć wartość średnią
count - zwróć liczbę wartości
To pole jest dostępne tylko dla opcji Prometheus pattern.
Zobacz także przykłady użycia parametrów poniżej.
Output Zdefiniuj nazwę etykiety (opcjonalnie). W takim przypadku zwracana jest wartość odpowiadająca nazwie etykiety.
To pole jest dostępne tylko dla opcji Prometheus pattern, jeśli w polu Result processing wybrano opcję 'Label'.

Przykłady użycia parametrów

  1. Najczęstszym przypadkiem użycia jest zwrócenie wartości. Aby zwrócić wartość /var/db z:

node_disk_usage_bytes{path="/var/cache"} 2.1766144e+09
node_disk_usage_bytes{path="/var/db"} 20480
node_disk_usage_bytes{path="/var/dpkg"} 8192
node_disk_usage_bytes{path="/var/empty"} 4096

użyj następujących parametrów:

  • Pattern - node_disk_usage_bytes{path="/var/db"}
  • Result processing - wybierz 'value'
  1. Możesz być również zainteresowany średnią wartością wszystkich parametrów node_disk_usage_bytes:
  • Pattern - node_disk_usage_bytes
  • Result processing - wybierz 'avg'
  1. Chociaż Prometheus obsługuje wyłącznie dane liczbowe, popularnym obejściem jest zwracanie również odpowiedniego opisu tekstowego. Można to osiągnąć za pomocą filtra i określenia etykiety. Zatem, aby zwrócić wartość etykiety 'color' z

elasticsearch_cluster_health_status{cluster="elasticsearch",color="green"} 1
elasticsearch_cluster_health_status{cluster="elasticsearch",color="red"} 0
elasticsearch_cluster_health_status{cluster="elasticsearch",color="yellow"} 0

użyj następujących parametrów:

  • Pattern - elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
  • Result processing - wybierz 'label'
  • Label - określ 'color'

Filtr (oparty na wartości liczbowej '1') dopasuje odpowiedni wiersz, natomiast etykieta zwróci opis stanu zdrowia (obecnie 'green'; ale potencjalnie także 'red' lub 'yellow').

Prometheus do JSON

Dane z Prometheus mogą być używane do niskopoziomowego wykrywania. W takim przypadku potrzebne są dane w formacie JSON, a opcja wstępnego przetwarzania Prometheus to JSON zwróci dokładnie taki wynik.

Więcej informacji można znaleźć w sekcji Wykrywanie z użyciem danych Prometheus.

Porównanie języka zapytań

Poniższa tabela przedstawia różnice i podobieństwa między PromQL a językiem zapytań przetwarzania wstępnego Zabbix Prometheus.

Selektor wektora chwilowego PromQL Zabbix Prometheus preprocessing
Różnice
Cel zapytania serwer Prometheus Zwykły tekst w formacie ekspozycji Prometheus
Zwraca Wektor chwilowy Wartość metryki lub etykiety (wzorzec Prometheus)
Tablica metryk dla pojedynczej wartości w JSON (Prometheus to JSON)
Operatory dopasowania etykiet =, !=, =\~, !\~ =, !=, =\~, !\~
Wyrażenie regularne używane w dopasowywaniu nazwy etykiety lub metryki RE2 PCRE
Operatory porównania Zobacz listę Obsługiwany jest tylko operator == (równe) do filtrowania wartości
Podobieństwa
Wybieranie według nazwy metryki równej ciągowi znaków <metric name> lub {__name__="<metric name>"} <metric name> lub {__name__="<metric name>"}
Wybieranie według nazwy metryki pasującej do wyrażenia regularnego {__name__=\~"<regex>"} {__name__=\~"<regex>"}
Wybieranie według wartości <label name> równej ciągowi znaków {<label name>="<label value>",...} {<label name>="<label value>",...}
Wybieranie według wartości <label name> pasującej do wyrażenia regularnego {<label name>=\~"<regex>",...} {<label name>=\~"<regex>",...}
Wybieranie według wartości równej ciągowi znaków {__name__=\~".*"} == <value> {__name__=\~".*"} == <value>