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
- Najczęstszym przypadkiem użycia jest zwrócenie wartości. Aby zwrócić
wartość
/var/dbz:
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'
- 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'
- 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> |