[comment]: # (tags: trigger)

[comment]: # ({e02835c7-e02835c7})
# 3 Wyzwalacze

[comment]: # ({/e02835c7-e02835c7})

[comment]: # ({f28c289a-d4a1b8b6})
#### Przegląd

Wyzwalacze są logicznymi wyrażeniami, które "oceniają" dane zebrane przez pozycje
i reprezentują bieżący stan systemu.

Podczas gdy pozycje służą do zbierania danych systemowych, śledzenie tych danych przez cały czas w oczekiwaniu na warunek alarmowy
lub wymagający uwagi jest bardzo niepraktyczne. Zadanie "oceniania" danych można pozostawić wyrażeniom wyzwalaczy.

Wyrażenia wyzwalaczy pozwalają zdefiniować próg określający, jaki stan danych jest "akceptowalny". Dlatego jeśli napływające dane przekroczą akceptowalny
stan, wyzwalacz zostaje "uruchomiony" - lub zmienia swój status na PROBLEM.

Wyzwalacz może mieć następujący status:

|Status|Opis|
|-----|-----------|
|OK|To jest normalny status wyzwalacza.|
|Problem|Coś się wydarzyło. Na przykład obciążenie procesora jest zbyt wysokie.|
|Unknown|Nie można obliczyć wartości wyzwalacza. Zobacz [Unknown status](#unknown-status).|

W prostym wyzwalaczu możemy chcieć ustawić próg dla pięciominutniej
średniej jakichś danych, na przykład obciążenia CPU. Osiąga się to przez
zdefiniowanie wyrażenia wyzwalacza, w którym:

-   funkcja 'avg' jest zastosowana do wartości otrzymanej w kluczu pozycji
-   używany jest pięciominutowy okres oceny
-   ustawiony jest próg '2'

```
    avg(/host/key,5m)>2
```

Ten wyzwalacz zostanie "uruchomiony" (stanie się PROBLEM), jeśli pięciominutnia średnia będzie *większa* niż 2.

W bardziej złożonym wyzwalaczu wyrażenie może zawierać **kombinację** wielu funkcji i wielu progów. Zobacz także: [Trigger
expression](/manual/config/triggers/expression).

Nie można tworzyć wyzwalaczy dla pozycji zwracających wartości binarnego [typu danych](/manual/config/items/item#configuration).

[comment]: # ({/f28c289a-d4a1b8b6})

[comment]: # ({b729742d-7c263ca6})
::: notetip
Po włączeniu wyzwalacza (zmianie jego statusu konfiguracji z *Disabled* na *Enabled*) wyrażenie wyzwalacza jest oceniane natychmiast po tym, jak pozycja w nim otrzyma wartość, lub gdy nadejdzie czas obsługi funkcji [date and time](/manual/appendix/functions/time) i/lub [nodata()](/manual/appendix/functions/history#nodata).
:::

[comment]: # ({/b729742d-7c263ca6})

[comment]: # ({4d0d2ac7-a45a4e79})
Większość funkcji wyzwalaczy jest oceniana na podstawie danych wartości pozycji
[history](/manual/config/items/history_and_trends), podczas gdy niektóre
funkcje wyzwalaczy do długoterminowej analityki, np. **trendavg()**,
**trendcount()**, itp., korzystają z danych trendów.

[comment]: # ({/4d0d2ac7-a45a4e79})

[comment]: # ({3296f4fc-6781ee38})
#### Czas obliczeń

Wyzwalacz jest przeliczany za każdym razem, gdy serwer Zabbix otrzyma nową wartość, która jest częścią wyrażenia. Gdy zostanie odebrana nowa wartość, każda funkcja zawarta w wyrażeniu jest przeliczana (nie tylko ta, która otrzymała nową wartość).

Dodatkowo wyzwalacz jest przeliczany za każdym razem, gdy zostanie odebrana nowa wartość, **oraz** co 30 sekund, jeśli w wyrażeniu są używane funkcje [date and time](/manual/appendix/functions/time) i/lub [nodata()](/manual/appendix/functions/history#nodata).

Funkcje [date and time](/manual/appendix/functions/time) i/lub [nodata()](/manual/appendix/functions/history#nodata) są przeliczane co 30 sekund przez proces synchronizacji historii Zabbix.

Wyzwalacze, które odwołują się wyłącznie do funkcji trendów, są oceniane raz na najmniejszy okres czasu w wyrażeniu. Zobacz także [funkcje trendów](/manual/appendix/functions/trends).

[comment]: # ({/3296f4fc-6781ee38})

[comment]: # ({a7542b26-1fa7644e})
#### Okres ewaluacji

Okres ewaluacji jest używany w funkcjach odwołujących się do historii pozycja.
Pozwala określić interesujący nas przedział czasu. Można go
określić jako okres czasu (30s, 10m, 1h) albo jako zakres wartości (\#5 - dla
pięciu najnowszych wartości).

Okres ewaluacji jest liczony do "teraz" - gdzie "teraz" oznacza
najpóźniejszy czas ponownego obliczenia wyzwalacza (zobacz [Czas obliczeń](#calculation-time) powyżej); "teraz" nie oznacza czasu "teraz" serwera.

Okres ewaluacji określa:

-   Wszystkie wartości między "teraz - okres czasu" a "teraz" (lub, po zastosowaniu przesunięcia czasu, między "teraz - przesunięcie czasu - okres czasu" a "teraz - przesunięcie czasu").
-   Określoną liczbę wartości z przeszłości, do "teraz".

Jeśli dla określonego okresu ewaluacji nie istnieją żadne dane, wyzwalacz lub obliczana pozycja używająca tej funkcji staje się nieobsługiwana.

Należy pamiętać, że:

-   Jeśli w wyzwalaczu używana jest tylko jedna funkcja (odwołująca się do historii danych), "teraz" jest zawsze najnowszą otrzymaną wartością. Na przykład, jeśli ostatnia wartość została odebrana godzinę temu, okres ewaluacji będzie traktowany jako sięgający do najnowszej wartości sprzed godziny.
-   Nowy wyzwalacz jest obliczany natychmiast po otrzymaniu pierwszej wartości (funkcje historii); zostanie obliczony w ciągu 30 sekund dla funkcji [date and time](/manual/appendix/functions/time) oraz [nodata()](/manual/appendix/functions/history#nodata). W związku z tym wyzwalacz zostanie obliczony nawet wtedy, gdy ustawiony okres ewaluacji (na przykład jedna godzina) jeszcze nie upłynął od utworzenia wyzwalacza. Wyzwalacz zostanie również obliczony po otrzymaniu pierwszej wartości, nawet jeśli zakres ewaluacji został ustawiony na przykład na dziesięć najnowszych wartości.

[comment]: # ({/a7542b26-1fa7644e})

[comment]: # ({53f36bf7-cad1df72})
#### Nieznany status

Możliwe jest, że w wyrażeniu wyzwalacza pojawi się nieznany operand, jeśli:

-   użyto nieobsługiwanej pozycji
-   ocena funkcji dla obsługiwanej pozycji zakończy się błędem

W takim przypadku wyzwalacz zazwyczaj przyjmuje wartość "unknown" (choć istnieją pewne wyjątki). Więcej informacji można znaleźć w sekcji [Wyrażenia z nieznanymi operandami](/manual/config/triggers/expression#expressions-with-unknown-operands).

Możliwe jest [otrzymywanie powiadomień](/manual/config/events/sources#internal-events) o nieznanych wyzwalaczach.

[comment]: # ({/53f36bf7-cad1df72})
