Настраиваем дашборд Grafana для точек доступа Keenetic

Мы уже рассматривали процесс настройки мониторинга Zabbix для Keenetic, и я говорил, что это обязательно надо делать даже на небольших объектах для того, чтобы заранее предотвращать какие-то инциденты или просто видеть, какие события происходят в вашей сети на единой карте с единым потоком событий для всех устройств, включая NAS-ы, серверы, коммутаторы и рабочие компьютеры. Но помимо мониторинга статуса и событий, имеет смысл интегрировать Keenetic в систему дашбордов с эффектными графиками, интерактивными диаграммами и графическим представлением событий.

Зачем нужны дашборды, когда есть Keenetic RNN и Zabbix?

Да, у Keenetic есть собственный сервис отражения статуса устройств, и его тоже не надо сбрасывать со счетов, но во-первых, он достаточно ограничен по функционалу, а во-вторых он показывает только сами кинетики, и не даёт информации по другим узлам сети, таким как компьютеры, принтеры и т.д. В свою очередь, Zabbix сформирует вам ленту событий и выведет её на интерактивную карту, чтобы вы могли ориентироваться, в каком сегменте сети у вас узел требует внимания. Ни тот, ни другой сервис не позволят вам представить информацию в том виде, в котором вы бы хотели, использовать необычные диаграммы и графики, встраивать их в презентации и на сайты, сводить разнородную информацию (статус, числа, фото, строки) на одной странице, чтобы было как-то так:

Keenetic в дашборде Grafana

Дашборд – это современный подход к мониторингу для людей, имеющих визуальное/клиповое мышление (и не только), дающий следующие преимущества:

  • Вы можете на одни и те же графики выводить информацию с разных источников и даже разного класса.
  • Все эти графики – интерактивные, по которым можно водить и кликать мышкой.
  • Графики дашбордов можно просто экспортировать в HTML виде и встроить на сайт или в приложение, чтобы видеть снапшот данных на определённое время или автоматически обновляемые в реальном времени. Удобство, гибкость настройки и врождённая красота – вот что такое современные дашборды.

Решений для построения дашбордов много, но широко используются всего два: это Kibana для Elastic и Grafana, которую мы и будем настраивать. Сама по себе «графана» – это просто платформа для построения графиков и диаграмм, которой для работы нужны программы, собирающие данные и базы, в которых эти данные хранятся. Вот как происходит обмен данными между Keenetic и Grafana:

  • Где-то в сети или даже на самих кинетиках запускаются агенты сбора метрик, так называемые экспортёры.
  • Эти агенты передают данные в специализированные базы данных типа Prometheus, InfluxDB, Graylog или другие.
  • Где-то в сети запущен сервис Grafana, который использует эти базы данных для визуализации и построения дашбордов.

У Keenetic есть поддержка сторонних пакетов OPKG, что позволяет устанавливать даже базы данных непосредственно на роутер, но это не самый лучший вариант, потому что и InfluxDB, и Prometheus достаточно прожорливы в том, что касается памяти и ресурсов CPU, поэтому лучше всего выделить под мониторинг отдельную виртуалку на корпоративном сервере или VPS. Благодаря Docker, весь стэк мониторинга можно запустить за 15 минут, и мы будем считать, что у вас уже всё настроено и работает, осталось только добавить Keenetic.

Какие есть способы брать данные из Keenetic?

Получать данные из Keenetic можно тремя способами:

  • Брать метрики через SNMP – этот метод подробно рассмотрен в примере настройки Zabbix для Keenetic в нашей статье. Это наиболее универсальный способ, но связанный с лишней морокой – вам придётся вручную вводить OID-ы для метрик, и имейте ввиду, что через SNMP кинетики выводят не всю системную информацию.
  • Установить на Keenetic экспортер данных через OPKG (подробно рассматривается на форуме). И хотя этот метод даст наиболее полный набор данных, он больше подходит когда у вас одно устройство – роутер, потому что для установки пакетов через OPKG придётся подключать к кинетику флешку, устанавливать и настраивать экспортер через командную строку, что в общем-то, неудобно.
  • Брать данные через API по web-подключению. Это самый простой способ: агент для сбора данных через API может быть запущен как где-то в облаке, так и на сервере в сети или даже на самом кинетике (через OPKG). Мы будем использовать именно этот метод, запуская стек мониторинга в виртуалке.

