Skip to main content

Установка и настройка 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.