Определи данные и настройки
Выбери одну задачу коллектора: например, прочитать состояние локального сервиса. В манифесте задай уникальный id, версию, описание и автора. В fields опиши настройки пользователя: text, password, number или boolean.
Поля permissions описывают доступ для оператора, но не ограничивают процесс на уровне ОС. Коллектор работает с правами агента, поэтому сразу определи, какие файлы, сокеты или службы он будет читать.
Реализуй контракт процесса
Агент передаёт один JSON-объект в stdin: protocol равен 1, а config содержит сохранённые настройки. Коллектор возвращает ровно один JSON-объект в stdout и завершается с кодом 0. Диагностику отправляй в stderr.
Для проверки сначала передай коллектору тестовый JSON вручную. Вывод состояния в виде {"service":{"status":"running"}} подходит для карточки service с колонкой status. Не смешивай журнал запуска с JSON-результатом.
Вход: {"protocol":1,"config":{"endpoint":"local-service"}}
Выход: {"service":{"status":"running"}}Опиши интерфейс в манифесте
Пакет использует schemaVersion: 1 и protocol: 1. В views добавь kind, title и key верхнего поля результата. Для cards значение является объектом; для table — массивом объектов; для chart — объектом числовых значений; для logs — массивом сообщений.
Колонки описывают key, label и необязательный unit. Если key представления не совпадает с полем результата, панель не найдёт данные. Проверь манифест на небольшом примере до подключения реального сервиса.
Собери и упакуй бинарники
В binaries используются ключи linux-amd64, linux-arm64 и windows-amd64. Для каждого доступного бинарника укажи content с base64 его байтов и sha256 с SHA-256 этих же байтов. Формат и архитектура файла должны совпадать с ключом.
Лимит бинарника — 16 MiB, суммарно — 48 MiB. stdout коллектора ограничен 512 KiB. Скачивание и запуск одного модуля разделяют бюджет 5 секунд, поэтому медленные запросы должны иметь собственный таймаут и компактный результат.
Проверь пакет на отдельных узлах
Загрузи JSON в раздел «Модули» своего монитора и назначь тестовому серверу. Проверь настройки, видимость результата, ошибки, недоступность сервиса и поддержку каждой заявленной платформы. Docker-модуль можно изучить как рабочий пример независимого репозитория и упаковки.
При изменении бинарников увеличивай version: конфликт содержимого существующей версии отклоняется. Публикуй код, релиз и checksums отдельно от токенов и приватной конфигурации. Полноценная публикация модулей через сайт пока не реализована; распространяй пакет через свой репозиторий.
Инструкции основаны на документации релизов по ссылкам ниже. Команды с example.com и SERVER_ID — шаблоны: подставь значения своей панели. При обновлении сверяйся с документацией выбранного релиза.