Установка стека · 22 min read · Nov 24, 2025

Как установить стек TIG (Telegraf, InfluxDB и Grafana) на Debian 12

Стек TIG (Telegraf, InfluxDB и Grafana) — это аббревиатура для платформы открытых инструментов, которая упрощает сбор, хранение, графическое отображение и оповещение о системных метриках. Вы можете контролировать и визуализировать такие метрики, как память, дисковое пространство, вошедшие пользователи, нагрузка на систему, использование свопа, время работы, запущенные процессы и т. д. из одного места. Инструменты, используемые в стеке, следующие:

  • Telegraf — это агент сбора метрик с открытым исходным кодом для сбора и отправки данных и событий из баз данных, систем и IoT-датчиков. Он поддерживает различные плагины вывода, такие как InfluxDB, Graphite, Kafka и т. д., куда он может отправлять собранные данные.
  • InfluxDB — это база данных временных рядов с открытым исходным кодом, написанная на языке Go. Она оптимизирована для быстрого, высокодоступного хранения и подходит для всего, что связано с большими объемами временных данных, включая метрики, события и аналитические данные в реальном времени.
  • Grafana — это набор инструментов для визуализации и мониторинга данных с открытым исходным кодом. Он поддерживает различные плагины ввода, такие как Graphite, ElasticSearch, InfluxDB и т. д. Он предоставляет красивую панель управления и аналитику метрик, позволяя вам визуализировать и контролировать любые виды системных метрик и данных о производительности.

В этом руководстве вы узнаете, как установить и настроить стек TIG на одном сервере Debian 12.

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

  1. Сервер с установленным Debian 12 и минимум 1 ГБ ОЗУ.
  2. Пользователь без прав sudo с правами root.
  3. Простой брандмауэр (UFW) включен и работает.
  4. Полное доменное имя (FQDN), например grafana.example.com, указывающее на ваш сервер.
  5. Учетная запись SMTP с почтовым сервисом, таким как Amazon SES или Mailgun, для получения уведомлений по электронной почте о сервисных оповещениях.
  6. Убедитесь, что все обновлено. $ sudo apt update && sudo apt upgrade
  7. Для выполнения учебника и работы Craft CMS требуется несколько основных пакетов. Некоторые из них уже могут быть на вашем сервере. $ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y

Шаг 1 - Настройка брандмауэра

Перед установкой любых пакетов первым шагом является настройка брандмауэра для открытия портов для InfluxDB и Grafana.

Проверьте статус брандмауэра.

$ sudo ufw status

Вы должны увидеть что-то вроде следующего.

Статус: активен

Кому                       Действие      Откуда
--                         ------      ----
OpenSSH                    ALLOW       Везде
OpenSSH (v6)               ALLOW       Везде (v6)

Откройте порт 8086 для InfluxDB и 3000 для сервера Grafana.

$ sudo ufw allow 8086
$ sudo ufw allow 3000

Разрешите порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Проверьте статус снова, чтобы подтвердить.

$ sudo ufw status
Статус: активен

Кому                       Действие      Откуда
--                         ------      ----
OpenSSH                    ALLOW       Везде
8086                       ALLOW       Везде
3000                       ALLOW       Везде
80/tcp                     ALLOW       Везде
443                        ALLOW       Везде
OpenSSH (v6)               ALLOW       Везде (v6)
8086 (v6)                  ALLOW       Везде (v6)
3000 (v6)                  ALLOW       Везде (v6)
80/tcp (v6)                ALLOW       Везде (v6)
443 (v6)                   ALLOW       Везде (v6)

Шаг 2 - Установка InfluxDB

Мы будем использовать официальный репозиторий InfluxDB для его установки.

Скачайте GPG-ключ InfluxDB.

$ wget -q https://repos.influxdata.com/influxdata-archive_compat.key

Импортируйте GPG-ключ на сервер.

$ 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
influxdata-archive_compat.key: OK

Импортируйте репозиторий InfluxDB.

$ 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

У вас есть возможность установить InfluxDB 1.8.x или 2.0.x. Однако лучше использовать последнюю версию. Установите InfluxDB.

$ sudo apt install influxdb2

Запустите сервис InfluxDB.

$ sudo systemctl start influxdb

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

