我有一个接口,当断开连接时每 60 秒发出一次警报。
ERROR: Connection FOO is DOWN
我的 rsyslogd 正在向下游 SNMP 代理发送垃圾邮件。为了避免这种情况,我希望仅在连接断开时发送警报。您可能会说这很简单,只需使用 action.execOnlyOnceEveryInterval 即可。
但诀窍在于,一旦连接恢复……
NOTICE: Connection FOO is UP.
...我想重置该状态,以便一旦它再次发生故障,我就会立即记录/中继 DOWN 状态的再次发生。
我在 RainerScript 中看到了局部变量,但那没用。我需要全局变量来保留消息之间的状态。
帮助?
答案1
如果您使用的是 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 中被标记为“已弃用”。文档指出您应该改用“全局变量”。但是,在文档中搜索全局变量并没有提供关于如何使用这些神秘的“全局变量”的信息。