Описание
Простая утилита для управления сервисами runit через Web-интерфейс, с поддержкой интернационализации.
Сервер запускается скриптом runit-man. Примите во внимание, что runit-man обязан иметь привилегии, аналогичные привилегиям процесса runsvdir.
Скриншот
Инсталляция
Opscode Chef
Мы предоставляем набор рецептов runit-man для автоматизации установки runit-man с использованием Opscode Chef.
Ручная установка
Обычно вам нужно поставить гемы runit-man и thin совместно, чтобы эта утилита работала эффективно.
gem install runit-man thin
Прагматично установить runit-man как один из сервисов runit, например, так:
runit-man -p 14500 -r
Эта команда создаёт сервис runit-man, как один из обычных активных сервисов runit (используя каталоги /etc/sv/
and /etc/service/
по умолчанию).
Подробнее смотрите файл INSTALL.
Конфигурирование под Rack
Обратите внимание, что гем runit-man gem также предоставляет файл конфигурации Rack config.ru.
Он полезен для запуска runit-man под такими серверами, как unicorn, rainbows и другими. Опция runit-man --rackup=command
выполняет команду cd каталог, где лежит config.ru && set environment && exec command
.
Кастомизация
Эта утилита способна предоставлять дополнительную информацию или действия на своей Web-странице.
Просмотр имён и содержимого файлов, относящихся к конкретному сервису
Для каждого известного сервиса runit эта утилита просматривает каталог ./runit-man/files-to-view/
.
Каждый симлинк в этом каталоге будет показан как ссылка на просмотр содержимого целевого файла.
Индикация сервисов, чьи файлы для наблюдения изменились после старта
Для каждого известного сервиса runit эта утилита просматривает каталог ./runit-man/files-to-watch/
.
Целевые файлы симлинков в этом каталоге будут проверяться на время последней модификации файла.
Сервис будет помечаться как опасный (красным цветом) в плане рестарта, если любой наблюдаемый файл изменился после старта сервиса.
Показ ссылок, относящихся к конкретному сервису
Для каждого известного сервиса runit эта утилита просматривает каталог ./runit-man/urls-to-view/
.
Каждый файл, имеющий расширение .url, будет показан, как сылка на просмотр целевой локации (которая берётся как содержимое файла).
Показ кнопок, которые посылают сигналы выбранному процессу
Для каждого известного сервиса runit эта утилита просматривает каталог ./runit-man/allowed-signals/
.
Каждый однобуквенно-именованный файл определяет, что кнопка для сигнала должна появиться в пользовательском интерфейсе.
Соответствия между буквами и сигналами перечислены ниже, в секции REST API.
REST API
Получение состояния
Вы можете получить текущее состояние сервисов в формате JSON, используя
GET /services.json
Управление
Вы можете управлять вашими сервисами, используя
POST /<service name>/<command>
Поддерживаемые команды: up, down, restart, switch_up (активация сервиса), switch_down (деактивация сервиса).
Вы можете также посылать любые сигналы сервису, используя
POST /<service name>/signal/<signal>
Поддерживаемые сигналы и их значения:
Сигнал | Значение |
---|---|
t | TERM |
k | KILL |
i | INT |
1 | USR1 |
2 | USR2 |
a | ALARM |
q | QUIT |
x | EXIT |
p | PAUSE |
c | CONT |
h | HUP |
o | ONCE |
Чтение логов
svlogd
Вы можете читать хвост лога сервиса, используя
GET /<service name>/log/<count of tailing lines>.txt
Учитывайте, что этот функционал работает, только если Вы логгируете сервис с использованием команды вида
exec svlogd <options> $LOG_DIRECTORY_LOCATION
logger
Если Вы предпочитаете logger, используйте его вот так:
exec logger -i -t "runit-man" -p local1.info
При этом нужно использовать опцию -l "logger:/var/log/"
, где после двоеточия надо указывать базовый каталог логов.
Локализация
Локализация может быть выполнена редактированием файлов локалей в каталоге ./i18n/*.yml
.
Ваши дополнения приветствуются.
Разработка
Вместе с runit-man поставляется полезный Vagrant-файл. Чтобы развернуть окружение для разработки, выполните эти шаги:
- Установите Vagrant и Oracle VirtualBox;
- Разверните подмодули:
git submodule update --init
; - Разверните Vagrant'овское окружение:
vagrant up
.
Теперь у вас есть Vagrant box с Ubuntu 12.04 с запущенными сервисами runit и runit-man