$ sudo systemctl status influxdb
? influxdb.service - InfluxDB — это распределенная база данных временных рядов с открытым исходным кодом
     Загружено: загружено (/lib/systemd/system/influxdb.service; включено; предустановлено: включено)
     Активно: активно (работает) с Вт 2024-01-02 02:39:41 UTC; 1с назад
       Документы: https://docs.influxdata.com/influxdb/
    Процесс: 5584 ExecStart=/usr/lib/influxdb/scripts/influxd-systemd-start.sh (код=выход, статус=0/УСПЕХ)
   Основной PID: 5585 (influxd)
      Задачи: 8 (лимит: 2299)
     Память: 53.1M
        CPU: 735ms
     CGroup: /system.slice/influxdb.service
             ??5585 /usr/bin/influxd
........

Шаг 3 - Создание базы данных InfluxDB и учетных данных пользователя

Чтобы хранить данные от Telegraf, вам нужно настроить базу данных Influx и пользователя.

InfluxDB поставляется с инструментом командной строки под названием influx для взаимодействия с сервером InfluxDB. Рассматривайте influx как инструмент командной строки mysql.

Запустите следующую команду для выполнения начальной настройки для Influx.

$ influx setup
> Добро пожаловать в InfluxDB 2.0!
? Пожалуйста, введите ваше основное имя пользователя navjot
? Пожалуйста, введите ваш пароль *************
? Пожалуйста, введите ваш пароль снова *************
? Пожалуйста, введите название вашей основной организации howtoforge
? Пожалуйста, введите название вашего основного бакета tigstack
? Пожалуйста, введите период хранения в часах или 0 для бесконечности 360
? Настроить с этими параметрами?
  Имя пользователя:          navjot
  Организация:      howtoforge
  Бакет:            tigstack
  Период хранения:  360ч0м0с
 Да
Пользователь    Организация    Бакет
navjot  howtoforge      tigstack

Вам нужно настроить ваше начальное имя пользователя, пароль, название организации, название основного бакета для хранения данных и период хранения в часах для этих данных. Ваши данные хранятся в файле /home/username/.influxdbv2/configs.

Вы также можете выполнить эту настройку, запустив URL http://:8086/ в вашем браузере. После выполнения начальной настройки вы можете войти по URL с учетными данными, созданными выше.

Страница входа InfluxDB

Вас должна встретить следующая панель.

Панель управления InfluxDB

Процесс начальной настройки создает токен по умолчанию, который имеет полный доступ на чтение и запись ко всем организациям в базе данных. Вам нужен новый токен для целей безопасности, который будет подключаться только к организации и бакету, к которым мы хотим подключиться.

Чтобы создать новый токен, нажмите на следующую иконку в левом боковом меню и нажмите на ссылку API Tokens, чтобы продолжить.

Вы перейдете на страницу API Tokens. Здесь вы увидите токен по умолчанию, который мы создали во время начальной настройки.

Страница токенов InfluxDB

Нажмите на кнопку Сгенерировать API токен и выберите опцию Пользовательский API токен, чтобы открыть новое всплывающее окно. Дайте имя токену (telegraf) и разверните раздел ресурсов, выбрав созданный по умолчанию бакет как в разделе Чтение, так и в разделе Запись.

Создание токена InfluxDB

Нажмите Сгенерировать, чтобы завершить создание токена. Нажмите кнопку Копировать в буфер обмена, чтобы скопировать токен. Кнопка может не работать в некоторых случаях, поэтому убедитесь, что вы подтвердили перед закрытием всплывающего окна.

Всплывающее окно токена Telegraf InfluxDB

Сохраните его на данный момент, так как он нам понадобится позже.

Это завершает установку и настройку InfluxDB. Далее нам нужно установить Telegraf.

Шаг 4 - Установка Telegraf

Telegraf и InfluxDB используют один и тот же репозиторий. Это означает, что вы можете установить Telegraf напрямую.

$ sudo apt install telegraf

Сервис Telegraf включен и запущен автоматически во время установки.

Telegraf — это агент, управляемый плагинами, и имеет 4 типа плагинов:

  1. Входные плагины собирают метрики.
  2. Плагины обработки трансформируют, декорируют и фильтруют метрики.
  3. Агрегирующие плагины создают и агрегируют метрики.
  4. Выходные плагины определяют назначения, куда отправляются метрики, включая InfluxDB.

