Введение
Grafana v8 представила возможности потоковой передачи — способ отправки данных на панели интерфейса почти в реальном времени. В этом учебном руководстве мы покажем, как возможности потоковой передачи в реальном времени Grafana можно использовать вместе с Telegraf для мгновенного отображения системных измерений.
В этом учебном руководстве вы:
- Настроите Telegraf и будете выводить измерения непосредственно на панель временных рядов Grafana почти в реальном времени.
Предварительные требования
- Grafana 8.0+
- Telegraf
Запуск Grafana и создание токена администратора
- Запустите Grafana, следуя инструкциям по установке для вашей операционной системы.
- Войдите и перейдите в Configuration -> API Keys.
- Нажмите кнопку «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, имя измерения.
Единственное, что осталось, — это создать дашборд с потоковыми данными.
Создание дашборда с потоковыми данными
- Нажмите Dashboards в меню слева.
- Нажмите New и выберите New Dashboard.
- На пустом дашборде нажмите + Add visualization.
- В открывшемся модальном окне выберите источник данных
-- Grafana --. - Выберите тип запроса
Live Measurements. - Найдите и выберите измерение
stream/custom_stream_id/cpuдля поля Channel. - Сохраните изменения дашборда.
После выполнения этих шагов интерфейс 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.