Готовый экспортер данных для Keenetic через HTTP есть на Github, нам нужно лишь клонировать репозиторий и скомпилировать Docker контейнер (в моём примере с тегами keenetic-monitoring:1). После того, как контейнер будет готов, можно использовать Docker Compose для запуска приложений, и мой экспортер метрик из Keenetic выглядит так:

version: '3.7'
     services:
        keenetic-grafana-monitoring:
        image: keenetic-monitoring:1
        container_name: keenetic-grafana-monitoring
     environment:
        - TZ=Europe/Moscow
     volumes:
        - /monitoring/keenetic/config.ini:/home/config/config.ini:ro
        - /monitoring/keenetic/metrics.json:/home/config/metrics.json:ro
     restart: always

Из хоста, на котором будет запущен экспортер, я пробрасываю в новый контейнер два файла, взятые из того же репозитория – metrics.json с описанием метрик, собираемых с кинетиков и config.ini, содержащий IP-адрес, логин/пароль кинетика и название базы данных в InfluxDB.

Вот содержимое config.ini:

[influx2]
# URL базы данных
url=http://192.168.1.149:8086
# Идентификатор в базе данных
org=keenetic
# Токен для подключения к базе данных
token=MaSRn5c2TJWgxdpx
timeout=6000
# Название корзины в базе данных
bucket=keenetic
[keenetic]
# Адрес Keenetic, с которого собираем метрики
admin_endpoint=http://192.168.1.11:80
skip_auth=false
# Логин/пароль созданного в Keenetic пользователя для сбора данных
login=monitor
password=12345
[collector]
interval_sec=30

И вот здесь есть особенность: скрипт скрапера написан для одного устройства семейства Keenetic. Хотите мониторить 10 устройств – запускайте 10 сборщиков данных в контейнерах, и пусть экспортируют в одну общую базу данных. Но с Docker это не проблема: один контейнер скрапера потребляет всего 27 Мб памяти, и я могу их запустить хоть сотню, используя всё тот же скомпилированный ранее образ контейнера, но как обычно, начну с одного устройства.

Запуск стека мониторинга из Docker

Для того, чтобы экспортёр мог подключиться к Keenetic, нам надо в web-интерфейсе точки доступа создать отдельного пользователя с правом доступа к WebUI, но без права изменения конфигурации. В моём варианте этот пользователь имеет логин monitoring и пароль 12345, и ещё я хотел бы обратить внимание, что имеет смысл менять "hostname" или "имя системы" в настройках кинетиков на какое-то осмысленное или хотя бы убедиться, что устанавливаемые по умолчанию номера вида "Keenetic-XXXX" не повторяются.

Добавление пользователя Keenetic для мониторинга

Экспортёр отправляет данные в базу InfluxDB версии 2.1, которая сама по себе имеет приятный Web-интерфейс с поиском данных и выводом графиков.

Интерфейс InfluxDB

Кому-то его может быть и достаточно, чтобы не заморачиваться с "графаной", но как по мне, так он годится только для построения запросов на языке, которые мы можем использовать в информационных панелях Grafana. Давайте посмотрим, какие полезные данные он вытаскивает из Keenetic Voyager Pro.

  • CPULoad – загрузка процессора в %
  • Processes (пригодится для роутеров, на которых запущены разные сервисы, такие как NAS, Proxy и прочие программы через OPKG).
  • Memfree – свободная память в килобайтах
  • Swaptotal – объём файла подкачки, который в идеале должен всегда равняться нулю
  • Uptime – время работы в секундах после последней перезагрузки устройства.
  • Internet Status: данные доступности вышестоящих шлюзов и DNS серверов
  • Interface stat: суммарный трафик и текущая скорость по выбранным интерфейсам. Очень удобно то, что данные можно снимать с разных интерфейсов – отдельно для радиоточек 2.5 ГГц и 5 ГГц и отдельно для проводных подключений.
  • Interface (состояние сетевого интерфейса). Здесь есть очень полезная метрика температуры радиомодуля.

Для работы с Grafana, нам нужно подключить InfluxDB в качестве источника (в веб-интерфейсе графаны проходим по ссылкам home - connections - add new connection - InfluxDB), после чего вводим IP адрес с номером порта и обязательно добавляем дополнительный HTTP заголовок с полем Authorization и значением Token MaSRn5c2TJWgxdpx (этот токен указан в config.ini). В полях Organization и Data Bucket прописываем keenetic.

Добавление источника