Telegraf хранит свою конфигурацию для всех этих плагинов в файле /etc/telegraf/telegraf.conf. Первый шаг — подключить Telegraf к InfluxDB, включив выходной плагин influxdb_v2. Откройте файл /etc/telegraf/telegraf.conf для редактирования.

$ sudo nano /etc/telegraf/telegraf.conf

Найдите строку [[outputs.influxdb_v2]] и раскомментируйте ее, удалив # перед ней. Измените код ниже в следующем виде.

# # Конфигурация для отправки метрик в InfluxDB 2.0
 [[outputs.influxdb_v2]]
#   ## URL-адреса узлов кластера InfluxDB.
#   ##
#   ## Можно указать несколько URL-адресов для одного кластера, только ОДИН из
#   ## URL-адресов будет записан в каждый интервал.
#   ##   например: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
    urls = ["http://127.0.0.1:8086"]
#
#   ## Токен для аутентификации.
   token = "$INFLUX_TOKEN"
#
#   ## Организация — это название организации, в которую вы хотите записать.
   organization = "howtoforge"
#
#   ## Бакет назначения для записи.
   bucket = "tigstack"

Вставьте значение токена InfluxDB, сохраненное ранее, вместо переменной $INFLUX_TOKEN в приведенном выше коде.

Найдите строку INPUT PLUGINS, и вы увидите следующие входные плагины, включенные по умолчанию.

# Чтение метрик о загрузке процессора
[[inputs.cpu]]
  ## Следует ли сообщать о статистике по каждому процессору или нет
  percpu = true
  ## Следует ли сообщать о статистике общего процессора системы или нет
  totalcpu = true
  ## Если true, собирайте сырые метрики времени процессора
  collect_cpu_time = false
  ## Если true, вычисляйте и сообщайте сумму всех не-неактивных состояний процессора
  report_active = false
  ## Если true и информация доступна, добавьте теги core_id и physical_id
  core_tags = false


# Чтение метрик о использовании диска по точке монтирования
[[inputs.disk]]
  ## По умолчанию статистика будет собираться для всех точек монтирования.
  ## Установите mount_points, чтобы ограничить статистику только указанными точками монтирования.
  # mount_points = ["/"]

  ## Игнорировать точки монтирования по типу файловой системы.
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

  ## Игнорировать точки монтирования по параметрам монтирования.
  ## Команда 'mount' сообщает параметры всех монтирований в скобках.
  ## Связанные монтирования можно игнорировать с помощью специального параметра 'bind'.
  # ignore_mount_opts = []


# Чтение метрик о дисковом вводе-выводе по устройству
[[inputs.diskio]]
....
....

# Получение статистики ядра из /proc/stat
[[inputs.kernel]]
  # без конфигурации


# Чтение метрик о использовании памяти
[[inputs.mem]]
  # без конфигурации
  
# Получение количества процессов и группировка их по статусу
[[inputs.processes]]
  # без конфигурации


# Чтение метрик о использовании свопа
[[inputs.swap]]
  # без конфигурации


# Чтение метрик о нагрузке системы и времени работы
[[inputs.system]]
  # без конфигурации

Вы можете настроить дополнительные входные плагины в зависимости от ваших требований, включая Apache Server, контейнеры Docker, Elasticsearch, брандмауэр iptables, Kubernetes, Memcached, MongoDB, MySQL, Nginx, PHP-fpm, Postfix, RabbitMQ, Redis, Varnish, Wireguard, PostgreSQL и т. д.

Когда закончите, сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перезапустите сервис Telegraf, как только закончите применять изменения.

$ sudo systemctl restart telegraf

Шаг 5 - Проверьте, сохраняются ли статистические данные Telegraf в InfluxDB

Перед тем как продолжить, вам нужно проверить, правильно ли собираются статистические данные Telegraf и передаются в InfluxDB. Откройте интерфейс InfluxDB в вашем браузере, нажмите на вторую иконку в левом боковом меню и выберите меню Buckets.

Страница бакетов InfluxDB

Нажмите на tigstack, и вас должна встретить следующая страница.

Обозреватель данных InfluxDB

