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: Мелочи

syslog

Включать в лог название категории (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 configuration vlans | display set | match " (6|10|50|250|500)$"


А может, выбрать строки, начинающиеся с четырёх шестнадцатиричных значений (ipv6-пиры):
show bgp summary | match "^[0-9a-f]{4}"

Или вот так:
show bgp summary | match "^[0-9a-f]+:"


Состояния определённых интерфейсов:
show interfaces  terse | match "xe-(1/2/0|1/3/0|2/1/3|2/2/1|2/3/0)"   
xe-1/2/0                up    down
xe-1/3/0                up    up
xe-2/1/3                up    down
xe-2/2/1                up    down
xe-2/3/0                up    up


Однако, регулярные выражения можно использовать и в самих командах, например:
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


Или вот так:
user@juniper> show interfaces ge-0/0/4[1-5] descriptions     
Interface       Admin Link Description
ge-0/0/41                  RESERVED
ge-0/0/42       up    up   Computer-1
ge-0/0/43       up    up   Computer-2
ge-0/0/45       up    up   Router-1


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


Копирование файлов из одного Routing Engine в другой

У каждого Routing Engine свои диски, так что все изменения с файлами, которые мы делаем на мастере, отсутствуют на бэкапе.

Перейти в _другой_ RE можно при помощи вот этой команды:
request routing-engine login other-routing-engine
Или же можно явным образом указать master или backup:
request routing-engine login master
request routing-engine login backup

Работать с файлами из cli можно, хоть и не очень удобно, например, вот так я создал папку на бэкапе и скопировал туда файлы с мастера:
file make-directory re1:/var/home/test/bin
file copy /var/home/test/bin/* re1:/var/home/test/bin