Агент
Агент Памир — предназначен для сбора метрик с Linux/Unix-систем. Он собирает информацию о работе узла (ноды), такую как использование CPU, памяти, дисков, сети и других ресурсов, и предоставляет их в формате, пригодном для сервера Памир.
Установка
Агент Памир поставляется в дистрибутиве в двух вариантах:
- Образ контейнера (по-умолчанию)
- запускается автоматически при установке приложения;
- в контейнер по пути
/hostмонтируется корневая файловая система узла (в режиме "только чтение"); - запускается в сети узла (отдельно от bridge-сети Памир).
- Бинарный файл
- расположен по пути
<cdrom root dir>/deps/pamir_agent/pamir_agent; - рядом с бинарным файлом также предоставлена конфигурация для запуска агента в режиме демона systemd;
- установка осуществляется вручную путем копирования файлов в системные директории.
- расположен по пути
Установка бинарного файла в systemd
-
Останавливается сервис pamir-agent командой:
docker-compose stop pamir-agent
docker-compose rm -v pamir-agent -
В конфигурации
docker-compose.additinal.ymlустанавливается профиль для последующей блокировки запуска агента в виде контейнера:docker-compose.additional.ymlservices:
pamir-agent:
profiles: !override [never] -
Применяется конфигурация запуска:
pamirctl start -
Копируются бинарный файл в системный каталог
$PATH, например,/usr/local/binи конфигурация в каталог systemd:sudo cp -p <cdrom root dir>/deps/pamir_agent/pamir_agent /usr/local/bin/pamir_agent
sudo cp <cdrom root dir>/deps/pamir_agent/pamir_agent.service /etc/systemd/system/pamir_agent.service
sudo cp <cdrom root dir>/deps/pamir_agent/sysconfig.pamir_agent /etc/sysconfig/pamir_agentподсказкаМетрики коллектора textfile по умолчанию размещаются в каталоге
/var/lib/pamir_agent/textfile_collector. По необходимости каталог можно сменить в конфигурации/etc/sysconfig/pamir_agent, а также добавлять/удалять коллекторы или другие опции, например, настройки защищенного соединения SSL/TLS. -
Перезапускается конфигурация systemd, сервис (демон) регистрируется в автозагрузку и запускается:
sudo systemctl daemon-reload
sudo systemctl enable --now pamir_agent.service -
Проверяется состояние сервиса:
sudo systemctl status pamir_agent.service -
В Памир агент добавляется по адресу:
<IP адрес/доменное имя узла>:9100
Основные возможности Агента Памир
Агент собирает метрики из различных подсистем ОС, включая:
- 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 автоматически получают префикс