syslog-ng

Логи интересной мне программы по-умолчанию идут в /var/log/messages, но я хочу это изменить, т.к. в этот файл идёт много всего. Кроме того, туда попадают не все логи, а только определённого в конфиге syslog-а типа.

Направить логи от определённой программы в другой файл:

destination dest_myprog { file("/var/log/myprog.log"); };

filter filter_myprog { program("myprog"); };

log { source(s_sys); filter(filter_myprog); destination(dest_myprog); };


Направить логи от определённой программы на другой syslog-сервер:
destination dest_myserver { udp("10.1.1.1" port(514)); };

filter filter_myprog { program("myprog"); };

log { source(s_sys); filter(filter_myprog); destination(dest_myserver); };


Ну и комбинированный вариант — направить логи от определённой программы и в отдельный файл, и на другой syslog-сервер:
destination dest_myprog { file("/var/log/myprog.log"); };
destination dest_myserver { udp("10.1.1.1" port(514)); };

filter filter_myprog { program("myprog"); };

log { source(s_sys); filter(filter_myprog); destination(dest_myprog); destination(dest_myserver); };


Если те же логи в файле messages уже не нужны, то добавим их исключение в существующий фильтр, который используется для сохранения логов в этот файл:
filter f_default    { level(info..emerg) and
                        not (facility(mail)
                        or facility(authpriv)
                        or facility(cron))
                        and not program("myprog");
                    };


Конечно после изменений надо дать syslog-ng команду перечитать конфиг:
systemctl reload syslog-ng

Juniper: Мелочи

Включать в лог название категории (Facility) и уровень детальности (Severity):
set system syslog host syslog.tld.kg explicit-priority


Вот уровни детальности:
0 emergency
1 alert
2 critical
3 error
4 warning
5 notice
6 info
7 any

Пример:
Jul 10 19:45:07 212.42.96.132 mx inetd[12468]: %DAEMON-4: /usr/sbin/sshd[97698]: exited, status 255

Регулярные выражения

Понятно, что можно использовать регулярные выражения при выборке из какого-либо вывода через команду match, например:
user@juniper> show interfaces xe-2/3/3 | match "Input|Output"
  Input rate     : 0 bps (0 pps)
  Output rate    : 0 bps (0 pps)


Но регулярные выражения можно использовать и в самих командах, например:
user@juniper> show interfaces xe-[23]/3/[01] terse
Interface               Admin Link Proto    Local                 Remote
xe-2/3/0                up    down
xe-2/3/1                up    down
xe-3/3/0                up    down
xe-3/3/1                up    down


Информация о трансивере, например, уровень приёма:
show interfaces diagnostics optics xe-2/0/1