GitHub

В процессе разработки и системного администрирования управление множеством процессов является одним из важнейших приоритетов. Будь то контроль за выполнением различных задач, обеспечение их бесперебойного выполнения или оперативное решение возникающих проблем, наличие надежного инструмента для управления процессами оказывается незаменимым. Именно здесь и появляется Supervisord Monitor, представляющий собой оптимизированное решение для эффективного мониторинга и контроля процессов.

Применение Supervisord Monitor

Supervisord Monitor - это веб приложение с открытым исходным кодом, созданное для оптимизации управления процессами в серверных системах. Он представляет собой интуитивно понятную веб-платформу для мониторинга и управления процессами, управляемыми Supervisor, широко распространенной системой управления процессами. Расширяя возможности Supervisor, Supervisord Monitor представляет удобную панель, облегчающую системным администраторам и разработчикам наблюдение за состоянием и производительностью их приложений.

Внешний вид
Внешний вид

Основные моменты

  1. Веб-интерфейс: Supervisord Monitor представляет веб-панель, доступную через любой современный веб-браузер. Этот интерфейс позволяет в режиме реального времени получать информацию о состоянии процессов, управляемых Supervisor, что дает пользователям возможность легко контролировать их производительность.

  2. Администрирование процессов: Расширяя возможности пользователей, Supervisor Monitor позволяет инициировать, прекращать и перезагружать процессы непосредственно из веб-интерфейса. Это избавляет от необходимости обращаться к интерфейсу командной строки, упрощая рабочий процесс управления процессами.

  3. Всесторонняя информация о процессах: На приборной панели представлены исчерпывающие сведения о каждом процессе, включая его статус, время работы, а также чтение журналов(логов). Это позволяет пользователям оперативно выявлять потенциальные проблемы и предпринимать необходимые действия для их решения.

  4. Настройка и расширяемость: Есть переключатель тем и авто-обновление результатов по определенному периоду.

Приступая к работе с Supervisor Monitor

Начало путешествия с Supervisor Monitor состоит из простых шагов:

  1. Установка: Supervisor Monitor можно легко установить из его репозитория на GitHub, используя предоставленные директивы по установке. Необходимым условием является предварительная установка и настройка Supervisor в системе.

  2. Конфигурация: После установки и настройки Supervisor Monitor необходимо установить связь с экземпляром Supervisor, работающим в системе. Для этого необходимо указать адрес хоста Supervisor, порт и, если требуется, учетные данные для аутентификации.

  3. Доступ к панели управления: После настройки пользователи могут получить доступ к панели 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, пользователи могут способствовать повышению доступности и эффективности управления процессами для всех.

GitHub

В заключение

В современной, стремительно развивающейся ИТ-среде умелое управление процессами играет ключевую роль в обеспечении стабильности и эффективности приложений и систем. Supervisord Monitor представляет собой ориентированное на пользователя решение этой задачи, позволяющее администраторам и разработчикам осуществлять надзор и контроль над процессами. Обладая интуитивно понятным интерфейсом, широкими функциональными возможностями и способностью к расширению, Supervisor Monitor может стать ценным активом в арсенале тех, кому доверено управление процессами в продакшене.

