#syslog-ng
#syslog-ng
Вопрос:
Мы используем syslog-ng для записи показателей. Мы используем systemd journal для ведения журнала, мы добавили метрики как часть журналов, а затем отфильтровали, добавив фильтр в /etc/syslog-ng.conf . Это работало хорошо, но для определенного процесса, но если процесс отправляет больше журнала, из-за ограничения скорости подавления журналов по умолчанию, установленного systemd, мы также отбрасывали метрики. Мы не хотим изменять ограничение скорости подавления журналов, поскольку это может повлиять на процессор и производительность. С другой стороны, мы даже не хотели терять метрики.
Интересно, есть ли какой-нибудь способ добавить какой-нибудь пользовательский источник в syslog-ng для этого варианта использования.
Ответ №1:
Отвечая на мой собственный вопрос, пришлось пройти через несколько мест, затем выяснил, что в syslog-ng мы можем добавить некоторый пользовательский источник и использовать его для нашего использования.
Added following to default /etc/syslog-ng.conf
source metrics {
unix-dgram("/run/metrics" flags(no-parse));
# We can use stream socket as well
};
destination metrics_priority_normal {
file("/var/metrics/metrics_priority_normal" template("$MSGn"));
};
log {
source(metrics);
filter { match("MetricPriority=NORMAL") };
destination(metrics_priority_normal);
};
Syslog-ng во время запуска создаст сокет unix в /run/metrics, и мы сможем напрямую регистрировать метрики там, которые будут перенаправлены в /var/metrics/metrics_priority_normal
Пример создания клиентского сокета: https://man7.org/linux/man-pages/man7/unix.7.html
syslog-ng заботится о сокете сервера.
Можно добавить различные другие фильтры — это детали: https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.16/administration-guide#TOPIC-956384