[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 zbierane przez pozycje
i reprezentują bieżący stan systemu.

Chociaż pozycje służą do zbierania danych systemowych, śledzenie tych danych przez cały czas w oczekiwaniu na warunek, który jest alarmujący
lub wymaga uwagi, jest bardzo niepraktyczne. Zadanie "oceny" 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" - albo 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ęciominutowej
średniej pewnych 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ęciominutowa ś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: [Wyrażenie wyzwalacza](/manual/config/triggers/expression).

Nie można tworzyć wyzwalaczy dla pozycji zwracających wartości binarne [data type](/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 otrzymaniu wartości przez pozycję w nim zawartą 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 wyzwalacza jest oceniana na podstawie danych wartości pozycji
[history](/manual/config/items/history_and_trends), podczas gdy niektóre
funkcje wyzwalacza do długoterminowej analityki, np. **trendavg()**,
**trendcount()**, itp., używają 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 uwzględniona 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 [data i czas](/manual/appendix/functions/time) i/lub [nodata()](/manual/appendix/functions/history#nodata).

Funkcje [data i czas](/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że być
określony jako okres czasu (30s, 10m, 1h) lub jako zakres wartości (\#5 - dla
pięciu najnowszych wartości).

Okres ewaluacji jest liczony do "teraz" - gdzie "teraz" to
najnowszy czas ponownego obliczenia wyzwalacza (zobacz [Czas obliczeń](#calculation-time) powyżej); "teraz" nie oznacza czasu "teraz" na
serwerze.

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 korzystająca z 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 obejmujący najnowszą wartość 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 momentu 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})
