Назад | Перейти на главную страницу

Как игнорировать сообщения Smartd в rsyslog

Есть ли способ, которым сервер Rsyslog регистрирует все сообщения, кроме сообщений smartd. Я только хочу, чтобы «нечитаемые в настоящее время (ожидающие) сектора» не регистрировались.

Да, есть. Правило, которое регистрирует эти сообщения, должно быть внутри фильтра, например этого: (Предположим, что сообщения smartd регистрируются в /var/log/smartd.log)

if ($programname == "smartd") then {
  if not ($msg contains "Currently unreadable (pending) sectors") then {
    *.* /var/log/smartd.log
  }
  stop
}

Приведенный выше код будет соответствовать всем сообщениям от службы smartd. Если в сообщении нет этой строки, оно будет записывать все сообщения в /var/log/smartd.log, но если оно содержит эту строку, оно не будет регистрироваться. Все журналы после этого момента будут отброшены правилом остановки.

Вы можете поместить этот фрагмент кода в файл в /etc/rsyslog.d/ с расширением .conf, например 01-smartd.conf. Поскольку rsyslog.conf загружает все файлы в этом каталоге, которые заканчиваются на .conf, файлы, начинающиеся с 00 между 49, будут прочитаны первыми, чем файл по умолчанию, 50-default.conf.

Обратите внимание, что с правилом остановки в коде, если оно будет прочитано первым, сообщения не попадут в правила в 50-default.conf, поэтому дублирующихся сообщений не будет.