Агент
Агент Памир — предназначен для сбора метрик с 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
-
Формат файлов
- Файлы должны иметь расширение
.prom
и содержать метрики в стандартном формате Prometheus:# HELP <название_метрики> Описание метрики.
# TYPE <название_метрики> <тип_метрики> (gauge, counter, histogram, summary).
<название_метрики>{<метки>} <значение> - Поддерживаются все основные типы метрик (например,
gauge
для изменяемых значений,counter
для монотонно растущих).
- Файлы должны иметь расширение
-
Директория для файлов
- Задается при запуске агента Памир через флаг
--collector.textfile.directory
. - Экспортер периодически сканирует эту директорию и обновляет метрики.
- Задается при запуске агента Памир через флаг
-
Обновление метрик
- Агент Памир не управляет содержимым файлов — их должны обновлять внешние процессы (например, cron-задачи или скрипты).
- Для атомарности обновления рекомендуется:
- Генерировать файлы во временной директории.
- Перемещать их в целевую директорию командой
mv
(это гарантирует, что Агент Памир не прочитает частично записанные данные).
-
Время жизни метрик
- Если файл удален, соответствующие метрики исчезнут из
/metrics
. - Если файл не обновляется, метрики остаются с последним значением (для
gauge
) или замораживаются (дляcounter
).
- Если файл удален, соответствующие метрики исчезнут из
Особенности и ограничения
- Производительность
- Textfile Collector не предназначен для высокочастотного обновления (например, каждую секунду). Оптимально — обновление раз в минуту или реже.
- Синтаксическая валидация
- Агент Памир не проверяет семантику метрик (например, корректность типов или меток) — ошибки приведут к пропуску файла.
- Права доступа
- У процесса агента Памир должны быть права на чтение файлов в указанной директории.
- Совместимость
- Метрики из Textfile Collector автоматически получают префикс
node_
(если он не указан явно в файле).
- Метрики из Textfile Collector автоматически получают префикс