Роутеры Keenetic умеют отправлять системные логи по протоколу syslog. Эти сообщения можно принимать на локальном сервере и сохранять в отдельный файл. Дальше — с помощью Promtail пересылать их в Grafana Loki, где удобно работать с логами.
В этой инструкции показано, как:
1. Настроить rsyslog для приёма логов от роутера Keenetic.
2. Сконфигурировать Promtail для передачи этих логов в Loki.
*Используемая ОС — Ubuntu 24.04
Шаг 1. Настройка rsyslog
Установим rsyslog:
sudo apt install rsyslog
Откроем конфиг /etc/rsyslog.conf и добавим строки:
module(load="imudp")
input(type="imudp" port="514")
if ($fromhost-ip == '192.168.0.1') then /var/log/keenetic.log
& stop
Разбор конфига
1. module(load=»imudp»)
Загружает модуль для приёма логов по UDP. Без него rsyslog не будет слушать сеть.
2. input(type=»imudp» port=»514″)
Открывает порт 514 (стандартный для syslog) для входящих UDP-сообщений.
3. if ($fromhost-ip == ‘192.168.0.1’) then /var/log/keenetic.log
Правило фильтрации: если источник лога — Keenetic (IP 192.168.0.1), пишем его в файл /var/log/keenetic.log.
4. & stop
Останавливает дальнейшую обработку этого сообщения. Благодаря этому логи Keenetic не попадут в общие системные логи.
Шаг 2. Настройка Promtail
Устанавливаем Promtail
Пример конфига promtail-config.yaml:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://<LOKI IP>:3100/loki/api/v1/push
scrape_configs:
- job_name: keenetic
static_configs:
- targets:
- localhost
labels:
job: keenetic
host: keenetic-router
__path__: /var/log/keenetic.log
Разбор конфига
1. server
http_listen_port: 9080 — порт для health-check и метрик.
grpc_listen_port: 0 — gRPC отключён.
2. positions
filename: /tmp/positions.yaml — файл, где Promtail хранит позицию чтения, чтобы не перечитывать логи заново после перезапуска.
3. clients
url: http://:3100/loki/api/v1/push — адрес Loki для приёма логов.
4. scrape_configs
job_name: keenetic — имя источника логов.
path: /var/log/keenetic.log — путь к файлу логов Keenetic.
labels — метки, по которым удобно фильтровать логи в Loki (например, job=»keenetic», host=»keenetic-router»).
Проверка
- Убедитесь, что Keenetic настроен на отправку логов по syslog на IP сервера с rsyslog.
- Посмотрите, что логи пишутся в /var/log/keenetic.log.
- Запустите Promtail и проверьте, что в Loki появились записи с меткой job=»keenetic».