2 Makra użytkownika

Przegląd

Makra użytkownika są obsługiwane w Zabbix w celu zapewnienia większej elastyczności, oprócz makr obsługiwanych domyślnie.

Makra użytkownika można definiować na poziomie globalnym, szablonu i hosta. Makra te mają specjalną składnię:

{$MACRO}

Zabbix rozwiązuje makra zgodnie z następującym priorytetem:

  1. makra na poziomie hosta (sprawdzane jako pierwsze)
  2. makra zdefiniowane dla szablonów pierwszego poziomu hosta (tj. szablonów połączonych bezpośrednio z hostem), posortowane według ID szablonu
  3. makra zdefiniowane dla szablonów drugiego poziomu hosta, posortowane według ID szablonu
  4. makra zdefiniowane dla szablonów trzeciego poziomu hosta, posortowane według ID szablonu itd.
  5. makra globalne (sprawdzane jako ostatnie)

Innymi słowy, jeśli makro nie istnieje dla hosta, Zabbix spróbuje znaleźć je w szablonach hosta o rosnącej głębokości. Jeśli nadal nie zostanie znalezione, zostanie użyte makro globalne, jeśli istnieje.

Jeśli makro o tej samej nazwie istnieje w wielu podłączonych szablonach na tym samym poziomie, zostanie użyte makro z szablonu o najniższym ID. Oznacza to, że posiadanie makr o tej samej nazwie w wielu szablonach stanowi ryzyko konfiguracyjne.

Jeśli Zabbix nie będzie w stanie znaleźć makra, makro nie zostanie rozwiązane.

Makra (w tym makra użytkownika) celowo pozostają nierozwiązane w sekcji Konfiguracja (na przykład na liście wyzwalaczy), aby zwiększyć przejrzystość złożonej konfiguracji.

Makra użytkownika mogą być używane w:

  • nazwie pozycji
  • parametrze klucza pozycji
  • interwałach aktualizacji pozycji i interwałach elastycznych
  • nazwie i opisie wyzwalacza
  • parametrach wyrażenia wyzwalacza i stałych (zobacz przykłady)
  • wielu innych miejscach — zobacz pełną listę
Typowe przypadki użycia makr globalnych i makr hosta
  • użycie makra globalnego w kilku miejscach; następnie zmiana wartości makra i zastosowanie zmian konfiguracji we wszystkich miejscach jednym kliknięciem
  • wykorzystanie szablonów z atrybutami specyficznymi dla hosta: hasła, numery portów, nazwy plików, wyrażenia regularne itp.

Zaleca się używanie makr hosta zamiast makr globalnych, ponieważ dodawanie, aktualizowanie lub usuwanie makr globalnych wymusza przyrostową aktualizację konfiguracji dla wszystkich hostów. Więcej informacji można znaleźć w sekcji Passive and active agent checks.

Konfiguracja

Aby zdefiniować makra użytkownika, przejdź do odpowiedniego miejsca we frontend:

  • dla makr globalnych przejdź do Administracja → Makra
  • dla makr na poziomie hosta i szablonu otwórz właściwości hosta lub szablonu i znajdź kartę Makra

Makro użytkownika ma następujące atrybuty:

Parametr Opis
Macro Nazwa makra. Nazwa musi być ujęta w nawiasy klamrowe i zaczynać się od znaku dolara.
Przykład: {$FRONTEND_URL}. W nazwach makr dozwolone są następujące znaki: A-Z (tylko wielkie litery), 0-9, _, .
Value Wartość makra. Obsługiwane są trzy typy wartości:
Text (domyślnie) — wartość w postaci zwykłego tekstu
Secret text — wartość jest maskowana gwiazdkami
Vault secret — wartość zawiera ścieżkę/zapytanie do vault secret.

Aby zmienić typ wartości, kliknij przycisk na końcu pola wprowadzania wartości.

Maksymalna długość wartości makra użytkownika wynosi 2048 znaków.
Description Pole tekstowe używane do podania dodatkowych informacji o tym makrze.

Podczas konfigurowania makr użytkownika zwróć uwagę na następujące zachowania zależne od kontekstu:

  • jeśli makra użytkownika są używane w pozycjach lub wyzwalaczach szablonu, rozważ dodanie tych makr również do szablonu (nawet jeśli są zdefiniowane globalnie); dzięki temu makra typu Text będą działać zgodnie z oczekiwaniami po wyeksportowaniu szablonu do XML i zaimportowaniu go do innego systemu (wartości tajnych makr nie są eksportowane)
  • jeśli makra użytkownika są używane w wyrażeniach wyzwalaczy, te makra zostaną rozwinięte tylko wtedy, gdy odwołują się do parametru lub stałej; NIE zostaną rozwinięte, jeśli odwołują się do hosta, klucza pozycji, funkcji, operatora lub innego wyrażenia wyzwalacza (tajne makra nie mogą być używane w wyrażeniach wyzwalaczy)
  • jeśli makra użytkownika są używane na hoście, który ma regułę wykrywania niskiego poziomu z prototypami hostów, wykryte hosty odziedziczą wszystkie makra użytkownika zdefiniowane na tym hoście

Przykłady

Przykład 1

Użycie makra na poziomie hosta w kluczu pozycji „Status demona SSH”:

net.tcp.service[ssh,,{$SSH_PORT}]

Ta pozycja może zostać przypisana do wielu hostów, pod warunkiem że wartość {$SSH_PORT} jest zdefiniowana na tych hostach.

Przykład 2

Użycie makra na poziomie hosta w wyzwalaczu „Obciążenie CPU jest zbyt wysokie”:

last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}

Taki wyzwalacz zostałby utworzony w szablonie, a nie edytowany na poszczególnych hostach.

Jeśli chcesz użyć liczby wartości jako parametru funkcji (na przykład max(/host/key,#3)), uwzględnij znak hash w definicji makra w ten sposób: SOME_PERIOD => #3

Przykład 3

Użycie dwóch makr w wyzwalaczu „Obciążenie CPU jest zbyt wysokie”:

min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}

Zwróć uwagę, że makro może być użyte jako parametr funkcji wyzwalacza, w tym przykładzie funkcji min().

Przykład 4

Zsynchronizuj warunek niedostępności agenta z interwałem aktualizacji pozycji:

  • zdefiniuj makro {$INTERVAL} i użyj go w interwale aktualizacji pozycji;
  • użyj {$INTERVAL} jako parametru wyzwalacza niedostępności agenta:

nodata(/ca_001/agent.ping,{$INTERVAL})=1

Przykład 5

Scentralizuj konfigurację godzin pracy:

  • utwórz globalne makro {$WORKING_HOURS} o wartości 1-5,09:00-18:00;
  • użyj go w polu Working time w AdministrationGeneralGUI;
  • użyj go w polu When active w UsersUsers, karta Media użytkownika;
  • użyj go do skonfigurowania częstszego odpytywania pozycji w godzinach pracy:

  • użyj go w warunku akcji Time period;
  • w razie potrzeby dostosuj godziny pracy w AdministrationMacros.
Przykład 6

Użyj makra prototypu hosta do skonfigurowania pozycji dla wykrytych hostów:

  • w prototypie hosta zdefiniuj makro użytkownika {$SNMPVALUE} z makrem low-level discovery} jako wartością:

  • przypisz szablon Generic SNMPv2 do prototypu hosta;
  • użyj {$SNMPVALUE} w polu SNMP OID pozycji szablonu Generic SNMPv2.

Kontekst makra użytkownika

Zobacz makra użytkownika z kontekstem.