Collectd — демон сбора метрик, написанный на C. Он занимает единицы мегабайт памяти, не тянет за собой JVM или Python-рантайм и работает на железе, где современный стек мониторинга уже не помещается. Для старого сервера, домашнего хоста или VPS с 512 МБ RAM это по-прежнему разумный выбор в 2026 году. Разберём установку, минимальный конфиг, отдачу метрик в Prometheus и Graphite, а также диагностику.

Когда collectd уместен

Collectd собирает значения по расписанию, агрегирует их и отправляет в хранилище. Длинную историю он сам не хранит: для этого подключают RRD, Graphite, Prometheus или VictoriaMetrics.

  • Плюсы: малый RSS, модульность, готовые плагины cpu, memory, disk, interface, df, sensors, thermal.
  • Минусы: собственный формат конфига, меньше готовых дашбордов, чем у node_exporter, ветка 5.12 развивается неспешно.
  • Ограничение: для Kubernetes и облачной динамики удобнее экспортёры Prometheus, а для одного старого хоста collectd проще.

Установка

Пакет есть в Debian, Ubuntu и Linux Mint. Вместе с демоном ставится collectdctl для запросов к сокету.

sudo apt update
sudo apt install collectd collectd-utils
collectd -h | head
systemctl status collectd --no-pager

Проверка конфигурации выполняется ключом -t: она не запускает сбор, а только разбирает файлы и завершает работу.

sudo collectd -t -C /etc/collectd/collectd.conf
sudo systemctl restart collectd

Если вывод пустой и код возврата 0, синтаксис верный. Юнит в Debian называется collectd.service, основной конфиг лежит в /etc/collectd/collectd.conf, а дополнительные файлы удобно держать в /etc/collectd/collectd.conf.d/ и подключать через Include.

Минимальный конфиг для слабой машины

Не включайте всё подряд: каждый плагин — это поток чтения и набор метрик. Для старого сервера достаточно десяти источников.

Hostname "srv-old"
FQDNLookup false
Interval 30
Timeout 4
ReadThreads 2
WriteThreads 2

LoadPlugin syslog
LoadPlugin cpu
LoadPlugin load
LoadPlugin memory
LoadPlugin swap
LoadPlugin df
LoadPlugin disk
LoadPlugin interface
LoadPlugin processes
LoadPlugin uptime

<Plugin cpu>
  ReportByCpu true
  ValuesPercentage true
</Plugin>

<Plugin df>
  MountPoint "/"
  ValuesPercentage true
</Plugin>

<Plugin interface>
  Interface "eth0"
  IgnoreSelected true
</Plugin>

<Plugin processes>
  Process "sshd"
  Process "nginx"
</Plugin>

Interval 30 вместо стандартных 10 снижает нагрузку и объём данных втрое; для домашнего сервера такой точности хватает. FQDNLookup false избавляет от обратных DNS-запросов при старте, которые на старом железе заметно тормозят запуск. Обратите внимание: Timeout 4 — это число интервалов, а не секунд, поэтому реальный порог устаревания здесь около двух минут.

Не все плагины одинаково полезны на слабой машине. cpu и load показывают, упирается ли хост в процессор; memory и swap — хватает ли RAM; df ловит заполнение корня; interface — ошибки и скорость сети. Плагины sensors и thermal включайте только при наличии датчиков: на виртуальной машине они не дадут данных и добавят ошибки в лог.

Отдача в Prometheus

Плагин write_prometheus поднимает HTTP-эндпоинт /metrics. Это самый простой способ подружить collectd с современным мониторингом.

LoadPlugin write_prometheus

<Plugin write_prometheus>
  Host "127.0.0.1"
  Port "9103"
</Plugin>

Метрики доступны по адресу http://127.0.0.1:9103/metrics. Плагин не умеет аутентификацию, поэтому не выставляйте его в интернет. Если scrape идёт с другого хоста, укажите в Host адрес локальной сети и разрешите порт только сети мониторинга.

curl -s http://127.0.0.1:9103/metrics | head -20
# если Prometheus на другом хосте, в конфиге укажите Host "10.0.0.5"
sudo ufw allow from 10.0.0.0/24 to any port 9103 proto tcp
sudo ufw deny 9103/tcp

В prometheus.yml достаточно job с target 10.0.0.5:9103. Имена метрик приходят с префиксом collectd_, а тип и экземпляр вынесены в лейблы. StalenessDelta по умолчанию 300 секунд, и это значение должно совпадать с настройкой Prometheus, иначе графики будут рваться.

Graphite и RRD

Если Prometheus не нужен, collectd отлично пишет в Graphite или локальный RRD. Для старого сервера с HDD RRD удобен: данные лежат рядом и не требуют отдельного демона.

<Plugin write_graphite>
  <Node "local">
    Host "127.0.0.1"
    Port "2003"
    Protocol "tcp"
    Prefix "collectd."
    StoreRates true
  </Node>
</Plugin>

<Plugin rrdtool>
  DataDir "/var/lib/collectd/rrd"
  CacheTimeout 120
  CacheFlush 1800
</Plugin>

RRD создаёт по файлу на метрику и быстро разрастается на тысячах графиков; на SD-карте это ещё и износ. Если графиков много, поставьте rrdcached и используйте одноимённый плагин вместо rrdtool, чтобы запись шла пакетами.

Проверка и диагностика

Смотрите не только статус службы, но и то, что метрики реально обновляются. Для этого включите unixsock и опросите список значений.

LoadPlugin unixsock
<Plugin unixsock>
  SocketFile "/run/collectd.sock"
</Plugin>

После перезапуска проверьте сокет и журнал. Если список значений пуст, ищите проблему в правах или в конфиге плагинов.

collectdctl -s /run/collectd.sock listval | head
journalctl -u collectd -n 50 --no-pager
ss -ltnp | grep 9103
sudo collectd -t -C /etc/collectd/collectd.conf

Если метрики есть, но графики пустые, смотрите ошибки записи: чаще всего это права на DataDir или переполненный диск. Для быстрой проверки на время включите плагин csv с отдельным каталогом и сравните значения.

Для алертов не обязательно поднимать Prometheus: у collectd есть плагин threshold, который сравнивает значение с порогом и вызывает NotificationExec. На старом сервере хватает одного скрипта, который отправляет письмо или сообщение в чат. Правила стоит держать простыми — предупреждение при 80 процентах заполнения диска и ошибка при 95, иначе уведомления быстро перестанут читать.

Безопасность

  • Плагин network по умолчанию не загружен — не включайте его без шифрования и фильтрации.
  • write_prometheus и unixsock не имеют аутентификации: только localhost и файрвол.
  • Ограничьте права на каталоги данных и конфигурации.
  • Проверяйте обновления пакета и не запускайте демон с лишними привилегиями.

Чек-лист

  • collectd -t проходит без ошибок.
  • Interval и список плагинов соответствуют задаче.
  • Метрики видны в /metrics или в collectdctl listval.
  • Порт 9103 доступен только сети мониторинга.
  • Каталог данных на отдельном разделе или с ротацией.
  • Алерты настроены на стороне Prometheus или Grafana.

Итог

Collectd остаётся практичным инструментом для одного-двух старых серверов: один пакет, один конфиг, минимальный расход памяти. Связка с write_prometheus даёт современный сбор без замены демона, а rrdtool или Graphite — локальную историю. Начните с десяти плагинов и Interval 30, проверьте метрики через curl и только потом расширяйте набор.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте