Linux · amd64 / arm64 · агент 1.3.1
Что делает агент perfMon
Агент читает системные счётчики и отправляет метрики по HTTPS. Ни при привязке, ни в постоянной работе ему не нужны права root. Установщик, подпись и состав релиза доступны для проверки.
У агента нет входящего порта, удалённой оболочки и самообновления. API может деактивировать его: после отзыва токена или удаления сервера отправка метрик прекращается.
Сборка и подпись релиза
Версия 1.3.1 собирается на Go 1.27.1, без CGO и сторонних Go-библиотек. Для скачивания доступны бинарники, установщик и файлы проверки. Исходный код агента не публикуется. Код установщика, включая настройки службы systemd, можно изучить перед запуском.
- Установщик 1.3.1
- Бинарник Linux amd64
- Бинарник Linux arm64
- Подписанный манифест SHA256SUMS
- Подпись манифеста
- Публичный ключ
- Версия и параметры сборки
- SHA-256 бинарника amd64
- SHA-256 бинарника arm64
- Подписанный номер версии
Манифест SHA256SUMS подписан RSA-3072/SHA-256. Установщик проверяет подпись встроенным публичным ключом, затем хэш бинарника и номер версии. При несовпадении установка останавливается. CI повторно собирает оба бинарника и сверяет их с подписанным релизом.
Как проверить подпись
Сохраните доверенную копию публичного ключа. Его отпечаток — SHA-256 от DER SubjectPublicKeyInfo:
fc20bbdabe1a86ad8def10debf0dbf355081212f577c1544f95d35eb9b95e618Скачайте файлы релиза в одну папку. Сверьте отпечаток с заранее полученным ключом, затем проверьте подпись манифеста и хэши:
openssl pkey -pubin -in trusted-release-public.pem -outform DER | sha256sum openssl dgst -sha256 -verify trusted-release-public.pem -signature SHA256SUMS.sig SHA256SUMS sha256sum --check SHA256SUMS
При первой загрузке ключа и установщика с одного сайта доверие всё ещё зависит от этого сайта. Подпись защищает от подмены раздаваемых файлов, когда проверяющий ключ уже получен доверенным способом. Она подтверждает происхождение сборки, но не заменяет независимый аудит её поведения. Проверяйте новые версии отдельно и сохраняйте проверенные файлы вместе с хэшами.
Установка и права
Нужны Linux с systemd, curl, OpenSSL, sha256sum и runuser из util-linux. Для полного набора ограничений рекомендуется systemd 247 или новее. Сначала сохраните установщик, изучите его и проверьте подпись; затем запустите сохранённый файл.
curl --proto '=https' --proto-redir '=https' -fsSL https://perfmon.ru/agent/install.sh -o perfmon-install.sh less perfmon-install.sh # После проверки установщика и подписи: bash ./perfmon-install.sh
Установщик использует sudo для создания пользователя и службы. Сам агент, включая первичную привязку, запускается от отдельного пользователя perfmon. Claim-токен из карточки сервера вводится в скрытый запрос терминала; установщик передаёт его агенту через stdin. Токен одноразовый и действует 15 минут.
Исполняемый файл принадлежит root. Конфиг /etc/perfmon/agent.json имеет права 0600, каталог — 0700. Служба работает без capabilities, с NoNewPrivileges, защитой домашних каталогов, устройств и ядра, ограничением системных вызовов и семейств адресов. Запись разрешена в /etc/perfmon для сохранения состояния агента.
Ограничения systemd не создают полной изоляции от всей информации, доступной обычному пользователю. Их поддержка зависит от версии systemd и ядра.
Какие данные передаются
При привязке отправляется только claim_token. После неё агент передаёт следующие поля. Нулевые значения необязательных полей могут отсутствовать.
| Поля | Источник |
|---|---|
| cpu, cpu_iowait_percent, cpu_steal_percent | /proc/stat |
| ram_used_mb, ram_total_mb | /proc/meminfo |
| disk_used_gb, disk_total_gb | statfs для / |
| load_1, load_5, load_15 | /proc/loadavg |
| net_rx_mbps, net_tx_mbps | /proc/net/dev |
| disk_read_mbps, disk_write_mbps | /proc/diskstats |
| os_name, os_version | /etc/os-release, /etc/lsb-release, /etc/debian_version, /etc/redhat-release |
| cpu_cores, arch, hostname, ip, agent_version | Go runtime, имя хоста и локальные сетевые интерфейсы |
Агент не собирает список процессов, их аргументы и окружение, SSH-ключи, историю shell, содержимое пользовательских файлов или Docker secrets. IP выбирается из локальных сетевых интерфейсов и может быть внутренним; обращения к внешнему сервису определения IP нет. API также видит адрес исходящего соединения.
Куда уходят метрики
По умолчанию — на https://perfmon.ru:443. Агент проверяет TLS-сертификат и не следует HTTP-перенаправлениям. Ответ на привязку не может заменить схему, домен или порт назначения. Размер ответа API ограничен 64 КиБ.
Для отдельной инсталляции администратор может явно выбрать HTTPS-адрес через PERFMON_ENDPOINT. Агент сохраняет этот адрес как доверенный, а сервер не может перенаправить его на другой. HTTP допускается только для локальных тестов на loopback. Старые конфиги без trusted_origin по умолчанию доверяют только perfmon.ru; нестандартный адрес требует повторной привязки.
Основная база данных perfMon и её резервные копии размещаются на территории Российской Федерации.
Обновление и деактивация
Самообновления нет. Администратор проверяет новый установщик и запускает его с --update. Конфиг, токен и отметка о деактивации сохраняются. Публикация новой версии на сайте не обновляет уже установленные агенты.
HTTP 401, 410 или ошибка agent_decommissioned прекращают отправку метрик. Агент записывает disabled_at и disabled_reason и остаётся в ожидании; служба systemd при этом может показывать active. Для восстановления нужна повторная привязка новым токеном. Это предусмотренный сигнал деактивации, а не механизм произвольных удалённых команд.
bash ./perfmon-install.sh --update journalctl -u perfmon-agent -n 20
Защита кабинета
В разделе «Аккаунт и безопасность» доступна двухфакторная аутентификация: пароль и TOTP-код из приложения. После включения сохраните резервные коды. Там же можно просмотреть и завершить сессии.