Перейти к содержанию

Поиск

Показаны результаты для тегов 'influxdb v2'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • OpeNode
    • Новости
    • Общение
  • Статьи и обсуждения
    • Docker Контейнеры
    • Прокси и Виртуальный Частные Сети
    • Сетевое оборудование
    • 3D-моделирование и 3D-печать
    • WEB технологии и их применение
    • Операционные системы и Софт
    • Домашняя инфраструктура
    • Программирование и архитектура
    • Искусственный интеллект
    • OSINT
  • Клуб DWG Проблемы сборок
  • Клуб DWG Сборки DWG
  • Zero Trust Network Темы
  • Zero Trust Network OpenZITI
  • Marzban Инструкции
  • Marzban Продвинутые инструкции
  • Marzban Вопросы и проблемы
  • Marzban Общение
  • BookWorm Общение
  • BookWorm Поиск материалов
  • Общий клуб - ОБЩЕНИЕ Предложения по КЛУБАМ
  • Панели управления VPN и Proxy 3x-UI/X-ui
  • Панели управления VPN и Proxy Другие решения

Категории

  • Полезные файлы
    • CMS
  • Книги - общий раздел
    • Хакинг и безопасность [FILES]
    • СУБД [FILES]
    • Сети / VoIP [FILES]
    • Веб-дизайн и программирование [FILES]
    • Mac OS; Linux, FreeBSD и прочие *NIX [FILES]
  • 3D-модели для печати
  • Marzban Файлы
  • BookWorm Книги

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


Обо мне


Пол

