Установка и настройка Telegraf на Ubuntu
Пошаговая настройка Telegraf с отправкой метрик в InfluxDB: подключение репозитория, установка, конфиг, автозапуск, проверка и известный фикс ошибки с GPG-ключом.
Каждый блок кода ниже рассчитан на копирование целиком.
1. Подключение репозитория InfluxData
Ключ репозитория (актуальный, .gpg-формат вместо устаревшего apt-key):
sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://repos.influxdata.com/influxdata-archive.key | sudo gpg --dearmor -o /etc/apt/keyrings/influxdata.gpg
Проверка, что ключ действительно скачался и не битый (необязательно, но полезно):
gpg --show-keys /etc/apt/keyrings/influxdata.gpg
В выводе должен быть отпечаток DA61 C26A 0585 BD3B.
Сам источник APT:
echo "deb [signed-by=/etc/apt/keyrings/influxdata.gpg] https://repos.influxdata.com/ubuntu stable main" | sudo tee /etc/apt/sources.list.d/influxdata.list
2. Установка
sudo apt update && sudo apt install telegraf influxdata-archive-keyring -y
Если при обновлении пакет спросит про изменённый конфиг — выбрать install the package maintainer's version (первый пункт). Свои настройки всё равно пишем заново на шаге 3, так что перезаписывать конфиг безопасно.
3. Конфигурация
Открываем конфиг:
sudo nano /etc/telegraf/telegraf.conf
Содержимое (заменить hostname, urls, database, username, password на свои):
[global_tags]
# Configuration for telegraf agent
[agent]
interval = "10s"
debug = false
hostname = "server1.domain.sas"
round_interval = true
flush_interval = "10s"
flush_jitter = "0s"
collection_jitter = "0s"
metric_batch_size = 1000
metric_buffer_limit = 40000
quiet = false
logfile = ""
omit_hostname = false
###############################################################################
# OUTPUTS #
###############################################################################
[[outputs.influxdb]]
urls = [ "https://influx.domain.sas" ]
database = "db"
username = "user"
password = "password"
###############################################################################
# INPUTS #
###############################################################################
[[inputs.cpu]]
[[inputs.disk]]
[[inputs.diskio]]
[[inputs.mem]]
[[inputs.system]]
[[inputs.swap]]
[[inputs.net]]
[[inputs.nstat]]
[[inputs.netstat]]
[[inputs.processes]]
[[inputs.kernel]]
###############################################################################
# PROCESSORS #
###############################################################################
###############################################################################
# AGGREGATORS #
###############################################################################
Проверка синтаксиса перед перезапуском — обязательна, чтобы не запускать сервис на битом конфиге:
telegraf --config /etc/telegraf/telegraf.conf --test
4. Права sudo для сбора метрик Fail2ban
Нужно, только если в конфиге есть [[inputs.exec]], дёргающий fail2ban-client status — по умолчанию у пользователя telegraf прав на это нет. Как и в примере с sudoers для рабочего пользователя, правило пишем отдельным файлом в /etc/sudoers.d/, а не правкой /etc/sudoers:
sudo tee /etc/sudoers.d/telegraf >/dev/null <<'EOF'
telegraf ALL=(root) NOPASSWD: /usr/bin/fail2ban-client status
telegraf ALL=(root) NOPASSWD: /usr/bin/fail2ban-client status *
Defaults!/usr/bin/fail2ban-client !logfile, !syslog, !pam_session
EOF
sudo chmod 440 /etc/sudoers.d/telegraf
sudo visudo -c -f /etc/sudoers.d/telegraf
Проверка синтаксиса обязательна — ошибка в sudoers ломает sudo целиком. Ожидаемый вывод: parsed OK.
5. Запуск и автозапуск
sudo systemctl restart telegraf && sudo systemctl enable telegraf
5.6. Проверка
Статус сервиса:
sudo systemctl status telegraf --no-pager
Логи в реальном времени — там же будет видно, если InfluxDB отвергает метрики (неверный пароль, недоступный хост и т. п.):
sudo journalctl -u telegraf -f
6.7. Фикс ошибки с GPG-ключом
Если apt update выдаёт:
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY DA61C26A0585BD3B
— значит InfluxData сменили ключ подписи, а на сервере лежит старый. Решение:
sudo rm -f /etc/apt/keyrings/influxdata-archive_compat.key && sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://repos.influxdata.com/influxdata-archive.key | sudo gpg --dearmor -o /etc/apt/keyrings/influxdata.gpg
Источник APT (перезаписываем на всякий случай, вдруг там осталась старая ссылка на influxdata-archive_compat.key):
echo "deb [signed-by=/etc/apt/keyrings/influxdata.gpg] https://repos.influxdata.com/ubuntu stable main" | sudo tee /etc/apt/sources.list.d/influxdata.list
Установка:
sudo apt update && sudo apt install telegraf influxdata-archive-keyring -y
Что стоит сделать дополнительно
- Проверить, что порт InfluxDB (обычно 8086 для v1 API или 443, если он за Caddy/nginx) открыт в файрволе только там, где нужно.
- Ограничить набор
[[inputs.*]]под задачу — включённые по умолчаниюnstat/netstat/processesне всегда нужны и добавляют лишние метрики. - Через день работы проверить объём отправляемых данных (
metric_batch_size/flush_interval), чтобы не упереться в лимиты InfluxDB.