Перейти к основному содержимому

Агент

Агент Памир — предназначен для сбора метрик с Linux/Unix-систем. Он собирает информацию о работе узла (ноды), такую как использование CPU, памяти, дисков, сети и других ресурсов, и предоставляет их в формате, пригодном для сервера Памир.

Основные возможности Агента Памир

Агент собирает метрики из различных подсистем ОС, включая:

  • CPU — загрузка, время в режиме user/system/idle и т. д.
  • Память (RAM и Swap) — использование, свободная память, кэш.
  • Диски — использование места, IOPS, latency, свободное пространство.
  • Сеть — трафик, ошибки, состояние интерфейсов.
  • Файловые системы — свободное место, inodes, ошибки монтирования.
  • Температура и hardware (если доступно) — данные с датчиков (через lm-sensors).
  • Systemd (опционально) — статус сервисов.
  • Процессы — количество запущенных процессов, загрузка из-за fork.
  • Время работы системы (uptime) — сколько времени работает сервер.

Основные метрики системы

  • CPU
    • node_cpu_seconds_total — время работы CPU в разных режимах (user, system, idle, iowait и др.).
    • node_cpu_frequency_hertz — текущая частота CPU.
    • node_cpu_cache_size_bytes — размер кэша процессора.
  • Память (RAM & Swap)
    • node_memory_MemTotal_bytes — общий объём RAM.
    • node_memory_MemAvailable_bytes — доступная память (с учётом кэша).
    • node_memory_SwapTotal_bytes / node_memory_SwapFree_bytes — своп.
  • Диски и файловые системы
    • node_filesystem_size_bytes / node_filesystem_free_bytes — свободное место.
    • node_disk_io_time_seconds_total — время ввода-вывода.
    • node_disk_read_bytes_total / node_disk_written_bytes_total — чтение/запись.
  • Сеть
    • node_network_receive_bytes_total / node_network_transmit_bytes_total — трафик.
    • node_network_up — статус интерфейса (1 = up, 0 = down).
    • node_network_mtu_bytes — MTU интерфейса.
  • Загрузка системы
    • node_load1, node_load5, node_load15 — средняя загрузка за 1, 5 и 15 минут.
    • node_uptime_seconds — uptime системы.

Дополнительные метрики (включаются через флаги)

  • Аппаратные метрики (--collector.hwmon)
    • node_hwmon_temp_celsius — температура CPU/дисков (если есть датчики).
    • node_hwmon_fan_rpm — скорость вентиляторов.
  • Systemd (--collector.systemd)
    • node_systemd_unit_state — статус юнитов systemd (active, failed, enabled).
    • node_systemd_units_total — общее количество юнитов.
  • Процессы (--collector.processes)
    • node_processes_max — максимальное количество процессов.
    • node_processes_running / node_processes_blocked — текущие процессы.
  • NTP (--collector.ntp)
    • node_ntp_offset_seconds — рассинхронизация времени с NTP.
  • Статистика входа в систему (--collector.logind)
    • node_logind_sessions_used — количество активных сессий.
  • Статистика по файловым дескрипторам (--collector.filefd)
    • node_filefd_allocated / node_filefd_maximum — открытые файловые дескрипторы.
  • Sockstat (--collector.sockstat)
    • node_sockstat_TCP_inuse — количество используемых TCP-сокетов.
  • ZFS (--collector.zfs)
    • node_zfs_arc_size_bytes — размер ARC-кэша ZFS.
  • Беспроводные интерфейсы (--collector.wifi)
    • node_wifi_station_signal_dbm — уровень сигнала Wi-Fi.
  • Pressure Stall Information (PSI) (--collector.psi)
    • node_pressure_cpu_waiting_seconds_total — нехватка CPU.
    • node_pressure_memory_full_seconds_total — нехватка памяти.

Расширение агента через Textfile Collector

Агент Памир можно расширить для сбора дополнительных метрик, которых нет в стандартной поставке. Для этого используется механизм Textfile Collector, позволяющий добавлять пользовательские метрики без модификации кода экспортера. Он работает по принципу:

  • Чтения файлов в формате Prometheus (.prom), расположенных в заданной директории.
  • Автоматического включения их содержимого в общий эндпоинт /metrics.

Принцип работы Textfile Collector

  1. Формат файлов

    • Файлы должны иметь расширение .prom и содержать метрики в стандартном формате Prometheus:
      # HELP <название_метрики> Описание метрики.
      # TYPE <название_метрики> <тип_метрики> (gauge, counter, histogram, summary).
      <название_метрики>{<метки>} <значение>
    • Поддерживаются все основные типы метрик (например, gauge для изменяемых значений, counter для монотонно растущих).
  2. Директория для файлов

    • Задается при запуске агента Памир через флаг --collector.textfile.directory.
    • Экспортер периодически сканирует эту директорию и обновляет метрики.
  3. Обновление метрик

    • Агент Памир не управляет содержимым файлов — их должны обновлять внешние процессы (например, cron-задачи или скрипты).
    • Для атомарности обновления рекомендуется:
      • Генерировать файлы во временной директории.
      • Перемещать их в целевую директорию командой mv (это гарантирует, что Агент Памир не прочитает частично записанные данные).
  4. Время жизни метрик

    • Если файл удален, соответствующие метрики исчезнут из /metrics.
    • Если файл не обновляется, метрики остаются с последним значением (для gauge) или замораживаются (для counter).

Особенности и ограничения

  • Производительность
    • Textfile Collector не предназначен для высокочастотного обновления (например, каждую секунду). Оптимально — обновление раз в минуту или реже.
  • Синтаксическая валидация
    • Агент Памир не проверяет семантику метрик (например, корректность типов или меток) — ошибки приведут к пропуску файла.
  • Права доступа
    • У процесса агента Памир должны быть права на чтение файлов в указанной директории.
  • Совместимость
    • Метрики из Textfile Collector автоматически получают префикс node_ (если он не указан явно в файле).