В процессе разработки и системного администрирования управление множеством процессов является одним из важнейших приоритетов. Будь то контроль за выполнением различных задач, обеспечение их бесперебойного выполнения или оперативное решение возникающих проблем, наличие надежного инструмента для управления процессами оказывается незаменимым. Именно здесь и появляется Supervisord Monitor, представляющий собой оптимизированное решение для эффективного мониторинга и контроля процессов.
Применение Supervisord Monitor
Supervisord Monitor - это веб приложение с открытым исходным кодом, созданное для оптимизации управления процессами в серверных системах. Он представляет собой интуитивно понятную веб-платформу для мониторинга и управления процессами, управляемыми Supervisor, широко распространенной системой управления процессами. Расширяя возможности Supervisor, Supervisord Monitor представляет удобную панель, облегчающую системным администраторам и разработчикам наблюдение за состоянием и производительностью их приложений.
Основные моменты
Веб-интерфейс: Supervisord Monitor представляет веб-панель, доступную через любой современный веб-браузер. Этот интерфейс позволяет в режиме реального времени получать информацию о состоянии процессов, управляемых Supervisor, что дает пользователям возможность легко контролировать их производительность.
Администрирование процессов: Расширяя возможности пользователей, Supervisor Monitor позволяет инициировать, прекращать и перезагружать процессы непосредственно из веб-интерфейса. Это избавляет от необходимости обращаться к интерфейсу командной строки, упрощая рабочий процесс управления процессами.
Всесторонняя информация о процессах: На приборной панели представлены исчерпывающие сведения о каждом процессе, включая его статус, время работы, а также чтение журналов(логов). Это позволяет пользователям оперативно выявлять потенциальные проблемы и предпринимать необходимые действия для их решения.
Настройка и расширяемость: Есть переключатель тем и авто-обновление результатов по определенному периоду.
Приступая к работе с Supervisor Monitor
Начало путешествия с Supervisor Monitor состоит из простых шагов:
Установка: Supervisor Monitor можно легко установить из его репозитория на GitHub, используя предоставленные директивы по установке. Необходимым условием является предварительная установка и настройка Supervisor в системе.
Конфигурация: После установки и настройки Supervisor Monitor необходимо установить связь с экземпляром Supervisor, работающим в системе. Для этого необходимо указать адрес хоста Supervisor, порт и, если требуется, учетные данные для аутентификации.
Доступ к панели управления: После настройки пользователи могут получить доступ к панели Supervisor Monitor через веб-браузер. Таким образом, они могут эффективно контролировать и управлять процессами, контролируемыми Supervisor.
Пример конфигурации (Docker)
docker-composer.yml
systemeio-supervisord-monitor:
container_name: my-supervisord-monitor
image: konekod/supervisord-monitor:latest
environment:
- SUPERVISORS_SERVERS=[{"ip":"my-php-monolith","port":9551,"name":"monolith","username":"default","password":"default"}]
ports:
- "10011:8080"
networks:
- my_app_network
supervisord.conf
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[inet_http_server]
port=*:9551
username=default
password=default
Вклад в Supervisor Monitor
Будучи проектом с открытым исходным кодом, Supervisord Monitor приветствует вклад сообщества. Будь то исправление ошибок, внедрение новых функциональных возможностей или улучшение документации, разработчики могут активно вносить свой вклад в проект на GitHub. Активно участвуя в развитии Supervisord Monitor, пользователи могут способствовать повышению доступности и эффективности управления процессами для всех.
В заключение
В современной, стремительно развивающейся ИТ-среде умелое управление процессами играет ключевую роль в обеспечении стабильности и эффективности приложений и систем. Supervisord Monitor представляет собой ориентированное на пользователя решение этой задачи, позволяющее администраторам и разработчикам осуществлять надзор и контроль над процессами. Обладая интуитивно понятным интерфейсом, широкими функциональными возможностями и способностью к расширению, Supervisor Monitor может стать ценным активом в арсенале тех, кому доверено управление процессами в продакшене.
Комментарии (22)
DarkHost
20.05.2024 06:38Вещь нужная. Давно хотел свести панели управления supervisord от нескольких проектов вместе.
13werwolf13
20.05.2024 06:38+2простите мне возможно дилетантский вопрос...
а кроме симпатичной вебморды есть какие-то весомые доводы использовать supervisord вместо нативных systemd сервисов которые решают те же задачи да ещё и имеют шикарный notify?
baldr
20.05.2024 06:38+1Не дилетантский. Я зашёл в статью только чтобы оставить именно такой же комментарий, но вы меня опередили на 3 минуты.
Supervisord написан на Python и, чаще всего, запускается всё равно через systemd. До середины 2019 года не было поддержки Python3. последний релиз был в конце 2022 года.
KoNekoD Автор
20.05.2024 06:38Supervisord может быть запущен не от рута, а также работает на любых дистрибутивах, в том числе там где нет systemd
baldr
20.05.2024 06:38Разрешите ввязаться с вами в дискуссию. Я, честно признаюсь, сам предпочитаю systemd и немного недолюбливаю supervisor с давних времен. Не знаю как сейчас, но раньше глючен был.
Вот нашёл в википедии страницу с дистрибутивами, на которых systemd не ставится по умолчанию. Возможно, она не полная, конечно.. Но что из этого сейчас реально используется в каком-нибудь продакшене?
Ок, на каком-нибудь роутере, наверное, systemd нет. Но и Python туда ставить тоже смысла немного.
Ну не подходит скрипт на Python для контроля приложений на уровне OS. (я Python-разработчик, если что).
KoNekoD Автор
20.05.2024 06:38+1Дистрибутивы без systemd: Void, Gentoo(есть вариант без systemd), Artix, Alpine(на нем чаще всего докер image делают)
Соглашусь с вашим высказыванием с силу его глючности, она есть но незначительна - глюки зачастую сейчас есть с просмотром логов и их очисткой у выключенных процессов.
Есть альтернатива Python версии супервизора - его ремейк на Go( https://pkg.go.dev/github.com/couchbase/eventing/supervisor ) но мною он не был изучен пока ещё
Ну и ничто не мешает добавить его поддержку и (возможно) поддержку управления systemd процессамиbaldr
20.05.2024 06:38+1Ок, Alpine - принимается, серьезный аргумент.
В целом, я соглашусь, что бывают случаи когда нужно что-то достаточно сложное запихать в контейнер для контроля процесса. Я, впрочем, обычно выкручиваюсь скриптами на bash, но супервизор ставить не буду.
KoNekoD Автор
20.05.2024 06:38Systemd чаще используется для упровления системными службами(более низкоуровневый), а Supervisord докеризированными частями одного приложения - больше подходит в тех случаях когда приложение обновляется средствами непрерывной интеграции(CI)
13werwolf13
20.05.2024 06:38+1больше подходит в тех случаях когда приложение обновляется средствами непрерывной интеграции
простите, но вот этого не понял, чем оно больше подходит то?
Supervisord может быть запущен не от рута
как и любой systemd сервис по желанию
а также работает на любых дистрибутивах, в том числе там где нет systemd
которые редко встречаются за пределами контейнеров и домашних извращений...
KoNekoD Автор
20.05.2024 06:38+1простите, но вот этого не понял, чем оно больше подходит то?
Проще конфиг написать, ну и systemd очень тяжел в текущей его форме для простых docker имаджей
Есть люди которые предпочитают использовать замену для systemd(и носят шапочки с фольгой, но всё же они есть) в своих дистрибутивах
Я к примеру использую Gentoo с OpenRC под капотом, без всяких systemd13werwolf13
20.05.2024 06:38systemd очень тяжел в текущей его форме для простых docker имаджей
я каким-то образом умудрился упустить выше по треду что разговор каким-то чудом переехал с нативной системы в контейнеры.. наверное на этом тред можно закрывать.
P.S.: я из тех отрицателей шапочек из фольги что даже генту используют с systemd, удобство и предсказуемость системы для меня важнее.
KoNekoD Автор
20.05.2024 06:38+1Ни разу не ставил Supervisord вне докер контейнера, поэтому аргументы против systemd у меня слабые
13werwolf13
20.05.2024 06:38+3ни разу не использовал supervisord внутри докер контейнера так как считал(ю) что внутри контейнера в идеальный условиях должен быть один процесс, и сам докер "супервизит" его. а вот в легковесных lxc и chroot окружениях применять supervisord доводилось, но было это давно, теперь chroot в проде не применяется, а в lxc уже не приходится экономить пару мегобайт ОЗУ запуская его без init процесса.
DarkHost
20.05.2024 06:38А как у systemd с запуском N кол-ва процессов? Нагуглил какие-то костыли. Нет такого, что файлик скопировал в контейнер и кайфуешь. Без ручного старта systemd никак, если речь о нескольких экземплярах процесса. Это самое красивое решение из того, что я нашел:
[Service] ExecStart=/bin/sleep 600 %I [Install] WantedBy=multi-user.target # systemctl start test@{1..30}.service
Сам мечтаю избавиться от supervisor, заодно образ похудеет без питона.
NickyX3
20.05.2024 06:38есть какие-то весомые доводы использовать supervisord вместо нативных systemd сервисов которые решают те же задачи
Ну городить systemd обвязку для какого нить условного скрипта на nodejs/python/php с контролем его работы это лютый оверхед как по мне.
13werwolf13
20.05.2024 06:38+1по вашему использовать две строчки конфига для systemd который уже есть в системе это оверхед, а использовать две строчки конфига для отдельной приблуды которую надо ставить в систему и которая будет запускаться уже присутствующим в системе systemd это не оверхед?
нуууу... я даже не знаю что сказать.
NickyX3
20.05.2024 06:38А systemd умеет перенаправлять stdout/stderr в соответствующие логи? Напомню - условный скрипт не умеет ничего списать в логи сам, ему и не надо.
Понятно, что в systemd в данный момент много перекрывающего с supervisord, но он и вышел когда никакого systemd не былоbaldr
20.05.2024 06:38Так а штош и не перенаправить?
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<your program identifier> # without any quote
StandardOutput=append:/some/pathХоть в файл, хоть в syslog...
NickyX3
20.05.2024 06:38Отлично. Не особо разбирался в таких фичах, ибо исторически какие-то вещи работали и работают в супервайзоре когда systemd даже в планах не было
vladdash
Здорово!