Нажмите на имя бакета, а затем нажмите на одно из значений в фильтре _measurement, и продолжайте нажимать на другие значения по мере их появления. Когда закончите, нажмите кнопку Отправить. Вы должны увидеть график вверху. Возможно, вам придется подождать некоторое время, чтобы данные появились. Мы изменили временной интервал с За последние 1 ч на За последние 5 мин, чтобы сгенерировать график на более большой площади.

Графики данных InfluxDB

Это должно подтвердить, что данные передаются правильно.

Шаг 6 - Установка Grafana

Мы будем использовать официальный репозиторий Grafana для его установки. Импортируйте GPG-ключ Grafana.

$ sudo mkdir -p /etc/apt/keyrings/
$ wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

Добавьте репозиторий в вашу систему.

$ echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Если вы хотите установить бета-версию Grafana, добавьте вместо этого следующий репозиторий.

$ echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Обновите список репозиториев системы.

$ sudo apt update

Установите Grafana.

$ sudo apt install grafana

Запустите и включите сервис Grafana.

$ sudo systemctl enable grafana-server --now

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

$ sudo systemctl status grafana-server
? grafana-server.service - Экземпляр Grafana
     Загружено: загружено (/lib/systemd/system/grafana-server.service; включено; предустановлено: включено)
     Активно: активно (работает) с Вт 2024-01-02 03:48:01 UTC; 3с назад
       Документы: http://docs.grafana.org
   Основной PID: 8769 (grafana)
      Задачи: 7 (лимит: 2299)
     Память: 42.6M
        CPU: 1.804s
     CGroup: /system.slice/grafana-server.service
             ??8769 /usr/share/grafana/bin/grafana server --config=/etc/grafana/grafana.ini --pidfile=/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana cfg:default.paths...
.......

Шаг 7 - Настройка источника данных Grafana

Запустите URL http://:3000 в вашем браузере, и следующая страница входа Grafana должна вас встретить.

Страница входа Grafana

Войдите с помощью имени пользователя по умолчанию admin и пароля admin. Далее вам нужно установить новый пароль по умолчанию.

Новый пароль Grafana

Вас должна встретить следующая домашняя страница Grafana. Нажмите на кнопку Добавить ваш первый источник данных.

Панель управления Grafana

Нажмите кнопку InfluxDB.

Добавить источник данных в Grafana

На следующей странице выберите Flux из выпадающего меню в качестве языка запросов. Вы можете использовать InfluxQL в качестве языка запросов, но его сложнее настроить, так как он по умолчанию поддерживает только InfluxDB v1.x. Flux поддерживает InfluxDB v2.x и легче настраивается и конфигурируется.

Выбор языка запросов Grafana

Введите следующие значения.

URL: http://localhost:8086 Данные для базовой аутентификации Пользователь: navjot Пароль:

Данные InfluxDB Организация: howtoforge Токен: Бакет по умолчанию: tigstack

Данные InfluxDB для Grafana

Нажмите на кнопку Сохранить и протестировать, и вы должны увидеть сообщение с подтверждением, что настройка прошла успешно.

Сохранить данные Grafana

Шаг 8 - Настройка панелей Grafana

Следующий шаг — настроить панели Grafana. Нажмите на меню гамбургера слева от Главная и нажмите Панели, чтобы открыть экран создания панели.

Элемент меню панели Grafana

Нажмите кнопку Создать панель, чтобы продолжить.

Страница создания панели Grafana

На следующей странице нажмите на кнопку Добавить визуализацию, чтобы открыть всплывающее окно, и нажмите influxdb-1, чтобы выбрать его в качестве источника данных.

Выбор источника данных Grafana

Вы перейдете на следующую страницу Редактировать панель.

Новая панель Grafana

Вставьте следующий код в редактор запросов.

from(bucket: "NAMEOFYOUBUCKET")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "cpu")
  |> filter(fn: (r) => r["_field"] == "usage_idle")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> map(fn: (r) => ({ r with _value: r._value * -1.0 + 100.0 }))
  |> toFloat()
  |> yield(name: "mean")

Используйте имя бакета, которое мы использовали выше. И имя хоста, которое вы можете получить из файла /etc/hostname.

Приведенный выше код будет вычислять использование процессора и генерировать график для него. Дайте панели заголовок.

