Описание

Простая утилита для управления сервисами 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
  • Подключите судмодули: git submodule update --init
  • Разверните Vagrant'овское окружение: vagrant up

Теперь у вас есть Vagrant box с Ubuntu 10.04 с запущенными сервисами runit и runit-man

Ссылки