- PVSM.RU - https://www.pvsm.ru -
SparrowHub [1] — проект, целью которого является распространение различных готовых решений для задач системного администрирования и не только.
Несмотря на то, что существует масса решений по автоматизации задач системного администрирования, определенная ниша в этой области все же остается незанятой. Что мы делаем, когда хотим решить какую-то специфическую задачу? Например, проверить логи нашего ssh сервиса на наличие неудачных попыток логинов с целью позаботиться о секьюрности наших серверов? — Берем и пишем однострочник, состоящий из bash команд вида grep, sed, awk и так далее, ну, или можем написать скрипт на Perl [2]. Отлично, все работает. Eсть решение, которое устраивает нас. И мы пользуемся им. Вопрос в том, как мы хотим сохранить результаты наших трудов, что бы поделиться ими с другими или же когда пройдет время снова воспользоваться придуманным решением. Вот тут и возникает проблема.
Кастомные скрипты, написанные "на коленке" хороши, когда нужно что-то сделать прямо здесь и сейчас, но с ними есть проблемы:
Тут и возникает идея репозитария переносимых утилит. В принципе, это может быть все что угодно — проверки оставшегося места на диске, поиск определенной группы процессов в списке, учет времени работы отдельных программ, анализ логов на наличие определенных событий и так далее. Вы пишите утилиту, точнее, в терминах SparrowHub — плагин, загружаете его в репозиторий, и, вуаля — он становится доступным для других!
Достаточно установить на своем сервере утилиту sparrow которая предоставляет интерфейс к репозитарию SparrowHub и начать пользоваться готовыми плагинами.
Вот как это выглядит в моей случае, приведу несколько примеров. И хотя кому-то они могут показаться тривиальными с точки зрения замены их своими кастомными решениями, все же вспоминаем то, с чего я начал свой топик — почему кастомные скрипты могут быть проблематичны в использовании. И потом, т.к. SparrowHub проект достаточно молодой, на нем еще не успело накопится достаточное количество плагинов, собственно данный пост и нацелен на то, что бы привлечь в коммьюнити новых разработчиков!
Итак, ставим сначала sparrow, это — CPAN [3] модуль:
$ cpanm Sparrow
Из не Perl зависимостей нам еще понадобится curl:
$ yum install curl
Проверяем, что sparrow клиент установлен:
$ sparrow
Далее создаем проект. Проект — это просто контейнер для плагинов, которые мы будет устанавливать и использовать. Можно иметь несколько проектов, для разбиения используемых плагины на логические группы. Например, проект system — для системных проверок, например места на диске или отслеживания долго работающих процессов, проект nginx — для различных проверок nginx сервера, и так далее.
$ sparrow project create system
Далее мы можем поискать различные плагины. Альтернативным способом будет являться посещение ресурса https://sparrowhub.org [4] и поиском через 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 [5] — плагин по поиску долгоиграющих ( устаревших — stale ) процессов или logdog [6] — утилиты по поиску записей в логах за заданный период времени с возможностью группировки и фильтрации. Статьи по практическому применению данных плагинов были недавно написаны мной на английском и размещены на сайтe blogs.perl.org :
Заключение.
В этой статье я коснулся только основных возможностей, предоставляемых репозитарием SparrowHub, всего конечно не расскажешь, да и не в этом цель. Задавайте вопросы, пишите комменты, загружайте свои плагины, используйте существующие или кидайте реквесты на разработку новых — было бы очень интересно узнать что именно требуются другим людям и реализовать это в виде плагинов. В конце концов выиграют все!
PS> для мердж реквестов и issues на утилиту sparrow используйте https://github.com/melezhik/sparrow [9], туда же можно постить запросы на новые плагины.
PS2> первая статья про sparrow была написано мной какое-то время назад и с ее текстом можно ознакомиться здесь [10], предупреждение — за это время многое изменилось.
Алексей Мележик, автор sparrow и SparrowHub.
Автор: alexey_melezhik
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/118019
Ссылки в тексте:
[1] SparrowHub: https://sparrowhub.org/
[2] Perl: https://www.perl.org/
[3] CPAN: https://de.wikipedia.org/wiki/CPAN
[4] https://sparrowhub.org: https://sparrowhub.org
[5] stale-proc-check: https://sparrowhub.org/info/stale-proc-check
[6] logdog: https://sparrowhub.org/info/logdog
[7] find "stale" processes on linux / unix servers: http://blogs.perl.org/users/melezhik/2016/04/find-stale-processes-on-linux-unix-servers.html
[8] Monitoring bad ssh logins with sparrow and logdog: http://blogs.perl.org/users/melezhik/2016/04/monitoring-bad-ssh-logins-with-sparrow-and-logdog.html
[9] https://github.com/melezhik/sparrow: https://github.com/melezhik/sparrow
[10] здесь: https://habrahabr.ru/post/272245/
[11] Источник: https://habrahabr.ru/post/281583/
Нажмите здесь для печати.