У меня есть интерфейс, который при отключении выдает сигналы тревоги каждые 60 секунд.
ОШИБКА: Соединение FOO не работает
Мой rsyslogd рассылает спам нижестоящим агентам SNMP. Чтобы избежать этого, я хочу отправлять только при тревоге, когда соединение ВЫКЛЮЧАЕТСЯ. Достаточно просто, вы можете сказать, просто используйте action.execOnlyOnceEveryInterval.
Но хитрость в том, что после восстановления соединения ...
ВНИМАНИЕ: Соединение FOO работает.
... Я хочу сбросить это состояние, так что как только он снова отключается, я немедленно регистрирую / передаю повторное появление состояния DOWN.
Я вижу локальные переменные в RainerScript, но это бесполезно. Мне нужны глобальные переменные для сохранения состояния между сообщениями.
Справка?
Если вы используете 7.5.6 или новее, вы можете использовать mmsequence следующим образом:
module(load="mmsequence")
if ($programname == "myprog") and ($msg contains "Bad Conn1")
then {
action(
type="mmsequence"
mode="key"
key="connection1"
step="1"
var="$!counter1"
)
if ($!counter1 > 1) then stop;
}
if ($programname == "myprog") and ($msg contains "Good Conn1")
then {
action(
type="mmsequence"
mode="key"
key="connection1"
step="1"
to="1"
var="$!counter1"
)
}
Обратите внимание, что mmsequence отмечен как «устаревший» в rsyslog v8. В документации указано, что вместо этого вы должны использовать «глобальные переменные». Однако поиск в документации по глобальным переменным не дает никакой информации о том, как можно использовать эти мифические «глобальные переменные».