Редактировать запрос панели Grafana

Нажмите кнопку Инспектор запросов, а затем нажмите кнопку Обновить, чтобы проверить, работает ли ваш запрос успешно. Нажмите на крестик, чтобы закрыть инспектор.

Результат инспектора запросов Grafana

Вы также можете назвать ось, используя поле Метка справа в разделе Ось.

Поле метки оси Grafana

Нажмите кнопку Применить, чтобы сохранить панель. Нажмите кнопку Сохранить панель, когда закончите.

Сохранить панель Grafana

Дайте имя панели и нажмите Сохранить, чтобы завершить.

Всплывающее окно сохранения панели Grafana

Это откроет панель, а затем нажмите кнопку Добавить визуализацию, чтобы создать другую панель.

Новая страница визуализации Grafana

Повторите процесс, создав другую панель для использования RAM.

from(bucket: "NAMEOFYOUBUCKET")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "mem")
  |> filter(fn: (r) => r["_field"] == "used_percent")
  |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

Используйте следующий код для отображения использования HDD.

from(bucket: "NAMEOFYOURBUCKET")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "disk")
  |> filter(fn: (r) => r["_field"] == "used")
  |> filter(fn: (r) => r["path"] == "/")
  |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> map(fn: (r) => ({ r with _value: r._value / 1000000.0 }))
  |> toFloat()  
  |> yield(name: "mean")

Вы можете создать неограниченное количество панелей.

Приведенный выше код основан на языке сценариев Flux. К счастью, вам не нужно изучать язык, чтобы писать запросы. Вы можете сгенерировать запрос из URL InfluxDB. Хотя изучение языка может помочь в оптимизации запросов.

Вам нужно вернуться на панель управления InfluxDB и открыть Страницу исследования, чтобы получить запрос.

Нажмите на имя бакета, а затем нажмите на одно из значений в фильтре _measurement, и продолжайте нажимать на другие значения по мере их появления. Когда закончите, нажмите кнопку Редактор сценариев, и вы должны увидеть следующую страницу. График также должен обновиться.

Страница запроса Grafana

Редактор сценариев InfluxDB

Скопируйте показанный запрос, и теперь вы можете использовать его на панели управления Grafana для построения ваших графиков.

Шаг 9 - Настройка оповещений и уведомлений

Основное назначение настройки мониторинга — получать оповещения вовремя, когда значение превышает определенный порог.

Первый шаг — установить место назначения, куда вы хотите получать оповещения. Вы можете получать уведомления по электронной почте, Slack, Kafka, Google Hangouts Chat, Microsoft Teams, Telegram и т. д.

Мы будем включать уведомления по электронной почте для нашего учебника. Чтобы настроить уведомления по электронной почте, нам нужно сначала настроить SMTP-сервис. Откройте файл /etc/grafana/grafana.ini для настройки SMTP.

$ sudo nano /etc/grafana/grafana.ini

Найдите следующую строку [smtp] в нем. Раскомментируйте следующие строки и введите значения для пользовательского SMTP-сервера.

[smtp]
enabled = true
host = email-smtp.us-west-2.amazonaws.com:587
user = YOURUSERNAME
# Если пароль содержит # или ;, вы должны обернуть его тройными кавычками. Например, """#password;"""
password = YOURUSERPASSWORD
;cert_file =
;key_file =
;skip_verify = false
from_address = [email protected]
from_name = HowtoForge Grafana
# Идентичность EHLO в диалоге SMTP (по умолчанию instance_name)
;ehlo_identity = dashboard.example.com
# Политика startTLS SMTP (по умолчанию 'OpportunisticStartTLS')
;startTLS_policy = NoStartTLS

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перезапустите сервер Grafana, чтобы применить настройки.

$ sudo systemctl restart grafana-server

Откройте страницу Grafana, нажмите на значок оповещения и нажмите на Контактные точки.

Всплывающее окно контактных точек Grafana

Grafana автоматически создает и настраивает точку контакта по электронной почте по умолчанию, которую необходимо настроить с правильным адресом электронной почты. Нажмите на кнопку редактирования рядом с контактной точкой grafana-default-email.

Редактировать контактную точку Grafana

Введите данные для настройки канала уведомлений по электронной почте.

