Агент
Агент Памир — предназначен для сбора метрик с 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 автоматически получают префикс