Комментарии (22)


  1. vladdash
    20.05.2024 06:38

    Здорово!


  1. DarkHost
    20.05.2024 06:38

    Вещь нужная. Давно хотел свести панели управления supervisord от нескольких проектов вместе.


  1. 13werwolf13
    20.05.2024 06:38
    +2

    простите мне возможно дилетантский вопрос...

    а кроме симпатичной вебморды есть какие-то весомые доводы использовать supervisord вместо нативных systemd сервисов которые решают те же задачи да ещё и имеют шикарный notify?


    1. baldr
      20.05.2024 06:38
      +1

      Не дилетантский. Я зашёл в статью только чтобы оставить именно такой же комментарий, но вы меня опередили на 3 минуты.

      Supervisord написан на Python и, чаще всего, запускается всё равно через systemd. До середины 2019 года не было поддержки Python3. последний релиз был в конце 2022 года.


      1. KoNekoD Автор
        20.05.2024 06:38

        Supervisord может быть запущен не от рута, а также работает на любых дистрибутивах, в том числе там где нет systemd


        1. baldr
          20.05.2024 06:38

          Разрешите ввязаться с вами в дискуссию. Я, честно признаюсь, сам предпочитаю systemd и немного недолюбливаю supervisor с давних времен. Не знаю как сейчас, но раньше глючен был.

          Вот нашёл в википедии страницу с дистрибутивами, на которых systemd не ставится по умолчанию. Возможно, она не полная, конечно.. Но что из этого сейчас реально используется в каком-нибудь продакшене?

          Ок, на каком-нибудь роутере, наверное, systemd нет. Но и Python туда ставить тоже смысла немного.

          Ну не подходит скрипт на Python для контроля приложений на уровне OS. (я Python-разработчик, если что).


          1. 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 процессами


            1. baldr
              20.05.2024 06:38
              +1

              Ок, Alpine - принимается, серьезный аргумент.

              В целом, я соглашусь, что бывают случаи когда нужно что-то достаточно сложное запихать в контейнер для контроля процесса. Я, впрочем, обычно выкручиваюсь скриптами на bash, но супервизор ставить не буду.


    1. KoNekoD Автор
      20.05.2024 06:38

      Systemd чаще используется для упровления системными службами(более низкоуровневый), а Supervisord докеризированными частями одного приложения - больше подходит в тех случаях когда приложение обновляется средствами непрерывной интеграции(CI)


      1. 13werwolf13
        20.05.2024 06:38
        +1

        больше подходит в тех случаях когда приложение обновляется средствами непрерывной интеграции

        простите, но вот этого не понял, чем оно больше подходит то?

        Supervisord может быть запущен не от рута

        как и любой systemd сервис по желанию

        а также работает на любых дистрибутивах, в том числе там где нет systemd

        которые редко встречаются за пределами контейнеров и домашних извращений...


        1. KoNekoD Автор
          20.05.2024 06:38
          +1

          простите, но вот этого не понял, чем оно больше подходит то?

          Проще конфиг написать, ну и systemd очень тяжел в текущей его форме для простых docker имаджей

          Есть люди которые предпочитают использовать замену для systemd(и носят шапочки с фольгой, но всё же они есть) в своих дистрибутивах

          Я к примеру использую Gentoo с OpenRC под капотом, без всяких systemd


          1. baldr
            20.05.2024 06:38

            Gentoo в продакшене? У вас там точно больше одного человека работает? Или это для пет-проектов?


            1. KoNekoD Автор
              20.05.2024 06:38
              +1

              Данный аргумен был в качестве примера систем без systemd.


          1. 13werwolf13
            20.05.2024 06:38

            systemd очень тяжел в текущей его форме для простых docker имаджей

            я каким-то образом умудрился упустить выше по треду что разговор каким-то чудом переехал с нативной системы в контейнеры.. наверное на этом тред можно закрывать.

            P.S.: я из тех отрицателей шапочек из фольги что даже генту используют с systemd, удобство и предсказуемость системы для меня важнее.


        1. KoNekoD Автор
          20.05.2024 06:38
          +1

          Ни разу не ставил Supervisord вне докер контейнера, поэтому аргументы против systemd у меня слабые


          1. 13werwolf13
            20.05.2024 06:38
            +3

            ни разу не использовал supervisord внутри докер контейнера так как считал(ю) что внутри контейнера в идеальный условиях должен быть один процесс, и сам докер "супервизит" его. а вот в легковесных lxc и chroot окружениях применять supervisord доводилось, но было это давно, теперь chroot в проде не применяется, а в lxc уже не приходится экономить пару мегобайт ОЗУ запуская его без init процесса.


    1. 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, заодно образ похудеет без питона.


    1. NickyX3
      20.05.2024 06:38

      есть какие-то весомые доводы использовать supervisord вместо нативных systemd сервисов которые решают те же задачи

      Ну городить systemd обвязку для какого нить условного скрипта на nodejs/python/php с контролем его работы это лютый оверхед как по мне.


      1. 13werwolf13
        20.05.2024 06:38
        +1

        по вашему использовать две строчки конфига для systemd который уже есть в системе это оверхед, а использовать две строчки конфига для отдельной приблуды которую надо ставить в систему и которая будет запускаться уже присутствующим в системе systemd это не оверхед?

        нуууу... я даже не знаю что сказать.


        1. NickyX3
          20.05.2024 06:38

          А systemd умеет перенаправлять stdout/stderr в соответствующие логи? Напомню - условный скрипт не умеет ничего списать в логи сам, ему и не надо.
          Понятно, что в systemd в данный момент много перекрывающего с supervisord, но он и вышел когда никакого systemd не было


          1. baldr
            20.05.2024 06:38

            Так а штош и не перенаправить?

            StandardOutput=syslog
            StandardError=syslog
            SyslogIdentifier=<your program identifier> # without any quote
            StandardOutput=append:/some/path

            Хоть в файл, хоть в syslog...


            1. NickyX3
              20.05.2024 06:38

              Отлично. Не особо разбирался в таких фичах, ибо исторически какие-то вещи работали и работают в супервайзоре когда systemd даже в планах не было