Контактная точка уведомления по электронной почте Grafana

Если вы хотите отправить дополнительное сообщение, нажмите на ссылку Дополнительные настройки электронной почты и введите сообщение.

Дополнительные настройки электронной почты Grafana

Нажмите Тест, чтобы открыть всплывающее окно, а затем нажмите кнопку Отправить тестовое уведомление, чтобы проверить, работают ли настройки электронной почты. Нажмите Сохранить контактную точку, когда закончите.

Вы должны получить следующее электронное письмо, подтверждающее настройки.

Тестовое письмо Grafana

Теперь, когда мы настроили каналы уведомлений, нам нужно настроить оповещения о том, когда получать эти электронные письма. Чтобы настроить оповещения, вам нужно вернуться к панелям на панели управления.

Вернитесь на экран Панели. Нажмите на панель, которую мы только что создали, и вы получите ее домашнюю страницу с различными панелями. Чтобы отредактировать панель, нажмите на имя панели, и появится выпадающее меню. Нажмите на ссылку Редактировать, чтобы продолжить.

Редактировать панель на панели управления Grafana

Нажмите на панель Оповещения и нажмите на кнопку Новое правило оповещения, чтобы настроить новое оповещение. Мы создаем оповещение для панели использования процессора.

Кнопка создания правила оповещения Grafana

Теперь вы можете настроить условия, при которых Grafana будет отправлять оповещение. Нажмите на выпадающее меню Опции и выберите диапазон времени по умолчанию (сейчас-6ч до сейчас), чтобы изменить диапазон времени на Последние 15 минут, что означает, что он будет проверять с 15 минут назад до сейчас.

Редактировать диапазон времени оповещения Grafana

По умолчанию выбранный тип оповещения — управляемое Grafana оповещение. По умолчанию выбраны два выражения. Удалите их, нажав кнопку корзины рядом с ними. Выберите выпадающее меню Добавить выражение и выберите Классическое условие в качестве типа выражения.

Добавить тип выражения оповещения Grafana

Выражение оповещения Grafana

Нажмите Установить как условие оповещения, чтобы выбрать выбранное выражение для отправки оповещений. Это изменит поле выражения, как показано ниже.

Условие оповещения Grafana

Условия

Grafana работает по запросу следующего формата, чтобы определить, когда запускать оповещение.

avg() OF query(A) IS ABOVE 0.8
  • avg() контролирует, как значение для каждой серии должно быть уменьшено до сопоставимого значения по сравнению с порогом. Вы можете нажать на имя функции, чтобы выбрать другую функцию, такую как avg(), min(), max(), sum(), count() и т. д.

  • query(A) Буква в скобках определяет, какой запрос выполнять из вкладки Метрики.

  • IS BELOW 14 Определяет тип порога и значение порога. Вы можете нажать на IS BELOW, чтобы выбрать другой тип порога.

Вы можете добавить второе условие ниже, нажав на кнопку + под первым условием. В настоящее время вы можете использовать только операторы AND и OR между несколькими условиями.

Далее мы установим поведение оценки. Нажмите кнопку Новая папка, чтобы создать папку для хранения ваших правил. Нажмите кнопку Новая группа оценки, чтобы создать группу для объединения правил, которые будут оцениваться через одинаковый интервал времени. Установите интервал времени равным 5 минут при создании группы.

Группа оценки оповещения Grafana

Когда закончите, страница должна выглядеть следующим образом. Установите Состояние оповещения, если произошла ошибка выполнения или тайм-аут на Оповещение.

Поведение оценки оповещения Grafana

Правило

  • Имя - Введите описательное имя для оповещения
  • Папка - Создайте или выберите существующую папку для хранения вашего правила уведомления.
  • Группа - Введите имя для вашей группы оповещения. Оповещения в одной группе оцениваются через одинаковый интервал времени.
  • Ожидание - Укажите, как часто Grafana должна оценивать оповещение. Это также называется интервалом оценки. Вы можете установить любое значение, которое хотите, здесь.

Обработка отсутствующих данных и ошибок

Вы можете настроить, как Grafana должна обрабатывать запросы, которые возвращают отсутствующие данные или только нулевые значения, используя следующие условия:

  1. Нет данных - Установите состояние правила на NoData
  2. Оповещение - Установите состояние правила на Оповещение
  3. Хорошо - Установите состояние правила оповещения на Хорошо, так как вы получите оповещение, даже если все в порядке.

