Документацияbreadcrumb arrow Grafanabreadcrumb arrow Документация GlaberGraphbreadcrumb arrow Учебные материалыbreadcrumb arrow Потоковая передача метрик из Telegraf в Grafana

Введение

Grafana v8 представила возможности потоковой передачи — способ отправки данных на панели интерфейса почти в реальном времени. В этом учебном руководстве мы покажем, как возможности потоковой передачи в реальном времени Grafana можно использовать вместе с Telegraf для мгновенного отображения системных измерений.

В этом учебном руководстве вы:

  • Настроите Telegraf и будете выводить измерения непосредственно на панель временных рядов Grafana почти в реальном времени.

Предварительные требования

  • Grafana 8.0+
  • Telegraf

Запуск Grafana и создание токена администратора

  1. Запустите Grafana, следуя инструкциям по установке для вашей операционной системы.
  2. Войдите и перейдите в Configuration -> API Keys.
  3. Нажмите кнопку «Add API key» и создайте новый токен API с ролью Admin.

Настройка и запуск Telegraf

Telegraf — это управляемый плагинами серверный агент для сбора и отправки метрик и событий из баз данных, систем и IoT-датчиков.

Вы можете установить его, следуя официальным инструкциям по установке.

В этом учебном руководстве мы будем использовать выходной плагин HTTP Telegraf для отправки метрик в формате Influx в Grafana. Мы можем использовать такую конфигурацию:

[agent]
  interval = "1s"
  flush_interval = "1s"

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

[[outputs.http]]
  url = "http://localhost:3000/api/live/push/custom_stream_id"
  data_format = "influx"
  [outputs.http.headers]
    Authorization = "Bearer <Ваш ключ API>"

Обязательно замените заполнитель <Ваш ключ API> на ваш фактический ключ API, созданный на предыдущем шаге. Сохраните эту конфигурацию в файл telegraf.conf и запустите Telegraf, указав на этот файл конфигурации. Telegraf будет периодически (раз в секунду) сообщать состояние общего использования CPU на хосте в Grafana (которая, как предполагается, работает на http://localhost:3000). Конечно, вы можете заменить custom_stream_id на что-то более значимое для вашего варианта использования.

Внутри Grafana данные Influx преобразуются в кадры данных Grafana, а затем кадры публикуются в каналы Grafana Live. В этом случае канал, в котором будут публиковаться данные CPU, — это stream/custom_stream_id/cpu. Область stream постоянна, пространство имён custom_stream_id — это последняя часть URL API, заданного в конфигурации Telegraf (http://localhost:3000/api/live/push/telegraf), а путь — cpu, имя измерения.

Единственное, что осталось, — это создать дашборд с потоковыми данными.

Создание дашборда с потоковыми данными

  1. Нажмите Dashboards в меню слева.
  2. Нажмите New и выберите New Dashboard.
  3. На пустом дашборде нажмите + Add visualization.
  4. В открывшемся модальном окне выберите источник данных -- Grafana --.
  5. Выберите тип запроса Live Measurements.
  6. Найдите и выберите измерение stream/custom_stream_id/cpu для поля Channel.
  7. Сохраните изменения дашборда.

После выполнения этих шагов интерфейс Grafana должен подписаться на канал stream/custom_stream_id/cpu, и вы должны увидеть обновления данных CPU, поступающие из Telegraf, почти в реальном времени.

Потоковая передача с использованием конечной точки WebSocket

Если вы нацелены на высокочастотную отправку обновлений, вы можете использовать выходной плагин WebSocket Telegraf (представленный в Telegraf v1.19.0) вместо выходного плагина HTTP, который мы использовали выше. Настройте выходной плагин WebSocket следующим образом:

[agent]
  interval = "500ms"
  flush_interval = "500ms"

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

[[outputs.websocket]]
  url = "ws://localhost:3000/api/live/push/custom_stream_id"
  data_format = "influx"
  [outputs.websocket.headers]
    Authorization = "Bearer <Ваш ключ API>"

WebSocket позволяет избежать запуска всего HTTP-middleware Grafana при каждом запросе от Telegraf, что значительно снижает использование CPU бэкендом Grafana.

Резюме

В этом учебном руководстве вы узнали, как использовать Telegraf для потоковой передачи метрик в реальном времени в Grafana.