Мониторинг состояния роутеров keenetic в influxdb v2 и grafanа
Возврат:: к списку статей мои статьи
Это третья часть о мониторинге домашней системы с использованием influxdb и grafana первая часть про общую настройку в Мониторинг proxmox с использованием InfluxDB v2 и Grafana и вторая часть про мониторинг proxmox Мониторинг proxmox с использованием InfluxDB v2 и Grafana.
Вступление
Продолжая вопрос мониторинга состояния системы необходимо обсудить еще не маловажный вопрос мониторинга состояния роутеров в вашей системе как один из самых важных и критических элементов системы.
В данной заметке рассмотрим вопрос мониторинга роутеров keenetic а в следующей мониторинг роутеров openwrt. Решения для других систем рассматриваться не будут так как я являюсь приверженцем именно этих двух систем и других устройств у меня нет.
Все настройки будут выполняться на актуально на текущий момент времени версии KeeneticOS 4.1.3
У кинетика есть достаточно удобное и хорошее API у роутеров из коробки но по умолчанию он закрыт файрволлом, именно используя данное restfull api можно получить всю необходимую нам информацию даже для роутеров без entware.
Для решения задачи мониторинга я буду использовать проект https://github.com/vitaliy-sk/keenetic-grafana-monitoring
Подробная инструкция по созданию новых корзин и api токенов было разобрано в первой и второй части, так что в данной публикации будет крайний минимум побочной информации.
Настройка мониторинга роутера
В рассматриваемом решение применяется подход обращения к API или авторизации и использования cli запросов. Я не вижу смысла использовать авторизацию с запросами так как api работает постоянно и не нагружает дополнительно систему в отличии от постоянных запросов через cli.
Первым этапом откроем доступ к API на роутере, для подключения из локальной сети не требуется авторизация.
Идем в настройки нашего роутера в раздел переадресация портов
И создаем новое правило переадресации портов
Обратите внимание на подсеть, в моем случае это 192.168.0.1 у вас она может отличаться.
Фактически на стороне роутера настройка закончена теперь нам доступно api по адресу http://192.168.0.1:81/rci/show/system
Настройка сбора данных в influxDB
Теперь приступим к разворачиванию системы, которая будет обращаться к нашему api и пересылать в influxdb.
В первую очередь создадим новую корзину данных для хранения в моем случае это keenetic. И создадим custom api токен на запись данных.
Особенность сборщика не позволяет разделить данные от нескольких роутеров в одной корзине по hostname по этому для каждого роутера который необходимо мониторить делаем отдельную корзину данных.
При копировании API токена проверяем, кнопка может отработать не корректно.
Мониторинг запускается в отдельном докер контейнере на любом сервере в сети, в моем случае я буду запускать его на той же виртуальной машине, где у меня запущен influxdb.
Я буду размещать файл конфигурации по пути /docker/keentic-monitoring/config.ini для этого создам советующие папки и файл.
mkdir /docker
mkdir /docker/keentic-monitoring
nano /docker/keentic-monitoring/config.ini
Заполняем данные в шаблон конфигурационного файла. Указываем адрес базы influxdb, токен, организацию и bucket.
[influx2]
# If you are using docker-compose it should be http://influxdb:8086
url=http://192.168.0.135:8086
# For influx v1.x please use "-" as a value
org=influxdb
# For influx v1.x please use "username:password" as a token
# See DOCKER_INFLUXDB_INIT_ADMIN_TOKEN in docker-compose.yml
token=<Token>
timeout=6000
# For influx v1.x DB name
bucket=keenetic
[keenetic]
admin_endpoint=http://192.168.0.1:81
skip_auth=true
login=admin
password=
[collector]
interval_sec=30
Запускаем докер контейнер со следующими параметрами
Я использую docker compose из интерфейса portainer по этому привожу только файл запуска docker compose. Подробную инструкцию как запустить docker compose из файловой системы легко найти на просторах интернета.
version: '3.7'
services:
keenetic-monitoring:
image: techh/keenetic-grafana-monitoring:latest
container_name: keenetic-monitoring
environment:
- TZ=Europe/Moscow
volumes:
- /docker/keentic-monitoring/config.ini:/home/config/config.ini:ro
# Optionally you can override metrics
#- ./config/metrics.json:/home/config/metrics.json:ro
restart: always
Проверяем что данные о системе начали поступать.
Для тек у кого что то пошло не так...
Если данные не поступают, то необходимо проверить логи вашего контейнера, если есть предупреждение на подобии такого, это значит что универсальный файл с описанием метрик вам не подходит и необходимо добавить еще одну volumes.
Должно получиться так:
volumes:
- /docker/keenetic- monitoring/config.ini:/home/config/config.ini:ro
# Optionally you can override metrics
- /docker/keenetic- monitoring/metrics.json:/home/config/metrics.json:ro
А на сервере по пути указано как конфиг метрик необходимо добавить файл из гит репозитория автора в котором удаляем секцию на которую получаем ошибку, в моем случае это media. https://github.com/vitaliy-sk/keenetic-grafana-monitoring/blob/master/config/metrics.json
Внимательно следите за запятыми и кавычками, надо удалить блок целиком не сломав json.
Визуализация данных в Grafana
Фактически сбор данных на этом полностью закончен, теперь нам необходимо подключить Grafana к новой корзине данных и найти\составить красивый интерфейс.
Я у себя использую интерфейс предложенный автором системы сбора данных из кинетика https://grafana.com/grafana/dashboards/12723-keenetic/
Обратите внимание что данная панель составлена под версию influxdb v1 для нее настройки Grafana должны быть выполнены следующим образом
В поле HTTP headers value указываем: Token %ТокенНаЧтениеКорзины%
Подробнее про настройку смотри первую часть
В итоге получаем красивую панель мониторинга состояния роутера
P.S. Следующая часть серии публикаций будет посвящена сбору данных с роутеров под управление OpenWRT