SparrowHub — репозиторий готовых утилит для системного администрирования

в 10:55, , рубрики: linux, monitoring, perl, system administration, UNIX

SparrowHub — проект, целью которого является распространение различных готовых решений для задач системного администрирования и не только.

Несмотря на то, что существует масса решений по автоматизации задач системного администрирования, определенная ниша в этой области все же остается незанятой. Что мы делаем, когда хотим решить какую-то специфическую задачу? Например, проверить логи нашего ssh сервиса на наличие неудачных попыток логинов с целью позаботиться о секьюрности наших серверов? — Берем и пишем однострочник, состоящий из bash команд вида grep, sed, awk и так далее, ну, или можем написать скрипт на Perl. Отлично, все работает. Eсть решение, которое устраивает нас. И мы пользуемся им. Вопрос в том, как мы хотим сохранить результаты наших трудов, что бы поделиться ими с другими или же когда пройдет время снова воспользоваться придуманным решением. Вот тут и возникает проблема.
Кастомные скрипты, написанные "на коленке" хороши, когда нужно что-то сделать прямо здесь и сейчас, но с ними есть проблемы:

  • они плохо переносимы
  • они легко забываются ( у них зачастую невнятный интерфейс и "захардкоженная" конфигурация )

Тут и возникает идея репозитария переносимых утилит. В принципе, это может быть все что угодно — проверки оставшегося места на диске, поиск определенной группы процессов в списке, учет времени работы отдельных программ, анализ логов на наличие определенных событий и так далее. Вы пишите утилиту, точнее, в терминах SparrowHub — плагин, загружаете его в репозиторий, и, вуаля — он становится доступным для других!

Достаточно установить на своем сервере утилиту sparrow которая предоставляет интерфейс к репозитарию SparrowHub и начать пользоваться готовыми плагинами.

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

Итак, ставим сначала sparrow, это — CPAN модуль:

$ cpanm Sparrow

Из не Perl зависимостей нам еще понадобится curl:

$ yum install curl

Проверяем, что sparrow клиент установлен:

$ sparrow

Далее создаем проект. Проект — это просто контейнер для плагинов, которые мы будет устанавливать и использовать. Можно иметь несколько проектов, для разбиения используемых плагины на логические группы. Например, проект system — для системных проверок, например места на диске или отслеживания долго работающих процессов, проект nginx — для различных проверок nginx сервера, и так далее.

$ sparrow project create system

Далее мы можем поискать различные плагины. Альтернативным способом будет являться посещение ресурса https://sparrowhub.org и поиском через web интерфейс.

$ sparrow index update # получим обновления индекса из SpаrrowHub
$ sparrow plg search

Последняя приведенная команда выдаст нам список всех доступных плагинов. Выбираем df-check — плагин для проверки оставшегося места на диске. Устанавливаем плагин:

$ sparrow plg install df-check 

Ок. В принципе уже можно запустить плагин как есть командой:

$ sparrow plg run df-check

И убедится, что места на диске на сервере достаточно. Но добавим еще один шаг, сделав наш плагин настраиваемым. Для это воспользуемся концепцией чекпоинтов или контрольных точек, извиняюсь за невольную тафтологию :) Чекпоинт в sparrow — это абстракция позволяющая связывать отдельный плагин с конкретной конфигурацией. Таким образом, вы можете использовать один и тот же плагин с разными конфигурациями, не трудно догадаться, что в этом случае мы будем иметь несколько чекппоинтов. Чекпоинты добавляются в проекты, связываются с установленными плагинами ( здесь и происходит разбивка плагинов по логическим группам ) и затем настраиваются.

Создадим чекпоинт:

$ sparrow check add system disk

Свяжем чекпоинт с плагином:

$ sparrow check set system disk df-check

И теперь самое интересное… настоим чекпоинт или плагин, что в данном случае одно и тоже ...

$ export EDITOR=nano
$ sparrow check ini system disk 

[disk]
# установить в процентном соотношении допустимый размер занятого места на диске 
threshold   = 70

Отлично. Теперь запустим чекпоинт, точнее плагин с настройками, определенными для данного чекпоинта:

$ sparrow check run system disk

На моей машине результат будет выглядеть так:

vagrant@Debian-jessie-amd64-netboot:~/my/outthentic$ sparrow check run system disk
# running cd /home/vagrant/sparrow/plugins/public/df-check && carton exec 'strun --root ./  --ini /home/vagrant/sparrow/proj$

/tmp/.outthentic/13248/home/vagrant/sparrow/plugins/public/df-check/disk-shortage/story.t ..
ok 1 - perl /home/vagrant/sparrow/plugins/public/df-check/disk-shortage/story.pl succeeded
ok 2 - stdout saved to /tmp/.outthentic/13248/KopZcyueYX
# threshhold: 70
# verify ... /dev/sda1
# verify ... udev
# verify ... tmpfs
# verify ... tmpfs
# verify ... tmpfs
# verify ... tmpfs
# verify ... none
# verify ... none
ok 3 - output match /(S+)s+(S+)s+(S+)s+(S+)s+(S+)/
ok 4 - enough disk space (84%) on /dev/sda1
ok 5 - enough disk space (0%) on udev
ok 6 - enough disk space (1%) on tmpfs
ok 7 - enough disk space (1%) on tmpfs
ok 8 - enough disk space (0%) on tmpfs
ok 9 - enough disk space (0%) on tmpfs
ok 10 - enough disk space (92%) on none
ok 11 - enough disk space (92%) on none
1..11
ok
All tests successful.
Files=1, Tests=11,  1 wallclock secs ( 0.02 usr  0.00 sys +  0.05 cusr  0.00 csys =  0.07 CPU)
Result: PASS

Собственно на этом ознакомление co SparrowHub в его практическом применении можно закончить. Существует, конечно же ряд других интересных утилит, разработанных и выложенных мной на SparrowHub — среди них например — stale-proc-check — плагин по поиску долгоиграющих ( устаревших — stale ) процессов или logdog — утилиты по поиску записей в логах за заданный период времени с возможностью группировки и фильтрации. Статьи по практическому применению данных плагинов были недавно написаны мной на английском и размещены на сайтe blogs.perl.org :

Заключение.

В этой статье я коснулся только основных возможностей, предоставляемых репозитарием SparrowHub, всего конечно не расскажешь, да и не в этом цель. Задавайте вопросы, пишите комменты, загружайте свои плагины, используйте существующие или кидайте реквесты на разработку новых — было бы очень интересно узнать что именно требуются другим людям и реализовать это в виде плагинов. В конце концов выиграют все!

PS> для мердж реквестов и issues на утилиту sparrow используйте https://github.com/melezhik/sparrow, туда же можно постить запросы на новые плагины.

PS2> первая статья про sparrow была написано мной какое-то время назад и с ее текстом можно ознакомиться здесь, предупреждение — за это время многое изменилось.


Алексей Мележик, автор sparrow и SparrowHub.

Автор: alexey_melezhik

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js