Выбрав нужные метрики, мы можем создать первый дашборд в Grafana, и здесь ваши возможности ограничиваются лишь вашей фантазией. В том репозитории на Github, ссылку на который я давал выше, есть шаблон для Grafana, который использует язык InfluxQL для запросов к базе InfluxDB, и он у меня не заработал – база отвечала только на запросы на языке Flux.

Keenetic add dashboard

Пришлось самостоятельно перерисовывать дашборд, используя простую тактику: открываем Web-интерфейс InfluxDB, кликаем мышкой на нужные данные, строим там график, и копируем скрипт на InfluxDB в графану.

Перенос из InfluxDB в Графану

Я предпочитаю воспринимать информацию о трафике и загрузке ресурсов в виде графиков на временной шкале, а такие показатели как температура – надписью поверх фотографии кинетика (для этой цели используем панель типа Canvas). В итоге получается такой милый дашборд:

Дашборд Keenetic

Обратите внимание, что для кинетиков, работающих в режиме маршрутизатора, информации может быть больше.

Подключаем логи

Съём логов с кинетиков будет производиться по следующей схеме:

  • 1. Keenetic отправляет журналы на rsyslog сервер в сети с адресом 192.168.1.17
  • 2. Сервер rsyslog транслирует все поступившие к нему журналы на программу-экспортер данных Promtail, запущенную на сервере с адресом 192.168.1.25. Для этого в конфиг.файле rsyslog добавляем следующее:

# Forward everything
*.* action(type="omfwd"
protocol="tcp" target="192.168.1.25" port="1514"
Template="RSYSLOG_SyslogProtocol23Format"
TCP_Framing="octet-counted" KeepAlive="on"
action.resumeRetryCount="-1"
queue.type="linkedlist" queue.size="50000")

  • 3. Promtail отправляет журналы на сервер Loki, запущенный на том же IP адресе 192.168.1.25, для чего в его конфигурационном файле прописываем адрес Loki следуя данной инструкции.

# Адрес Loki сервера
clients:
  - url: http://loki:3100/loki/api/v1/push
scrape configs:
- job_name: syslog
  syslog:
    listen_address: 0.0.0.0:1514
    idle_timeout: 60s
    label_structured_data: yes
    labels:
      job: "syslog"
  relabel_configs:
    - source_labels: ['__syslog_message_hostname']
      target_label: 'host'

  • 4. В Grafana добавляем сервер Loki как источник для построения дашбордов для вывода на экран по этой инструкции.

Есть разные способы очистки логов от ненужной информации: это можно делать и на сервере rsyslog, и на promtail и в самом веб-интерфейсе Grafana выбирать только те записи, что нас интересуют с использованием регулярных выражений. Сервер Loki имеет достаточно хороший компактор данных, а кинетики в свою очередь – не имеют разделения логов по серьёзности сообщений, поэтому проще журналы с Keenetic вообще не чистить, а хранить в полном виде. Обработку и вычленение событий мы всегда сможем возложить на сам дашборд средствами Grafana.

Настройка логов Grafana

Для добавления общего лога я использую две информационных панели: содержимое журнала и частота внесения записей в журнал в виде ломаной прямой. Как только происходит какое-то необычное событие в сети, журнал начинает интенсивно заполняться новыми записями, на втором графике я вижу всплеск активности и в общем потоке логов могу выставить нужный временной диапазон, чтобы просмотреть все события.

Используя конструктор «содержит/не содержит» можно достаточно легко выйти на нужные вам записи для одного или нескольких хостов, например если нам нужно выводить на экран логи только по беспроводным клиентам, указываем фильтр "Line Contains" и значение STA. Для небольшого объёма логов такой подход оправдан, потому что неочищенные журналы будут у вас всё так же под рукой, и по ним можно будет пробежаться в интерфейсе Grafana - Explore - Loki, а вот перед глазами будут только записи по нужной тематике, хотя конечно "лучшие практики" рекомендуют очищать журналы на входе.

Фильтр журналов

В итоге, для одного Keenetic Voyager Pro у меня получился вот такой дашборд:

Keenetic Voyager Pro

Я загрузил его в репозиторий дашбордов Grafana, чтобы вы могли просто импортировать его в свою систему и использовать по своему желанию. Если по каким-то причинам ссылка не работает, вот готовый json файл.

Интегрируем показания Keenetic в существующие дашборды

