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

Общие сведения о syslog conf - нацеливание на определенные типы / теги журналов

Я объединяю файлы журналов из нескольких контейнеров докеров на моем хосте и отправляю им удаленную службу ведения журнала. Я просто перенаправляю вывод в регистратор и помечаю его:

docker-compose logs 2>&1 | logger -t deviant

Это легко настроить с помощью:

*.*  @remote_service:remote_port

Тем не мение, *.* соответствует всем типам журналов с моего хост-компьютера, когда я хочу отправлять только перенаправленные журналы в удаленную службу.

Вот пример журнала, который я хочу сохранить:

Apr 08 08:55:04 calvin.local deviant:  proxy_1 | 192.168.59.3 - - [08/Apr/2015:15:55:04 +0000] "stuff here"

Обратите внимание, что он содержит calvin.local deviant

Те, которые содержат deviant единственные, кого я хочу. Я попытался указать, какие записи журнала такие:

*deviant*

... и перезапустил ведение журнала ... но я все еще вижу все записи (а не только помеченные deviant) в моих удаленных журналах. Зачем?

В syslog.conf вы можете назначить действие только в соответствии с данным средством и уровнем сообщения.

Тег, указанный logger -t [tag] не может использоваться для идентификации сообщения системным журналом. Однако вы могли бы использовать -p [facility.level]' вариант logger для установки собственного объекта и уровня, например:

logger -t deviant -p local3.info

Затем в syslog.conf вы можете перехватить и перенаправить эти сообщения:

local3.info  @remote_service:remote_port

Попробуйте найти объект, который не используется другими службами. Хороший выбор будет одним из local0 к local7.

Когда вы указываете уровень, например info, по умолчанию это означает минимальный уровень, которому будет соответствовать правило.

Читать далее: