Сбор и визуализация метрик сервера: настройка стека Telegraf, InfluxDB и Grafana | AdminWiki

Сбор и визуализация метрик сервера: настройка стека Telegraf, InfluxDB и Grafana

26 июля 2026 11 мин. чтения

Мониторинг сервера без инструментов - это работа вслепую. Вы не знаете, что происходит с CPU под нагрузкой, когда закончится место на диске и какой интерфейс генерирует аномальный трафик. Стек TIG - Telegraf, InfluxDB и Grafana - решает эту задачу. Это легковесная альтернатива Prometheus, которая не требует развертывания Kubernetes или сложной экосистемы экспортеров. Один бинарник Telegraf собирает метрики, InfluxDB эффективно хранит временные ряды, а Grafana строит наглядные дашборды.

В этой статье вы пройдете полный путь: от установки InfluxDB 2.x до создания первого дашборда с графиками загрузки CPU, использования дисков и сетевого трафика. Все конфигурации проверены на практике. Вы получите работающий мониторинг за 30-40 минут.

Если вам нужна готовая система с алертингом и оповещениями в Telegram или Slack, обратите внимание на стек Prometheus + Grafana. Там мы разбираем полный цикл с Alertmanager. А здесь сосредоточимся на TIG - связке, которую ценят за простоту конфигурации и удобство работы с временными рядами.

Зачем нужен стек TIG и когда он лучше Prometheus

Prometheus - стандарт де-факто для облачных инфраструктур. Pull-модель сбора, Service Discovery, мощный язык PromQL. Но у этой гибкости есть цена. Prometheus требует настройки экспортеров для каждого типа метрик, отдельного Alertmanager для оповещений и долгосрочного хранилища при масштабировании. Для мониторинга десятка серверов или VPS это избыточно.

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

Выбирайте TIG, если:

  • У вас небольшой или средний парк серверов - до 50-100 узлов
  • Нужна простая push-модель: агенты сами отправляют метрики в базу
  • Требуется гибкая обработка данных на стороне хранилища - Flux позволяет делать агрегации и джойны без промежуточных инструментов
  • Вы цените единую конфигурацию агента вместо зоопарка экспортеров

Prometheus оправдан в Kubernetes-кластерах, микросервисных архитектурах и средах с динамическим Service Discovery. Для детального сравнения подходов к мониторингу читайте наш разбор ключевых инженерных метрик - там мы показываем, какие показатели важны на старте и как их интерпретировать.

Архитектура мониторинга: как Telegraf, InfluxDB и Grafana работают вместе

Поток данных в стеке TIG линеен и прозрачен. Агент Telegraf запускается на каждом сервере, который нужно мониторить. Он опрашивает системные счетчики через плагины ввода - CPU, память, диски, сеть, процессы - и формирует метрики в формате Line Protocol. Каждая метрика содержит измерение (measurement), теги для фильтрации и поля со значениями.

Собранные данные отправляются в InfluxDB. Агент подключается к HTTP API базы, аутентифицируется по токену и пишет метрики в указанный бакет. Бакет - это логический контейнер для временных рядов с настраиваемым сроком хранения. InfluxDB 2.x использует движок TSM для эффективного сжатия и быстрых запросов по времени.

Grafana выступает слоем визуализации. Она подключается к InfluxDB как к источнику данных через Flux-запросы. Вы строите панели с графиками, таблицами и единичными показателями, комбинируете их в дашборды и настраиваете автообновление. Схема проста: Telegraf собирает, InfluxDB хранит, Grafana показывает.

Для кластерных сред с высокими требованиями к доступности архитектура усложняется. В нашем руководстве по observability в Kubernetes мы разбираем, как объединить метрики, логи и трейсы в едином стеке с корреляцией данных в Grafana.

Установка и настройка InfluxDB 2.x

Начнем с хранилища. InfluxDB 2.x доступна через официальные репозитории для Debian/Ubuntu и RHEL/CentOS. Мы рассмотрим установку на Ubuntu 22.04 - для других дистрибутивов шаги аналогичны, отличаются только пути к конфигурациям.

Добавьте ключ и репозиторий InfluxData:

wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c
cat influxdata-archive_compat.key | gpg --dearmor | sudo 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' | sudo tee /etc/apt/sources.list.d/influxdata.list

Установите пакет и запустите службу:

sudo apt update
sudo apt install influxdb2
sudo systemctl enable --now influxdb

После запуска веб-интерфейс доступен на порту 8086. Откройте http://your-server-ip:8086 и выполните начальную настройку: задайте имя пользователя, пароль, название организации и первый бакет. Эти данные понадобятся для подключения Telegraf и Grafana.

Для серверов с ограниченными ресурсами рассмотрите облачные решения. Timeweb Cloud предоставляет готовые VDS с предустановленными шаблонами мониторинга, что экономит время на развертывание инфраструктуры.

Создание бакета для метрик сервера

Бакет - это контейнер для ваших метрик. При начальной настройке вы уже создали первый бакет. Для production-среды рекомендую создать отдельный бакет с явно заданной политикой хранения. Через веб-интерфейс перейдите в раздел Data → Buckets → Create Bucket. Укажите имя, например, server_metrics, и задайте retention period. Для системных метрик достаточно 30 дней, если вы не строите долгосрочную аналитику.

Создайте токен доступа с правами на запись в этот бакет. В разделе Data → Tokens → Generate Token выберите Custom API Token. Предоставьте права на чтение и запись для бакета server_metrics. Скопируйте токен - он отобразится только один раз. Этот токен Telegraf будет использовать для аутентификации.

Проверьте работоспособность через CLI. Выполните запрос к API InfluxDB:

curl -H "Authorization: Token YOUR_TOKEN" http://localhost:8086/health

Ответ с кодом 200 и статусом "ready" подтверждает, что база работает и принимает подключения.

Настройка Telegraf для сбора метрик CPU, дисков и сети

Telegraf - агент, который будет запущен на каждом целевом сервере. Установите его из того же репозитория InfluxData:

sudo apt install telegraf

Конфигурационный файл находится по пути /etc/telegraf/telegraf.conf. Стандартный файл содержит сотни закомментированных плагинов. Мы создадим минимальную рабочую конфигурацию. Сделайте резервную копию оригинала и откройте редактор:

sudo cp /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.bak
sudo nano /etc/telegraf/telegraf.conf

Замените содержимое на базовую структуру с агентом, плагинами ввода и выводом в InfluxDB:

[agent]
  interval = "10s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "10s"
  flush_jitter = "0s"
  precision = ""
  hostname = ""
  omit_hostname = false

[[outputs.influxdb_v2]]
  urls = ["http://localhost:8086"]
  token = "YOUR_INFLUXDB_TOKEN"
  organization = "YOUR_ORG_NAME"
  bucket = "server_metrics"

