Сбор логов с роутеров Keenetic и OpenWrt для Grafana
В роутерах Keenetic и OpenWrt есть встроенная возможность пересылать журнал логов на удаленный сервер с использованием Sysylog. Данный функционал можно удобно использовать для организации мониторинга роутера по логам с использованием Grafana.
Для организации сбора и обработки логов используется связка Grafana Loki + Alloy . Для сбора используется компонента syslog
.
Настройка сбора логов через Alloy
Общий файл конфигурации:
В текущей версии Alloy прием компонентой syslog
поддерживает только формат rfc5424
. Данный формат можно переопределить параметром syslog_format
но он не работает в текущей версии.
Описание компоненты: alloy/docs/sources/reference/components/loki/loki.source.syslog.md at main · grafana/alloy · GitHub
Документация: loki.source.syslog | Grafana Alloy documentation
Настройка rsyslog
Для обхода проблемы форматов можно использовать rsyslog как преобразователь логов с дальнейшей пересылкой в Alloy.
Для этого необходимо создать файл /etc/rsyslog.d/keenetik.conf
со следующим содержимым:
# Load the necessary modules
module(load="imuxsock") # local system logging
module(load="imudp") # UDP logging
input(type="imudp" port="514")
module(load="imtcp") # TCP logging
input(type="imudp" port="514")
# Forward everything to the remote server
*.* action(type="omfwd"
protocol="tcp"
target="192.168.0.135"
port="1514"
Template="RSYSLOG_SyslogProtocol23Format"
TCP_Framing="octet-counted"
KeepAlive="on"
action.resumeRetryCount="-1"
queue.type="linkedlist"
queue.size="50000")
Перезапустить сервис:
sudo systemctl restart rsyslog
sudo systemctl status rsyslog
Таким образом все собранные логи от роутера на порту 514/UDP
будут переправлять на порт 1514
по протоколу tcp
на сервер 192.168.0.135
. Можно запустить на том же сервере где работает и Alloy.
Дополнительная настройка Loki не требуется, он должен быть доступен для Grafana и Alloy.
Настройка роутера Keenetic
На роутере необходимо включить передачу логов на удаленный сервер в настройках Управление
-> Диагностика
-> Системный журнал
-> Использовать Syslog
Указанный сервер должен принимать логи на 514 порту по UDP протоколу.
Keenetik передает логи в формате rfc3164
, не все программы сбора данных по умолчанию работают с устаревшим форматом.
Подробная настройка роутера для других программ: Saving system event logs to a Syslog server – Keenetic
Доработанный дашборд для grafana:
![[GrafanaKeenetic and Logs.json]]
Настройка роутера OpenWrt
На роутере необходимо указать сервер удаленного журналирования. Для этого надо зайти Система
-> Журналирование
Доработанный дашборд для grafana:
![[OpenWRT and Logs.json]]