2 Makra użytkownika

Omówienie

Makra użytkownika są obsługiwane w Zabbix dla 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ącą kolejnością priorytetów:

  1. Makra na poziomie hosta (sprawdzane jako pierwsze).
  2. Makra zdefiniowane dla szablonów pierwszego poziomu hosta (tj. szablonów podłączonych bezpośrednio do hosta), sortowane według ID szablonu.
  3. Makra zdefiniowane dla szablonów drugiego poziomu hosta, sortowane według ID szablonu.
  4. Makra zdefiniowane dla szablonów trzeciego poziomu hosta, sortowane 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 na coraz większej 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 tego samego poziomu, zostanie użyte makro z szablonu o najniższym ID. Z tego powodu posiadanie makr o tej samej nazwie w wielu szablonach stanowi ryzyko konfiguracji.

Jeśli Zabbix nie może znaleźć makra, makro nie zostanie rozwiązane.

Makra (w tym makra użytkownika) pozostają nierozwiązane w sekcji Konfiguracja (na przykład na liście wyzwalaczy) celowo, aby bardziej przejrzyście przedstawiać złożoną konfigurację.

Makra użytkownika można używać w:

  • nazwie pozycji
  • parametrze klucza pozycji
  • interwałach aktualizacji pozycji i elastycznych interwałach
  • 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 odpowiedniej lokalizacji we frontendzie:

  • W przypadku makr globalnych przejdź do Administracja > Makra.
  • W przypadku 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:

Parameter Description
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 sekretu vault.

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 służące 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 szablonu lub wyzwalaczach, rozważ dodanie tych makr również do szablonu (nawet jeśli są zdefiniowane globalnie); w ten sposób makra typu Text będą działać zgodnie z oczekiwaniami po wyeksportowaniu szablonu do XML i zaimportowaniu go do innego systemu (wartości makr tajnych nie są eksportowane)
  • jeśli makra użytkownika są używane w wyrażeniach wyzwalaczy, zostaną one rozwiązane tylko wtedy, gdy odwołują się do parametru lub stałej; NIE zostaną rozwiązane, jeśli odwołują się do hosta, klucza pozycji, funkcji, operatora lub innego wyrażenia wyzwalacza (makr tajnych nie można używać 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 być 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 globalny makro {$WORKING_HOURS} o wartości 1-5,09:00-18:00;
  • użyj go w polu Working time w Administration > General > GUI;
  • użyj go w polu When active w Users > Users, na karcie 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 czas pracy w Administration > Macros.
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.