Найдено 4 результата

  1. Это третья часть о мониторинге домашней системы с использованием influxdb и grafana первая часть про общую настройку и вторая часть про мониторинг proxmox Вступление Продолжая вопрос мониторинга состояния системы необходимо обсудить еще не маловажный вопрос мониторинга состояния роутеров в вашей системе как один из самых важных и критических элементов системы. В данной заметке рассмотрим вопрос мониторинга роутеров 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
  2. Вступление Это четвертая часть о мониторинге домашней системы с использованием influxdb и grafana первая часть про общую настройку и вторая часть про мониторинг proxmox, третья часть про мониторинг роутеров кинетик. Теперь заключительная часть про мониторинг openwrt. Продолжая обсуждение мониторинга состояния системы, необходимо уделить внимание важному аспекту – мониторингу состояния роутеров. Они являются одними из ключевых и критически важных элементов в вашей системе. В данной публикации я рассмотрю вопрос мониторинга состояния роутеров под управление системы openwrt с использованием пакета collectd. Настройка выполнялась на базе версий openwrt 22.03 и 23.05 Глобально у нас есть несколько вариантов настройки сбора статистики с роутеров: Сбор с помощью collectd и передача через telegraf установленный на роутере Сбор с помощью collectd и передача через telegraf установленный на отдельном сервере Сбор и отправка данных через telegraf Первый и третий вариант требуют установки на каждый роутер достаточно крупного пакета telegraf (урезанная версия весит 12 Mb), а место на многих роутерах очень ограничено. По этой причине я выбрал вариант 2. В общей суме нам потребуется около 1.5-2Мб памяти на роутере для пакетов статистики и одна установка telegraf для агрегации всех данных с нескольких роутеров. Настройка сбора статистики на роутере В первую очередь нам необходимо установить пакеты сбора статистики и collectd а так же модуля для них. Это можно сделать через графический интерфейс, или подключившись по ssh. Команды установки: opkg update opkg install luci-app-statistics collectd collectd-mod-cpu collectd-mod-conntrack collectd-mod-df collectd-mod-dhcpleases collectd-mod-interface collectd-mod-iwinfo collectd-mod-load collectd-mod-memory collectd-mod-network collectd-mod-uptime collectd-mod-rrdtool /etc/init.d/luci_statistics enable /etc/init.d/collectd enable После установки повторно заходим в интерфейс роутера в новый раздел меню статистика – настройки. В основных настройках обязательно указываем уникальное имя хоста (под этим именем данные будут собираться в системе influxdb) Нам необходимо включить все компоненты сбора статистики. Все настройки плагинов можно оставлять в режиме по умолчанию. При открытии окна настроек плагина может сбиваться состояние настроек и полей. Переходим к настройке плагинов вывода, перед настройкой плагинов вывода обязательно примените настройки. Выключаем плагин RRDTool, он отвечает за хранение статистики на устройстве для вывода в виде графиков. И переходим к настройке плагина network. Нам необходимо заполнить только параметры интерфейса telegraf, который будет принимать данные collectd. В моем случае это 192.168.0.137. Сам telegraf может находиться на любом устройстве сети не зависимо от роутеров и Influxdb. Настройка сбора данных в telegraf Для сбора информации с роутеров будем использовать вариант запуска программы telegraf в роли прокси ретранслятора, на вход будет поступать информация от роутеров, а на выходе формироваться запись для передачи в influxdb. Но перед запуском докер контейнера telegraf нам необходимо забрать с роутера файл для сопоставления наборов данных collectd. По умолчанию файл размещен по пути /usr/share/collectd/types.db Скачиваем его себе на сервер где будет запускаться telegraf, в моем примере это /docker/telegraf-openwrt/types.db Переходим к настройке telegraf. Заходим в influxBD и создаем новую корзину openwrt и конфигурацию telegraf. Нам нужен источник данных socket listener Заменяем шаблонный конфиг, и даем понятное название # Generic socket listener capable of handling multiple socket types. [[inputs.socket_listener]] ## URL to listen on # service_address = "tcp://:8094" # service_address = "tcp://127.0.0.1:http" # service_address = "tcp4://:8094" # service_address = "tcp6://:8094" # service_address = "tcp6://[2001:db8::1]:8094" service_address = "udp://0.0.0.0:8094" # service_address = "udp4://:8094" # service_address = "udp6://:8094" # service_address = "unix:///tmp/telegraf.sock" # service_address = "unixgram:///tmp/telegraf.sock" ## Change the file mode bits on unix sockets. These permissions may not be ## respected by some platforms, to safely restrict write permissions it is best ## to place the socket into a directory that has previously been created ## with the desired permissions. ## ex: socket_mode = "777" # socket_mode = "" ## Maximum number of concurrent connections. ## Only applies to stream sockets (e.g. TCP). ## 0 (default) is unlimited. # max_connections = 1024 ## Read timeout. ## Only applies to stream sockets (e.g. TCP). ## 0 (default) is unlimited. # read_timeout = "30s" ## Optional TLS configuration. ## Only applies to stream sockets (e.g. TCP). # tls_cert = "/etc/telegraf/cert.pem" # tls_key = "/etc/telegraf/key.pem" ## Enables client authentication if set. # tls_allowed_cacerts = ["/etc/telegraf/clientca.pem"] ## Maximum socket buffer size (in bytes when no unit specified). ## For stream sockets, once the buffer fills up, the sender will start backing up. ## For datagram sockets, once the buffer fills up, metrics will start dropping. ## Defaults to the OS default. # read_buffer_size = "64KiB" ## Period between keep alive probes. ## Only applies to TCP sockets. ## 0 disables keep alive probes. ## Defaults to the OS configuration. # keep_alive_period = "5m" ## Data format to consume. ## Each data format has its own unique set of configuration options, read ## more about them here: ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md data_format = "collectd" collectd_typesdb = ["/usr/share/collectd/types.db"] ## Content encoding for message payloads, can be set to "gzip" to or ## "identity" to apply no encoding. # content_encoding = "identity" Копируем полученный токен, он нам понадобиться для модификации конфигурации. Host изменять не надо, устанавливаем только токен в место параметра. Более подробно этот момент разбирался в первой части. Скачиваем файл конфигурации и размещаем на сервере рядом с types.db Переходим к запуску докер контейнер telegraf со следующим конфигурационным файлом version: "3" services: telegraf-openwrt: image: telegraf:latest container_name: telegraf-openwrt environment: - TZ=Europe/Moscow volumes: - /docker/telegraf-openwrt/telegraf.conf:/etc/telegraf/telegraf.conf:ro - /docker/telegraf-openwrt/types.db:/usr/share/collectd/types.db ports: - "8094:8094/udp" Отдельно стоит обратить внимание что обмен данными идет именно по протоколу udp, если у вас что-то не работает и данные не появляются проверяйте в первую очередь фаервол. Проверяем что данные появились в базе Подключение Grafana Работа с Grafana уже является стандартной и подробно разбирать я ее не буду, приведу пример как настроено у меня. Создан API токен на чтение корзины openwrt, и выполнено подключение в режиме Flux. В моем примере я использовал шаблон https://grafana.com/grafana/dashboards/18565-openwrt-collectd-flux/ В результате имеем такой дашборд Заключение Это последняя в ближайшей перспективе публикация на тему мониторинга спасибо всем кто ознакомился с этим материалом. Это далеко не все что стоит осветить на тему мониторинга, как минимум необходимо разобрать тему уведомлений по событиям и пересылку в другие коллекторы данных, но пока я не готов погружаться в эту тему. Но в любом случае буду признателен за советы и комментарии по теме. Отдельно акцентирую внимание я не являюсь профессиональным системным администратором, я только самоучка который решил погрузить в тему умного дома и домашних серверов. Так что мои решения могут быть не самые оптимальные и эффективные но они работают и покрывают поставленные задачи. Я всегда рад обсудить более эффективные варианты и возможно даже что то скорректировать в своей системе. Спасибо за внимание, меня можно достаточно часто найти в телеграмм чате сообщества готов по возможности ответить на вопросы. Всем удачи, и надежной работы вашим системам.
  3. Первичную настройку я разбирал уже в первой части так что в этой части будет меньше моментов по настройки самой Grafana и InfluxDB. Первая часть. Вступление, или варианты решения Для мониторинга состояния proxmox у нас есть несколько способов решения задачи. Использовать сам proxmox для отправки данных в influxdb Использовать telegraf для сбора данных через API proxmox и отправки их в influxdb Использовать telegraf для сбора данных хоста proxmox Фактически первые два варианта равнозначны и используют API proxmox которого достаточно для большинства задач, но в нем нет одного важного для меня показателя температура процессора. Подробнее про API proxmox можете почитать тут: https://pve.proxmox.com/wiki/Proxmox_VE_API Обращаться по API из telegraf в моем случае я тоже не вижу смысла так как вся система у меня находится в одной локации, это было бы оправдано если нам необходимо контролировать разрыв связи или собирать данные сразу с нескольких источник. Поэтому я буду использовать комбинацию первого и третьего варианта. Настройка отправки данных из proxmox Для мониторинга состояния proxmox VE нам необходимо создать новую корзину для данных в influxDB для этого заходим в influxDB в раздел Load Data -> Bucket При создании есть возможность выставить как долго хранить данные, я выбрал вариант never так как не вижу проблем в разрастании базы на текущий момент. Теперь необходимо создать токен доступа для корзины, который будет давать права на запись в базу. Переходим в меню управления API токенами и создаем новый custom token Даем права на запись для созданной корзины данных. Сохраняем себе полученный токен Внимание кнопка копирования токена может не сработать, проверяйте перед закрытием. Переходим в proxmox, нас интересует раздел сервер метрик. Создаем новую запись influxDB. Указываем в поле база данных имя корзины, а в поле маркер полученный токен записи. Проверяем что в ifluxBD появились данные. Теперь нам надо еще собирать данные о температуре сервера proxmox не зависимо от api proxmox. Я для этого буду использовать шаблон созданный в прошлый раз для system-monitoring, он доступен в разделе telegraf. Так как это хост система в данном случае я буду использовать пакетный вариант telegraf Подключаемся по ssh или через оболчку proxmox в браузере и устанавливаем пакет. Подробно все расписано в документации по установке тут: https://docs.influxdata.com/telegraf/v1/install/ Обратите внимание что, работая в оболочке proxmox у нас не будет sudo если работать под root Приведу команды установки из-под root пользователя: curl -s https://repos.influxdata.com/influxdata-archive_compat.key > influxdata-archive_compat.key echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | tee /etc/apt/sources.list.d/influxdata.list apt-get update && apt-get install telegraf Актуальные команды всегда будут доступны в официальной документации, просто удалите sudo из команд. Дальше нам необходимо получить нашу конфигурацию system-monitoring, для этого переходим в шаблоны telegraf открываем наш шаблон и копируем от туда токен доступа Закрываем это окно сам файл нам не понадобится, нам нужна инструкция по установке. Возвращаемся в оболочку proxmox и выполняем две команды как расписано в инструкции заменив <InfluxToken> на скопированный ранее токен. Обязательно надо передать ключ сначала отдельной командой для получения доступа к самому шаблону настроек. Но в принципе можно и просто скачать файл и отдать его telegraf как это было с docker вариантом. Проверяем что данные поступают в корзину и Grafana Обратите внимание что Grafana дополнительно настраивать для данной корзины не надо, а для корзины proxmox надо. Для этого переходим в управления токенами API и создаем токен на чтение корзины proxmox для Grafana. Подробно настройку Grafa я разбирал в прошлой публикации, тут приведу только результат настроек. Пример панели proxmox в Grafana Я использовал шаблон: https://grafana.com/grafana/dashboards/15356-proxmox-cluster-flux/ Вместо заключения Спасибо за внимание, в следующих публикациях я разберу так же способы мониторинга состояния роутеров keenetic и openwrt.
  4. Вторая часть про мониторинг proxmox Вступление, или не будем ждать проблем, когда они придут В один не слишком прекрасный день я осознал, что то, что когда-то началось как одна Яндекс.Лайт-станция, за год превратилось в достаточно крупную и сложную распределенную домашнюю систему. В ней участвуют порядка четырех мини-серверов и пяти роутеров, разбросанных по трем локациям, а также нескольких удаленных серверов. В момент прозрения меня посетила мысль: нужно как-то контролировать всю эту инфраструктуру, следить за температурой (ведь лето близко!) и свободными дисковыми и оперативными ресурсами. Изначально, когда я только начинал строить свой умный дом на базе Home Assistant, я старался втянуть в него всё, включая статистику. Однако со временем до меня дошло, что это не очень удобно (на каждой локации статистика собиралась в своем Home Assistant) и не слишком надежно (ведь HA не самая стабильная из всех систем, особенно при установке на базе Armbian). Более того, в умном доме не всегда нужны такие обширные данные, а то, что действительно важно, можно собирать более точечно. Сразу оговорюсь, что я не считаю своё мнение единственно верным в данном вопросе. Большая часть моих знаний по администрированию основана на собственном опыте, который можно сравнить с хождением по граблям. Требования к системе и результаты поиска Мои размышления привели к тому, что я решил развернуть отдельную систему мониторинга для всей домашней инфраструктуры, и начали поиски... Но сначала граничные условия: Использование docker. Я являюсь приверженцем использования docker контейнеров по максимуму так как это позволяет легко и быстро разворачивать и обновлять систему не заботясь о зависимостях. Легковесность. В планах было запустить основной (резервный, но об этом дальше) мониторинг на свободной железке tv-box под управлением armbian c 1Gb ОЗУ. Универсальность. Зоопарк систем не самый впечатляющий но он есть, и не хотелось сильно ограничивать себя в дальнейшем. Гибкость настроек, желательно с возможностью использования шаблонов. Первый мой выбор пал на систему Zabbix, это профессиональный инструмент мониторинга серверов с гибкой настройкой и большим количеством возможностей. Но проблема Zabbix в его перегруженности, да это отличный профессиональный инструмент с большим количеством возможностей. В моих изысканиях я столкнулся со следующими проблемами: Развертывание в докере хоть и описано но работает очень плохо, приведенный вариант docker compose переусложнен и стартует не всегда (пробовал и в виртуалке Debian и на armbian), документация по установке докера хоть и описана но мягко говоря оставляет желать лучшего (не описаны некоторые очень важные параметры запуска docker compose для полноценной работы). Система тяжелая. Изначально я все разворачивал на своей мини машинке armbian и думал что проблема в первую очередь с ней, но даже при переезде на виртуалку с выделенными 2Gb озу Zabbix их съел и просил еще, а в тот момент был подключен только 1 сервер для мониторинга… Усложненные настройки и не самый очевидный интерфейс. Увы но мы живем в эпоху упрощения UI, и сотни настроек и параметров Zabbix для неподготовленного пользователя выглядят страшно. Zabbix agent в докере работает очень странно… Следующим этапом стал новый поиск вариантов реализации, который привел к стеку Telegraf + InfluxDB + Garfana. Скажу сразу данный вариант показался мне более интересным и удобным, не только из за красивой визуализации графаны (которую можно и к Zabbix прикрутить) но скорее из за возможностей InfluxDB. InfluxDB — система управления базами данных с открытым исходным кодом для хранения временных рядов; написана на языке Go и не требует внешних зависимостей. Основной фокус — хранение больших объёмов данных с метками времени, и их обработка в условиях высокой нагрузки на запись Я сразу разворачивал вариант на базе influxDB v2 которая в сравнении с версией 1 про которую написано больше всего материалов в сети намного, прям на очень много интересней. Да и это уже не только база данных а нечто большее… После разворачивания influxDB поднимает web api и интерфейс, в котором можно: Управлять доступом Создавать и управлять корзинами (изолированными базами) Просматривать данные с помощью запросов и конструктора Настраивать уведомления путем запросов (в open source варианте доступно только slack и http из интерфейса, но есть способ отправлять и в телеграмм) Настройка дашбордов для мониторинга данных через запросы (или конструктором) Конструктор настроек для агентов сбора данных с возможностью хранения Красивый интерфейс… ну а куда без этого в наше время. Немного примеров интерфейса: Общая схема работы системы У influxDB в принципе очень хорошая документация, но вот примеры в других источниках в основном рассчитаны все таки на старую версию influxdb v1, в некоторых аспектах это может приводить к сложностям настройки, но в основном обратная совместимость осталась. В принципе все системы мониторинга работают по похожей схеме Host -> Агент -> База данных -> Визуализация. В данной системе influxDB является краеугольным камнем, а для него основной (и рекомендуемый) вариант агента является telegraf. Это удобный и универсальный инструмент который позволяет как собирать данные с текущего устройства так и выступать в роли некоего прокси который будет собирать данные с удаленных устройств и передавать их дальше (сразу в базу или в другие варианты вывода). Grafana используется для визуализации и уведомления по условия, фактически при использовании influxDB v2 явной необходимости в ней уже нет, но под нее еще много удобных шаблонов так что пока пусть будет. Сразу оговорю так как система распределенная я постараюсь уточнять что и где мы устанавливаем, но основная идея следующая: InfluxDB + Grafana установлены на сервере мониторинга (в моем примере 192.168.0.135) Агент для мониторинга серверов linux установлены на каждом наблюдаемом устройстве Агент в роли прокси (для сбора данных с роутеров) установлен на сервере мониторинга (но может быть размещен в любой точке сети) Разворачивание и первоначальная настройка InfluxDB v2 Вступление получилось слишком долгим так что поехали. Начнем с установки influx + Grafana. Для этого использую следующий docker compose шаблон: version: '3.6' services: influxdb: image: influxdb:latest container_name: influxdb restart: always ports: - '8086:8086' volumes: - /docker/influxdb/data:/var/lib/influxdb2 - /docker/influxdb/config:/etc/influxdb2 grafana: image: grafana/grafana container_name: grafana-server restart: always depends_on: - influxdb environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin links: - influxdb ports: - '3000:3000' volumes: - grafana_data:/var/lib/grafana volumes: grafana_data: {} Обратите внимание что графана сохраняет свои файлы в volumes а не в монтируемые папки, только в такой вариации у меня получилось запустить ее с монтированием папок на диск. Так же можно использовать дополнительные переменные для инициализации подробнее описано тут: https://hub.docker.com/_/influxdb Но я советую все же для удобства использовать первичную настройку. Запускаем докер контейнер командой и заходим на веб интерфейс influxdb по адресу http://<IP Serever>:8086 Нас встречает приветственное меню Influx для первоначальной настройки Заполняем данные, инициализации. Тут отдельно надо уточнить про поля организации и корзины. Фактически influx делит все ваши данные на изолированные базы на верхнем уровне организации и на более низком уровне корзины bucket, если проводить аналогии с первой версией bucket это старые вариации базы данных, именно в них попадают данные. При сборе данных нам будет важны эти параметры, но bucket можно спокойно создавать и удалять сколько надо из интерфейса. На следующей странице будет токен для api администратора, обязательно его сохраните это важно!!! Обратите внимание кнопка копирования может не сработать! Только с использованием токена можно работать через командную строку с базой, но токен можно сгенерировать новый через веб. В принципе на этом вся настройка закончена… на главной странице есть инструкция как настроить использование influxdb cli (работает через api) и приведены инструкции и ссылки на документацию с видео. Первоначальная настройка Grafana и подключение к InfluxDB Заходим по адресу http://<IP Serever>:3000 где нас встречает окно авторизации. Если не были заданы пароль и пользователь по умолчанию при инициализации то заходим с данными admin\admin и меняем пароль. Для настройки пользователей переходим в раздел Administration – Users and access - Users Для подключения Grafana к influxdb создаем токен доступа к корзине данных. Для этого возвращаемся в influxdb в меню идем Load Data – API Tokens и создаем Custom API Token даем ему право только на чтение (если не собираетесь запросами графаны менять данные) и даете понятное название. Больше нечего давать не надо. Сохраняем себе токен, он понадобиться для настройки Grafana. Обратите внимание кнопка копирования может не сработать!!! Возвращаемся в Grafana и добавляем новый источник данных. Для этого переходим в connections и выбираем новый источник данных influxdb. Вторая версия InfluxDB использует как основной вариант языка запросов flux но многие существующие шаблоны используют старый вариант на базе influxQL, но в самой Grafana при использовании такого варианта нет возможности авторизации по токену, а авторизация во второй версии является обязательной. Для этого необходимо отдельно добавит строку Custom HTTP Headers. Альтернатива использовать логин и пароль для InfluxDB Details, но это не рекомендуемый вариант. Заполняем настройки: Имя советую давать по именам корзин\bucket к которым даете доступ что бы не путаться. В поле url можно указать ip вашего сервера, но лучше использовать вариант с доменным именем контейнера. Авторизацию выключаем Добавляем Custom HTTP Headers в поле Header указываем Authorization в поле value пишем так: Token <ВашТокенДляЧтенияИзInflux> Пробел после Token обязателен В поле database указываем имя корзины HTTP метод GET Ниже пример настроек: Для варианта с языком flux все несколько проще: В поле токен пишем только сам токен без каких-либо дополнений. Фактически настройка самой системы мониторинга на этом закончена дальше необходимо создавать дашборд панели и события, но нам все еще надо собрать данные о системе и с этим нам поможет telegraf. Сбор данных о сервере с помощью telegraf Перед запуском нам надо получить файл telegraf.conf в интернете есть достаточно много примеров о том как его составлять и подробно описаны какие модули есть, но нам на помощь снова придет influxdb v2. Заходим в inffluxdb по адресу http://<IP Serever>:8086, нас интересует пункт меню telegraf Создаем новую конфигурацию и выбираем что хотим собирать и куда складывать данные. В конструкторе изначально есть возможность выбрать только один вариант, после создания есть возможность добавить дополнительные модули или заменить на готовый файл конфигурации. Получим шаблон настроек, который заменяем на нужный нам: Текст шаблона для получения основных показателей: [[inputs.cpu]] percpu = false totalcpu = true collect_cpu_time = false report_active = false # Read metrics about disk usage by mount point [[inputs.disk]] ## By default stats will be gathered for all mount points. ## Set mount_points will restrict the stats to only the specified mount points. mount_points = ["/"] ## Ignore mount points by filesystem type. # ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"] [[inputs.diskio]] devices = ["sd?", "nvme?", "nvme?n?"] # Get kernel statistics from /proc/stat #[[inputs.kernel]] # collect = ["psi"] # Provides Linux sysctl fs metrics [[inputs.linux_sysctl_fs]] # no configuration # Read metrics about memory usage [[inputs.mem]] # no configuration [[inputs.nstat]] # interfaces = ["en*", "eth*", "ib*", "wl*"] [[inputs.netstat]] # no configuration # Get the number of processes and group them by status [[inputs.processes]] # no configuration # Read metrics about swap memory usage [[inputs.swap]] # no configuration # Read metrics about system load & uptime [[inputs.system]] # no configuration [[inputs.temp]] # no configuration Сохраняем после замены указав понятное название шаблону. Если мы планируем запускать без докера нам приводится инструкция как все быстро запустить. Копируем себе токен из первого поля все что идет после export INFLUX_TOKEN= Почему мы используем этот вариант для докера если у нас не получиться быстро загрузить конфиг по ссылке? Все очень просто теперь у нас всегда есть заготовленный шаблон конфига в самой системе influxdb. Нажимаем на название конфига и у нас открывается окно с полным шаблоном конфига, нам надо найти секцию [[outputs.influxdb_v2]] и в ней указать token который получили раньше. Формально это не рекомендуется и в продакшен все же так делать не стоит но у нас этот токен и так строго ограничен на запись одной конкретной корзины данных, так что пойдет. Так же в конфиге надо указать hostname в секции [agent] для того что бы корректно различать с какого хоста нам поступили данные. Сохраняем себе конфиг и идем на сервер, который хотим подключить. Нам надо поместить наш полученный файл по пути который указан в докере telegraf в моем примере /docker/telegraf/telegraf.conf Важный момент выходов, как и входов у telegraf может быть несколько в том числе и однотипных. Таким образом мы можем одновременно передавать данные в две базы influxdb или, например публиковать на сервер mqtt для использования в системе умного дома. Я в своей реализацию использую два сервера influxdb для сбора статистики одновременно, один для визуализации второй как резервная статистика на базе armbian tv box. Создаем docker compose файл по шаблону: version: "3" services: watchtower: image: telegraf:latest container_name: telegraf environment: - HOST_ETC=/hostfs/etc - HOST_PROC=/hostfs/proc - HOST_SYS=/hostfs/sys - HOST_VAR=/hostfs/var - HOST_RUN=/hostfs/run - HOST_MOUNT_PREFIX=/hostfs - TZ=Europe/Moscow volumes: - /:/hostfs:ro - /docker/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro После размещения конфига запускаем контейнер и проверяем что данные начали поступать в базу. Для этого идем в influxdb – data explorer Все теперь данные собираются и пишутся в базу, а Grafana уже может эти данные получать и визуализировать. Визуализация данных Покажу визуализацию на примере шаблона https://grafana.com/grafana/dashboards/20762-telegraf-system-metrics/ Чаще всего в шаблонах описано все что нам надо, но в первую очередь обращаем внимание на источник данных если не уточняется то по умолчанию считается что надо источник influx v1 это первый вариант подключения. Идем в меню Grafana пункт Dashboards Создаем новый путем импорта шаблона, можно использовать или номер шаблона или json. Указываем источник, для данного примера нам надо вариант обычный вариант Вот и все мы молодцы и имеем красивую панель мониторинга со всей информацией по серверу Несколько полезных советов по импорту: Если что то не работает в первую очередь проверьте в настройках импортируемого дашборада переменные что они корректно заданы под ваши настройки, иногда шаблоны не самого лучшего качества имеют захардкоженые имена корзин. Если хотите добавить новый блок удобней составлять запрос в Influxdb конструктором и взять от туда готовый вариант запроса для консоли. На этом основные настройки закончены, из Grafana можно настроить уведомления по условиям запросов практически в любой меседжер. Можно бесконечно совершенствовать таблицу или объединять данные с разных серверов на сводную таблицу, возможностей уйма но основная задача данного материала это базовая настройка. В дальнейшем расскажу как настроить мониторинг proxmox и роутеров на базе keenetic и openwrt. Вторая часть про мониторинг proxmox P.S. Делитесь хорошими и удобными панелями для Grafana или influxDB
×
×
  • Создать...

Важная информация

Вы принимаете наши Условия использования, Политика конфиденциальности, Правила. А также использование Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.

Яндекс.Метрика