Сайт Pulse · Практические руководства
Русский · English
Мониторинг Docker и управление выбранным контейнером: изолированный WASI-гость и нативные пакеты совместимости.
Установка · Параметры · Показатели · Безопасность · Поддержка
Модуль собирает версию движка, список контейнеров, CPU, память, сетевые счётчики и последние журналы выбранного контейнера. Панель строит карточки, таблицу, графики и журналы по манифесту. Модуль выпускается отдельно как загружаемый JSON-пакет; он не является отдельной службой или Docker-образом.
Pulse Monitor → назначение модуля серверу → Pulse Agent → сборщик → Docker Engine
Pulse Monitor ← карточки, таблица, графики и журналы ← JSON-результат
manifest-wasi.json предназначен для Monitor 0.7.0+ и Agent 0.6.0+. Сборка: ./scripts/build.ps1. Основной artifacts/releases/docker-module.json содержит один артефакт wasip1-wasm для Linux и Windows. Go на сервере не нужен. Загрузите JSON в Monitor или установите отдельно одобренную версию из Marketplace, затем настройте каждый узел.
Для списка контейнеров и ресурсов выдайте docker.read. Для логов выбранного контейнера дополнительно нужен docker.logs; для запуска, перезапуска и остановки — одновременно docker.control и actions.execute. Дополнительные разрешения необязательны: мониторинг работает без управления. Логи и действия открываются по нужной строке контейнера. Смена runtime отключает прежние настройки до повторного подтверждения разрешений.
У гостя нет смонтированных файлов хоста, унаследованных секретов, прямого доступа к сети, запуску процессов или Docker socket. Посредник агента использует фиксированный локальный адрес Docker и проверяет состояние выбранного контейнера, healthcheck и новое время запуска после перезапуска. Неопределённый результат остаётся unknown; команда автоматически не повторяется. Ограничения WASI: 128 MiB линейной памяти гостя, 30 секунд на запуск, 512 KiB вывода. Лимит линейной памяти не ограничивает весь RSS процесса хоста.
Корневой Go-сборщик и manifest-v2.json сохранены для нативной совместимости. Сборка нативного v2: ./scripts/build.ps1 -Version 2.0.0-alpha3; v1: -Version 1.0.6 -LegacyOnly. Для изменённых байтов всегда выпускайте новую версию, не перезаписывайте опубликованные релизы. Нативный код требует полного доверия к автору. Инструкции установки и параметров ниже относятся к прежнему пакету v1.
-
Установите Pulse Monitor и Pulse Agent, подключите реальный сервер. Первый публичный набор использует панель и агент v0.4.0.
-
Скачайте docker-module.json v1.0.3 и checksums.txt. Сверьте SHA-256 файла с записью в
checksums.txt:sha256sum docker-module.json
В PowerShell:
Get-FileHash ./docker-module.json -Algorithm SHA256
-
В разделе Модули панели загрузите JSON. В настройках нужного сервера назначьте модуль Docker, заполните поля и включите его.
-
Агент загрузит сборщик для своей платформы и выполнит его. Откройте раздел модуля в панели. Для другого сервера создайте отдельное назначение.
Пакет содержит сборки Linux amd64/arm64 и Windows amd64. Go и Node.js на сервере для модуля не нужны. Нужны работающий Docker Engine и доступ службы агента к нему. SHA-256 проверяет целостность файла; проверяйте также происхождение пакета.
| Поле | По умолчанию | Назначение |
|---|---|---|
socket |
Пустая строка | Unix socket или Windows named pipe; пустое поле выбирает путь платформы |
logContainer |
Пустая строка | Необязательный ID контейнера для журналов, минимум 12 символов |
Linux: /var/run/docker.sock. Windows: \\.\pipe\docker_engine. Для rootless Docker укажите socket своего пользователя и предоставьте службе агента доступ. На Windows проверьте доступ учётной записи службы к named pipe выбранного Docker Engine: наличие Docker Desktop само по себе его не гарантирует.
| Показатель | Как читать |
|---|---|
| Контейнеры | В списке не более 100; флаг truncated показывает, что список ограничен, число контейнеров относится к этому списку |
| CPU | Два пакетных прохода текущей статистики с интервалом в одну секунду; 100% — одно полностью занятое ядро |
| Память | Используемая память контейнера без файлового кэша Linux; Memory total — сумма работающих контейнеров, а не RAM сервера |
| Сеть | Накопительные входящие и исходящие счётчики, а не скорость |
| Журналы | Последние 50 строк выбранного контейнера; модуль не сохраняет полный архив |
| Графики | Последние измерения в текущем просмотре панели |
Статистика собирается максимум для 100 контейнеров. Если метрики работающего контейнера недоступны, соответствующая сумма остаётся неизвестной (—), а не показывает неполный результат. Неизвестное значение не означает ноль.
Сборщик делает запросы чтения Docker API, но доступ к socket или pipe обычно даёт возможности уровня root на хосте. Это привилегированный доступ к Docker daemon. Не открывайте Docker API в сеть ради модуля.
Нативный процесс выполняется с правами агента без песочницы. Поле permissions описывает доступ и не ограничивает ОС. Устанавливайте только доверенные пакеты; журналы контейнеров могут содержать секреты. Подробности и приватное сообщение об уязвимости: SECURITY.ru.md.
Пакет v1.0.3 использует id: docker, schemaVersion: 1, protocol: 1. Версия модуля независима от панели и агента. Перед обновлением сохраните пакет и настройки, загрузите новую версию с тем же ID и проверьте назначения и результаты. Не переписывайте выпущенный пакет или тег: конфликт содержимого уже существующей версии отклоняется.
Чтобы остановить сбор, выключите назначение на нужном сервере. Чтобы удалить модуль, уберите его в настройках панели; удалённая конфигурация больше не выдаётся агентам. Кэш бинарников может остаться в состоянии агента. Удаляйте его только при остановленном агенте и после проверки путей.
Нужны Go 1.25+ и PowerShell 7.4+ для упаковки. Go должен быть в PATH; для другого пути используйте параметр -GoExe.
go test ./...
go vet ./...
./scripts/build.ps1 -Version 1.0.3Скрипт использует toolchain Go 1.27.2. Результаты в artifacts/releases/: docker-module.json, pulse-module-docker_v1.0.3_source.zip, checksums.txt.
Процесс получает один JSON {"protocol":1,"config":{}} через stdin и возвращает один JSON-объект через stdout с кодом завершения 0. Диагностика идёт в stderr; агент не передаёт его в панель. Лимит stdout — 512 KiB, скачивание и выполнение разделяют бюджет 5 секунд. См. протокол модулей.
CI запускает go vet и тесты на Linux и Windows, а race detector — на Linux. Это не подтверждает доступ к реальному Docker Engine на каждой платформе.
unsupported означает отсутствие сборки для платформы. При error проверьте Docker Engine, socket/pipe, права службы, ID контейнера и таймаут. Недоступные журналы могут быть ограничением logging driver. Не запускайте два агента с одним ID/токеном.
Участие · История изменений · Поддержка · Issues
| Репозиторий | Назначение |
|---|---|
| Pulse Monitor | Панель, серверы, пакеты и представления модулей |
| Pulse Agent | Сбор метрик и выполнение назначенных модулей на сервере |
| Pulse Module Docker | Этот сборщик Docker Engine |
MIT. Вклад участников распространяется под той же лицензией.
Репозиторий содержит маркер pulse-marketplace.json и topic pulse-module. Маркер должен находиться и в исходниках тега релиза; установочным пакетом остаётся docker-module.json из assets. Marketplace проверяет конкретную версию и SHA-256, затем ставит её в очередь независимой модерации. Наличие релиза на GitHub не означает одобрения в каталоге. Ручная установка JSON остаётся доступной.
Сборка ветки разработки создаёт docker-module.json (2.0.0-alpha1, schema2) и docker-module-v1.json (1.0.4, совместимый schema1). Опубликованный 1.0.3 не изменён. Для интерактивного v2 нужны новые совместимые сборки Monitor и Agent с module-runtime; опубликованный 0.4.0 его не поддерживает. Номер минимального стабильного релиза пока не заявлен.
V2 показывает и копирует ID контейнеров, использует стандартные графики Pulse и открывает последние 200 строк по клику на контейнер без изменения общих настроек. Для запуска/перезапуска/остановки нужны явное actions.execute на узле, подтверждение и полный 64-символьный ID. Ожидание остановки/перезапуска — 5 секунд внутри 20-секундного бюджета запроса. При потере ответа исход может быть неизвестен: перед повтором проверьте фактическое состояние. Автоматического повтора команд нет. Сбор данных работает без разрешения управления. В логах могут быть секреты.
Сборка v2: ./scripts/build.ps1 -GoExe D:/Go/bin/go.exe -GoToolchain local -Version 2.0.0-alpha1. Для отдельного совместимого выпуска: -Version 1.0.4 -LegacyOnly; основной пакет сохранит schema1. После загрузки v2 компонент выключен и разрешения не выданы. При переходе удалите активный v1 с тем же ID; настройки автоматически не мигрируют.