17 Kontrole Prometheus

Przegląd

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

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

  • główna pozycja HTTP wskazująca odpowiedni endpoint danych, np. https://<prometheus host>/metrics
  • pozycje zależne używające opcji preprocessing Prometheus do odpytywania wymaganych danych z metryk zebranych przez główną pozycję

Dostępne są dwie opcje preprocessing 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 niskopoziomowego. W tym przypadku odpytywane dane Prometheus są zwracane w formacie JSON.
Przetwarzanie zbiorcze

Przetwarzanie zbiorcze jest obsługiwane dla zależnych pozycji. Aby włączyć buforowanie i indeksowanie, wstępne przetwarzanie Prometheus pattern musi być pierwszym krokiem wstępnego przetwarzania. Jeśli Prometheus pattern jest pierwszym krokiem wstępnego przetwarzania, przeanalizowane dane Prometheus są buforowane i indeksowane według pierwszego warunku <label>==<value> w kroku wstępnego przetwarzania Prometheus pattern. Ta pamięć podręczna jest ponownie wykorzystywana podczas przetwarzania innych zależnych pozycji w tej partii. 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 wstępne przetwarzanie, należy je przenieść albo do pozycji nadrzędnej, albo do nowej zależnej pozycji, która będzie używana jako pozycja nadrzędna dla zależnych pozycji.

Konfiguracja

Zakładając, że masz skonfigurowaną nadrzędną pozycję HTTP, musisz utworzyć pozycję zależną, która używa kroku preprocessing Prometheus:

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

Następujące parametry są specyficzne dla opcji preprocessing Prometheus pattern:

Parametr Opis Przykłady
Pattern Aby zdefiniować wymagany wzorzec danych, możesz użyć języka zapytań podobnego do języka zapytań Prometheus (zobacz tabelę porównawczą), 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ć dowolną sekwencją znaków UTF-8, ale znaki ukośnika odwrotnego, podwójnego cudzysłowu i znaku nowej linii muszą być poprzedzone znakiem ucieczki jako \\, \" i \n; pozostałe znaki nie powinny być poprzedzane znakiem ucieczki.
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 ma zostać zwrócona wartość, etykieta, czy ma zostać zastosowana odpowiednia funkcja (jeśli wzorzec pasuje do kilku wierszy i wynik wymaga agregacji):
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 poniższe przykłady użycia parametrów.
Output Zdefiniuj nazwę etykiety (opcjonalnie). W takim przypadku zostanie zwrócona wartość odpowiadająca nazwie etykiety.
To pole jest dostępne tylko dla opcji Prometheus pattern, jeśli w polu Result processing wybrano '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ć także 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 tylko dane liczbowe, popularne jest stosowanie obejścia, które pozwala również zwrócić odpowiedni opis tekstowy. Można to osiągnąć za pomocą filtra i określenia etykiety. Tak więc, 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, a etykieta zwróci opis stanu kondycji (obecnie 'green', ale potencjalnie także 'red' lub 'yellow').

Prometheus do JSON

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

Aby uzyskać więcej informacji, zobacz Wykrywanie przy użyciu danych Prometheus.

Porównanie języków zapytań

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

Selektor wektora chwilowego PromQL Wstępne przetwarzanie Prometheus w Zabbixie
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 do JSON)
Operatory dopasowania etykiet =, !=, =\~, !\~ =, !=, =\~, !\~
Wyrażenie regularne używane przy dopasowaniu etykiety lub nazwy metryki RE2 PCRE
Operatory porównania Zobacz listę Do filtrowania wartości obsługiwany jest tylko operator == (równe)
Podobieństwa
Wybór według nazwy metryki równej ciągowi znaków <metric name> lub {__name__="<metric name>"} <metric name> lub {__name__="<metric name>"}
Wybór według nazwy metryki pasującej do wyrażenia regularnego {__name__=\~"<regex>"} {__name__=\~"<regex>"}
Wybór według wartości <label name> równej ciągowi znaków {<label name>="<label value>",...} {<label name>="<label value>",...}
Wybór według wartości <label name> pasującej do wyrażenia regularnego {<label name>=\~"<regex>",...} {<label name>=\~"<regex>",...}
Wybór według wartości równej ciągowi znaków {__name__=\~".*"} == <value> {__name__=\~".*"} == <value>