Установка стека · 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.
Предварительные требования
- Сервер с установленным Debian 12 и минимум 1 ГБ ОЗУ.
- Пользователь без прав sudo с правами root.
- Простой брандмауэр (UFW) включен и работает.
- Полное доменное имя (FQDN), например
grafana.example.com, указывающее на ваш сервер. - Учетная запись SMTP с почтовым сервисом, таким как Amazon SES или Mailgun, для получения уведомлений по электронной почте о сервисных оповещениях.
- Убедитесь, что все обновлено.
$ sudo apt update && sudo apt upgrade - Для выполнения учебника и работы 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:// в вашем браузере. После выполнения начальной настройки вы можете войти по URL с учетными данными, созданными выше.

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

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

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

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

Сохраните его на данный момент, так как он нам понадобится позже.
Это завершает установку и настройку InfluxDB. Далее нам нужно установить Telegraf.
Шаг 4 - Установка Telegraf
Telegraf и InfluxDB используют один и тот же репозиторий. Это означает, что вы можете установить Telegraf напрямую.
$ sudo apt install telegraf
Сервис Telegraf включен и запущен автоматически во время установки.
Telegraf — это агент, управляемый плагинами, и имеет 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.

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

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

Это должно подтвердить, что данные передаются правильно.
Шаг 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:// в вашем браузере, и следующая страница входа Grafana должна вас встретить.

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

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

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

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

Введите следующие значения.
URL: http://localhost:8086 Данные для базовой аутентификации Пользователь: navjot Пароль:
Данные InfluxDB Организация: howtoforge Токен: Бакет по умолчанию: tigstack

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

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

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

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

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

Вставьте следующий код в редактор запросов.
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.
Приведенный выше код будет вычислять использование процессора и генерировать график для него. Дайте панели заголовок.

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

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

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

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

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

Повторите процесс, создав другую панель для использования 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 для построения ваших графиков.
Шаг 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-default-email.

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

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

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

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

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

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

По умолчанию выбранный тип оповещения — управляемое 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 должна обрабатывать запросы, которые возвращают отсутствующие данные или только нулевые значения, используя следующие условия:
- Нет данных - Установите состояние правила на
NoData - Оповещение - Установите состояние правила на
Оповещение - Хорошо - Установите состояние правила оповещения на
Хорошо, так как вы получите оповещение, даже если все в порядке.
Вы можете сказать 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. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.