Один из плюсов Grafana в том, что мы можем интегрировать в дашборд информацию с разных источников, например поместить метрики кинетиков рядом с показателями сервера, или виртуальных машин или с погодой или хоть с курсом доллара. Последнее может быть полезным, если вы хотите, например, нарисовать общую диаграмму состояния объекта, которая будет висеть на отдельном 60-дюймовом экране на стене, под потолком и автоматически обновляться.

Keenetic Экспорт

Есть и другая ситуация, когда например, доступ к мониторингу закрыт из интернета, а нужно срочно передать сетевому инженеру график, например, о загрузке процессора точки доступа. Здесь нам на помощь приходит встроенная в графану связь с облаком raintank.io. Просто выбираем нужную панель, жмём кнопку "share" и выбираем режим "snapshot" с установкой автоматического времени удаления.

Экспорт снапшота

Получив ссылку и вставив в браузер, инженер, да и любой другой пользователь получает у себя вашу информационную панель даже если у вас мониторинг запущен локально и закрыт из Интернета. Увидел что нужно, сказал вам "ОК", и вы можете удалить этот снапшот из свободного доступа.

Использование снапшотов

Разумеется, по этому графику тоже можно водить мышкой, чтобы видеть мгновенные значения. Если нужно встроить график в web-приложение, или просто на сайт, вы можете экспортировать его в виде iframe и подключить через вашу CMS в нужном месте, естественно он будет обновляться при каждой загрузке странице. Так что если хотите поделиться с миром, какая у вас сейчас скорость Wi-Fi на объекте - нет лучше способа это сделать.

Настраиваем алерты

Grafana позволяет настраивать алерты как по показаниям метрик, например «загрузка CPU выше 90%», так и по числу записей в логах за определённый промежуток времени, например если слово «error» встречается чаще 10 раз за 10 минут. Каждое событие нужно настраивать вручную, что с одной стороны – очень трудоёмко, но с другой стороны позволяет строить сложные конструкции, например «сумма трафика по радио 2.4 ГГц и 5 ГГц превышает 900 Мбит/с на протяжении 15 минут».

Алерты

В качестве средства уведомления поддерживаются E-Mail, Telegram, Discord, Google Chat и другие платформы, в том числе REST Proxy от Kafka.

Напоследок

Настройка дашбордов в Grafana – это куда более трудоёмкий процесс, чем интеграция Keenetic в Zabbix, но как говорится, красота требует жертв. В современных кинетиках установлены очень мощные процессоры и избыточный объём ОЗУ, так что разработчику никто не мешает прикрутить в KeenOS родной Prometheus Exporter или Telegraf для упрощения снятия метрик в базы данных класса time-series без использования opkg, флешек и сторонних кодов с GitHub. Я очень надеюсь, что когда-нибудь это будет сделано, и появятся хорошие шаблоны для Grafana, так чтобы даже начинающий сисадмин мог легко развернуть средство мониторинга в современном HTML5-стиле.

Михаил Дегтярёв (aka LIKE OFF)
28/11.2023


Похожие статьи:

Keenetic Challenger SE KN-3911: роутер стандарта AX3000 с двумя 2.5-гигабитными портами

Keenetic KN-3911 - это высокоскоростная модель для тех счастливчиков, которых провайдеры подключают на скорости выше 1 Гбит/с, и кто хочет использовать для доступа в интернет нормальное устройство, с постоянно обновляемой прошивкой, быстрым Wi-...

Настраиваем Zabbix для мониторинга точек доступа и роутеров Keenetic

Если у вас в компании используется Zabbix для мониторинга инфраструктуры, вы можете интегрировать в эту платформу роутеры и точки доступа Keenetic, следуя нашей инструкции. Это существенно облегчает обслуживание сети и расследов...

Обзор Keenetic Ultra KN-1811: интересная модель с 2,5-гигабитным портом и Wi-Fi 6

Эта модель как будто специально создавалась для офисов, в которых вся IT-инфраструктура умещается в одном настольном сервере, а доступ всех сотрудников происходит только через Web. Это тенденция последних 2-3 лет, которая требуе...

Мониторинг серверной стойки: что для этого нужно

Технологии сегодня настолько развиты, что существует множество инструментов для контроля серверных стоек и всей вычислительной инфраструктуры небольшого предприятия. Данные системы также позволяют оптимизировать использование э...

5 бесплатных сервисов для вашего docker сервера

В этой статье мы рассмотрим 5 программных сервисов, которые вы можете установить через Docker для облегчения обслуживания ваших серверов. Этот программный стек - Must Have для небольшой инфраструктуры, использующей Docker (Swar...


Copyrights © 1998-2025