[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = false

[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

[[inputs.net]]
  interfaces = ["eth0", "ens*"]

[[inputs.mem]]

[[inputs.system]]

[[inputs.diskio]]

Разберем ключевые параметры. Секция agent задает интервал сбора - 10 секунд, размер пакета и буфера. output определяет, куда отправлять данные: URL вашего сервера InfluxDB, токен, организацию и бакет. Подставьте свои значения из начальной настройки.

Плагины ввода собирают конкретные метрики. Мы включили cpu, disk, net, mem, system и diskio - этого достаточно для полной картины состояния сервера. Дополнительно Telegraf поддерживает плагины для Nginx, PostgreSQL, Redis и сотен других сервисов. Полный список доступен в официальной документации InfluxData.

Конфигурация плагина CPU

Плагин cpu собирает метрики загрузки процессора из /proc/stat. Параметр percpu = true включает сбор по каждому ядру отдельно - это помогает заметить неравномерную нагрузку. totalcpu = true добавляет агрегированные значения по всем ядрам. Поля, которые попадут в InfluxDB: usage_idle, usage_system, usage_user, usage_iowait, usage_irq и другие.

Метрика usage_idle показывает процент времени, которое процессор провел в бездействии. Это ключевой показатель: если usage_idle стабильно ниже 10%, процессор перегружен. usage_iowait указывает на ожидание операций ввода-вывода - высокие значения говорят о проблемах с дисковой подсистемой.

Конфигурация плагина дисков

Плагин disk мониторит использование файловых систем. Параметр ignore_fs исключает виртуальные и временные ФС, которые не несут полезной информации для мониторинга. Плагин собирает поля: total (общий объем), free (свободно), used (занято), used_percent (процент заполнения), inodes_total, inodes_free, inodes_used.

used_percent - критический показатель. При достижении 80% на разделе с логами или базой данных система может стать нестабильной. Настройте алерт в Grafana на этот порог. inodes_free важен для серверов с большим количеством мелких файлов: можно исчерпать inodes при наличии свободного места.

Конфигурация плагина сети

Плагин net собирает статистику сетевых интерфейсов из /proc/net/dev. Параметр interfaces фильтрует конкретные интерфейсы - укажите свои. Подстановка ens* захватит все интерфейсы с префиксом ens. Основные поля: bytes_sent, bytes_recv, packets_sent, packets_recv, err_in, err_out, drop_in, drop_out.

bytes_sent и bytes_recv показывают объем переданного и принятого трафика с момента запуска системы. В Grafana эти значения агрегируют в скорость передачи данных - производную по времени. Ошибки и дропы пакетов указывают на проблемы с сетевым стеком или физическим подключением.

После редактирования конфигурации проверьте синтаксис и перезапустите агент:

sudo telegraf --config /etc/telegraf/telegraf.conf --test
sudo systemctl restart telegraf
sudo journalctl -u telegraf -f

Флаг --test выполняет однократный сбор метрик и выводит их в stdout - вы увидите, какие данные попадут в InfluxDB. Логи покажут успешное подключение к базе или ошибки, если они есть.

Подключение InfluxDB к Grafana и создание первого дашборда

Grafana завершает стек. Установите её из официального репозитория:

sudo apt-get install -y software-properties-common wget
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
sudo systemctl enable --now grafana-server

Веб-интерфейс Grafana доступен на порту 3000. Стандартные учетные данные: admin/admin. При первом входе система предложит сменить пароль.

Добавьте источник данных InfluxDB. Перейдите в Connections → Data Sources → Add data source. Выберите InfluxDB. В настройках укажите:

  • Query Language: Flux
  • URL: http://localhost:8086
  • Organization: название вашей организации из InfluxDB
  • Token: токен доступа
  • Default Bucket: server_metrics

Нажмите Save & Test. Grafana проверит подключение и сообщит об успехе. Теперь можно строить дашборды.

Написание первого Flux-запроса для графика CPU

Flux - функциональный язык запросов InfluxDB. Он заменил InfluxQL в версии 2.x и дает больше возможностей для обработки данных. Создайте новую панель в дашборде и вставьте запрос:

from(bucket: "server_metrics")
  |> range(start: -15m)
  |> filter(fn: (r) => r["_measurement"] == "cpu")
  |> filter(fn: (r) => r["_field"] == "usage_idle")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> aggregateWindow(every: 1m, fn: mean, createEmpty: false)
  |> map(fn: (r) => ({ r with _value: 100.0 - r._value }))

Разберем по шагам. from выбирает бакет. range задает временной интервал - последние 15 минут. Три фильтра отбирают измерение cpu, поле usage_idle и агрегированное значение cpu-total. aggregateWindow усредняет метрики по минутам, чтобы график был читаемым. map преобразует idle в utilization: вычитает значение из 100. В результате вы получаете график загрузки CPU в процентах.

Для графика использования диска замените фильтры на измерение disk и поле used_percent. Для сетевого трафика используйте измерение net, поля bytes_sent и bytes_recv с агрегацией derivative для получения скорости в байтах в секунду.

Готовый дашборд можно импортировать из сообщества Grafana. Перейдите в Dashboards → Import, введите ID 928 (Telegraf System Dashboard) или 1443 (Node Exporter Full - адаптируйте под Telegraf). Система загрузит набор панелей и предложит выбрать источник данных. Через минуту вы получите полноценный дашборд с графиками CPU, памяти, дисков, сети и системных метрик.

Если ваша инфраструктура включает специализированные сервисы, посмотрите наше руководство по созданию единых дашбордов с интеграцией Prometheus, InfluxDB и Elasticsearch. Там мы разбираем продвинутые сценарии визуализации для комплексных систем.

Типичные ошибки и их решение

При настройке стека TIG встречаются повторяющиеся проблемы. Вот самые частые и способы их устранения.

Telegraf не подключается к InfluxDB - ошибка 401 Unauthorized. Причина: неверный токен или организация. Проверьте токен в конфигурации Telegraf. Убедитесь, что в InfluxDB токен имеет права на запись в целевой бакет. Выполните тестовый запрос curl с этим токеном к /api/v2/buckets - если возвращается 401, токен недействителен.

Grafana не видит данные - пустые графики. Причина: несовпадение временных зон или неправильный бакет по умолчанию. В настройках источника данных Grafana проверьте Default Bucket. В панели убедитесь, что диапазон времени (range) перекрывает период, за который есть данные. Используйте Data Explorer в Grafana для отладки - он покажет сырые данные из InfluxDB.

Метрики дисков отсутствуют для некоторых разделов. Причина: файловая система попала в ignore_fs. Проверьте конфигурацию плагина disk в Telegraf. Выполните df -T на сервере, чтобы узнать тип ФС, и уберите его из списка исключений, если раздел нужен для мониторинга.

Высокая нагрузка на InfluxDB при большом количестве агентов. Причина: слишком частый интервал сбора или избыточные плагины. Увеличьте interval в секции agent до 30 или 60 секунд. Отключите плагины, метрики которых не используются в дашбордах. Настройте политику хранения - данные старше 30 дней удаляются автоматически и снижают нагрузку на хранилище.

Grafana показывает ошибку «InfluxDB Error: unauthorized access». Причина: токен в Grafana не имеет прав на чтение. В InfluxDB создайте отдельный токен с правами чтения для Grafana. Не используйте один токен для Telegraf и Grafana - это нарушает принцип минимальных привилегий.

Заключение: что дальше?

Вы развернули работающий стек мониторинга. Telegraf собирает метрики CPU, памяти, дисков и сети каждые 10 секунд. InfluxDB хранит временные ряды с настроенной политикой хранения. Grafana показывает состояние сервера на наглядных дашбордах. Это база, которую можно расширять под свои задачи.

Следующие шаги для усиления мониторинга:

  • Настройте алертинг в Grafana. Создайте правила для критических порогов: CPU > 90% в течение 5 минут, диск заполнен на 85%, сетевые ошибки > 0. Подключите каналы уведомлений - Telegram, Slack, Email.
  • Добавьте плагины Telegraf для ваших сервисов: nginx, postgresql, redis, docker. Каждый плагин дает специфичные метрики, которые помогают находить узкие места на уровне приложений.
  • Изучите продвинутые возможности Flux: джойны между измерениями, скользящие средние, прогнозирование на основе исторических данных.
  • Настройте мониторинг кластерных решений. В статье по мониторингу маршрутизации мы разбираем метрики сетевой инфраструктуры и способы их визуализации.

Стек TIG - это фундамент. Начните с базового мониторинга, который вы настроили сегодня, и наращивайте покрытие по мере роста инфраструктуры. Система, которую вы построили, уже экономит вам время: вместо ручной проверки серверов вы видите состояние всей инфраструктуры на одном экране.

Поделиться:
Сохранить гайд? В закладки браузера