Вопрос или проблема
Я пытаюсь настроить триггер Zabbix для внешней проверки, который должен срабатывать, если значение, возвращаемое внешней проверкой, отличается от:
Slave_SQL_Running: Yes
Replication running
Connection to host.com closed.
Использование {db2.playtech.ru.com:mysql_replica_check.sh.last(60)}<>expression
вызывает синтаксическую ошибку.
Есть ли способ настроить этот триггер в Zabbix?
В этом случае, функция триггера str()
будет лучшим выбором:
{db2.playtech.ru.com:mysql_replica_check.sh.str(string)}=0
Ответ или решение
Вам нужно настроить триггер в Zabbix для внешней проверки, чтобы он срабатывал, когда значение, возвращаемое этой проверкой, отличается от заданного текста. В данном случае вы хотите, чтобы триггер срабатывал, если возвращаемое значение не соответствует строке:
Slave_SQL_Running: Yes
Replication running
Connection to host.com closed.
Для реализации этой задачи в Zabbix лучше всего использовать функцию str()
, которая позволяет проверить, встречается ли определённая подстрока в возвращаемом значении.
Вот шаги, которые нужно выполнить:
-
Создайте элемент данных, который будет выполнять вашу внешнюю команду. Примером такого элемента может быть
mysql_replica_check.sh
, который вы уже упомянули. -
Затем вы можете настроить триггер, который будет проверять результат. В вашем случае, чтобы проверить, чтобы возвращаемое значение не содержало определённые строки, попробуйте использовать следующую формулу:
{db2.playtech.ru.com:mysql_replica_check.sh.str("Slave_SQL_Running: Yes")}=0
Это выражение будет срабатывать, если строка "Slave_SQL_Running: Yes" не содержится в выводе скрипта. Если вы хотите проверять другие строки, просто добавьте аналогичные выражения или измените строку на ту, которая вам нужна.
- Для более сложной проверки вы можете использовать несколько триггеров или объединить условия с помощью
or
/and
, в зависимости от ваших требований.
В качестве примера, если вы хотите удостовериться, что ни одна из строк не появляется в выводе, вы можете создать несколько отдельных триггеров для каждого необходимого условия.
Таким образом, ваше полное выражение для триггера может выглядеть примерно так:
{db2.playtech.ru.com:mysql_replica_check.sh.str("Slave_SQL_Running: Yes")}=0 and
{db2.playtech.ru.com:mysql_replica_check.sh.str("Replication running")}=0 and
{db2.playtech.ru.com:mysql_replica_check.sh.str("Connection to host.com closed.")}=0
Этот триггер будет активироваться, если хотя бы одно из условий, указанных в триггере, не будет выполнено.
Таким образом, используя функцию str()
и правильные выражения, вы сможете настроить триггер так, чтобы он реагировал на ненадлежащие состояния вашей репликации в MySQL.