Makra użytkownika
Omówienie
Makra użytkownika są obsługiwane w Zabbix w celu zapewnienia większej elastyczności, oprócz makr obsługiwanych standardowo.
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:
- Makra na poziomie hosta (sprawdzane jako pierwsze).
- Makra zdefiniowane dla szablonów pierwszego poziomu hosta (tj. szablonów bezpośrednio powiązanych z hostem), posortowane według identyfikatora szablonu.
- Makra zdefiniowane dla szablonów drugiego poziomu hosta, posortowane według identyfikatora szablonu.
- Makra zdefiniowane dla szablonów trzeciego poziomu hosta, posortowane według identyfikatora szablonu itd.
- Makra globalne (sprawdzane jako ostatnie).
Innymi słowy, jeśli makro nie istnieje dla hosta, Zabbix spróbuje znaleźć je w szablonach hosta, zwiększając poziom zagnieżdżenia. Jeśli nadal nie zostanie znalezione, zostanie użyte makro globalne, jeśli istnieje.
Jeśli makro o tej samej nazwie istnieje w wielu powiązanych szablonach tego samego poziomu, zostanie użyte makro z szablonu o najniższym identyfikatorze. Dlatego używanie makr o tej samej nazwie w wielu szablonach stanowi ryzyko związane z konfiguracją.
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), aby zgodnie z założeniami ułatwić przejrzyste przedstawianie 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 i stałych wyrażenia wyzwalacza (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 w frontend:
- Dla makr globalnych wybierz 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:

| 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: Tekst (domyślnie) - wartość w postaci zwykłego tekstu Tajny tekst - wartość jest maskowana gwiazdkami Sekret z vault - wartość zawiera ścieżkę/zapytanie do sekretu z 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 Tekst 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, 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 (tajnych makr nie można używać w wyrażeniach wyzwalaczy)
- jeśli makra użytkownika są używane na hoście, który ma regułę niskopoziomowego wykrywania 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}]
Tę pozycję można przypisać 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 procesora 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, tak jak w tym przykładzie: SOME_PERIOD => #3.
Przykład 3
Użycie dwóch makr w wyzwalaczu „Obciążenie procesora jest zbyt wysokie”:
min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
Należy pamiętać, że makro może być używane jako parametr funkcji wyzwalacza, w tym przykładzie funkcji min().
Przykład 4
Synchronizowanie warunku niedostępności agent 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 agent:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
Przykład 5
Centralizacja konfiguracji godzin pracy:
- utwórz globalne makro
{$WORKING_HOURS}o wartości1-5,09:00-18:00; - użyj go w polu Czas pracy w sekcji Administracja > Ogólne > GUI;
- użyj go w polu Kiedy aktywne w sekcji Użytkownicy > Użytkownicy, na karcie Media użytkownika;
- użyj go do skonfigurowania częstszego odpytywania pozycji w godzinach pracy:

- użyj go w warunku działania Okres;
- w razie potrzeby dostosuj czas pracy w sekcji Administracja > Makra.
Przykład 6
Użyj makra prototypu hosta, aby skonfigurować pozycje dla wykrytych hostów:
- W prototypie hosta zdefiniuj makro użytkownika
{$SNMPVALUE}, używając makra wykrywania niskopoziomowego{#SNMPVALUE}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.