Вы можете сказать Grafana, как обрабатывать ошибки выполнения или тайм-ауты.

  1. Оповещение - Установите состояние правила на Оповещение
  2. Хорошо - Установите состояние правила оповещения на Хорошо, так как вы получите оповещение, даже если все в порядке.
  3. Ошибка - Установите состояние правила оповещения на Ошибка, чтобы указать, что есть проблема.

Когда закончите, нажмите кнопку Предварительный просмотр оповещений, чтобы увидеть, все ли работает нормально. Нажмите кнопку Сохранить правило и выйти в правом верхнем углу, чтобы завершить добавление оповещения. Теперь вы должны начать получать оповещения на вашу электронную почту. Вот пример одного из таких электронных писем.

Электронное письмо о использовании процессора Grafana

Шаг 10 - Установка Nginx

Debian 12 поставляется со старой версией Nginx. Вам нужно загрузить официальный репозиторий Nginx, чтобы установить последнюю версию.

Импортируйте ключ подписи Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Добавьте репозиторий для основной версии Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Обновите системные репозитории.

$ sudo apt update

Установите Nginx.

$ sudo apt install nginx

Проверьте установку. На системах Debian следующая команда будет работать только с sudo.

$ sudo nginx -v
nginx version: nginx/1.25.3

Запустите сервер Nginx.

$ sudo systemctl start nginx

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

$ sudo systemctl status nginx
? nginx.service - nginx - высокопроизводительный веб-сервер
     Загружено: загружено (/lib/systemd/system/nginx.service; включено; предустановлено: включено)
     Активно: активно (работает) с Вт 2024-01-02 09:21:10 UTC; 5с назад
       Документы: https://nginx.org/en/docs/
    Процесс: 12964 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (код=выход, статус=0/УСПЕХ)
   Основной PID: 12965 (nginx)
      Задачи: 3 (лимит: 2299)
     Память: 2.9M
        CPU: 86ms
     CGroup: /system.slice/nginx.service
             ??12965 "nginx: главный процесс /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??12966 "nginx: рабочий процесс"
             ??12967 "nginx: рабочий процесс"

Jan 02 09:21:10 grafana systemd[1]: Запуск nginx.service - nginx - высокопроизводительный веб-сервер...
Jan 02 09:21:10 grafana systemd[1]: Запущен nginx.service - nginx - высокопроизводительный веб-сервер.

Шаг 11 - Установка SSL

Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете установить Certbot, используя репозиторий Debian, или загрузить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Debian 12 не поставляется с установленным Snapd. Установите пакет Snapd.

$ sudo apt install snapd

Запустите следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core && sudo snap refresh core

Установите Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команда Certbot может быть выполнена, создав символическую ссылку в директорию /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Проверьте, работает ли Certbot правильно.

$ certbot --version
certbot 2.8.0

Запустите следующую команду для генерации SSL-сертификата.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d grafana.example.com

Приведенная выше команда загрузит сертификат в директорию /etc/letsencrypt/live/grafana.example.com на вашем сервере.

Сгенерируйте сертификат группы Диффи-Хеллмана.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Проверьте службу планировщика обновления Certbot.

$ systemctl list-timers

Вы найдете snap.certbot.renew.service как одну из служб, запланированных для выполнения.

NEXT                        LEFT        LAST                        PASSED    UNIT                         ACTIVATES
-----------------------------------------------------------------------------------------------------------------------------------------
Tue 2024-01-02 15:24:52 UTC 6ч осталось     Mon 2024-01-01 15:24:52 UTC 17ч назад   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Tue 2024-01-02 20:05:29 UTC 10ч осталось    Tue 2024-01-02 09:02:47 UTC 21мин назад   apt-daily.timer              apt-daily.service
Tue 2024-01-02 20:35:00 UTC 11ч осталось    -                           -         snap.certbot.renew.timer     snap.certbot.renew.service

Проведите пробный запуск процесса, чтобы проверить, работает ли обновление SSL.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, вы готовы. Ваш сертификат будет автоматически обновляться.

Шаг 12 - Настройка Nginx для Grafana и InfluxDB

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size 64;

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Создайте и откройте файл /etc/nginx/conf.d/grafana.conf для редактирования.

$ sudo nano /etc/nginx/conf.d/grafana.conf

Вставьте следующий код в него. Замените grafana.example.com на ваше доменное имя.

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {

    listen 443 ssl reuseport;
    listen [::]:443 ssl reuseport;

    http2 on;

    server_name grafana.example.com;

    access_log  /var/log/nginx/grafana.access.log;
    error_log   /var/log/nginx/grafana.error.log;

    ssl_certificate      /etc/letsencrypt/live/grafana.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/grafana.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/grafana.example.com/chain.pem;

    ssl_session_timeout  5м;
    ssl_session_cache shared:MozSSL:10м;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=60s;
    resolver_timeout 2s;

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://localhost:3000;
    }

    location /api/live {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $http_host;
        proxy_pass http://localhost:3000;
    }

    location /influxdb/ {
      access_log /var/log/nginx/influx.access.log;
        error_log /var/log/nginx/influx.error.log;
        rewrite ^/influxdb$ /influxdb/ permanent;
        rewrite ^/influxdb/(.*)$ /$1 break;
        proxy_cookie_path ~*^/api /influxdb/api;
        proxy_connect_timeout 600s;
        proxy_http_version 1.1;
        proxy_pass http://localhost:8086;
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
        proxy_set_header Authorization $http_authorization;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
        sub_filter '' '';
        sub_filter 'src="/' 'src="/influxdb/';
        sub_filter 'href="/' 'href="/influxdb/';
        sub_filter 'data-basepath="' 'data-basepath="/influxdb/';
        sub_filter 'n.p="/' 'n.p="/influxdb/';
        sub_filter 'o.p="/' 'o.p="/influxdb/';
        sub_filter '/api/' '/influxdb/api/';
        sub_filter 'api/v2/query' 'influxdb/api/v2/query';
        sub_filter '/health`' '/influxdb/health`';
        sub_filter_types text/css text/javascript application/javascript application/json;
        sub_filter_once off;
    }
}
# принудить HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name grafana.example.com;
    return 301 https://$host$request_uri;
}

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Проверьте вашу конфигурацию Nginx.

$ sudo nginx -t

Перезапустите сервер Nginx.

$ sudo systemctl restart nginx

Настройка Telegraf для HTTPS

Откройте файл /etc/telegraf/telegraf.conf для редактирования.

$ sudo nano /etc/telegraf/telegraf.conf

Найдите раздел [[outputs.influxdb_v2]] и измените значение URL на https://grafana.nspeaks.com/influxdb, чтобы данные между InfluxDB и Telegraf были защищены.

urls = ["https://grafana.example.com/influxdb"]

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перезапустите сервис Telegraf.

$ sudo systemctl restart telegraf

Настройка Grafana для HTTPS

Далее нам нужно настроить Grafana для доступа по HTTPS. Откройте файл /etc/grafana/grafana.ini для редактирования.

$ sudo nano /etc/grafana/grafana.ini

Найдите раздел [server] и измените переменную domain и root_url следующим образом.

# Общественное доменное имя, используемое для доступа к grafana из браузера
;domain = localhost
domain = grafana.example.com

# Перенаправление на правильное доменное имя, если заголовок хоста не совпадает с доменом
# Предотвращает атаки повторной привязки DNS
;enforce_domain = true

# Полный публичный URL, который вы используете в браузере, используемый для перенаправлений и электронной почты
# Если вы используете обратный прокси и подпуть, укажите полный URL (с подпутем)
;root_url = %(protocol)s://%(domain)s:%(http_port)s/
root_url = %(protocol)s://%(domain)s

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перезапустите сервер Grafana.

$ sudo systemctl restart grafana-server

Закрыть порты брандмауэра для InfluxDB и Grafana

Вам также следует закрыть порты InfluxDB и Grafana.

$ sudo ufw delete allow 8086
$ sudo ufw delete allow 3000

Grafana должна быть доступна по адресу https://grafana.example.com, а интерфейс и API InfluxDB должны быть доступны по URL https://grafana.example.com/influxdb.

Заключение

Это завершает учебник по установке и настройке стека TIG на сервере Debian 12. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.