Как стать автором
Обновить

Комментарии 47

а что именно не нравится?
Ну, например, не нравится неопределенность с лицензией. «GNU copyleft» — это как-то совсем не ссылка на конкретный юридически-значимый документ, а просто название какой-то идеологии. У того же GNU вон постоянно идут баталии GPLv2, GPLv2+, GPLv3, LGPL, AGPL — это все разные лицензии с разными совместимостями и смыслами. А если брать шире — все, что сколько-нибудь соответствует идеологии copyleft — таких лицензий будет несколько десятков.

А по существу — ну, более-менее понятная задача и способ решения. Если не смотрели еще на Inquisitor — посмотрите, там примерно то же самое делается (примерно так же дергаются из шелл-скрипта и парсятся выводы разных команд), но на несколько более фундаментальном уровне. Мониторинги там тоже есть.

Могу еще на вызов iostat поругаться: в том виде, в котором вы его сделали, он практически ничего адекватного не показывает. iostat надо смотреть именно в динамике с какими-нибудь хорошо подобранными интервалами типа 5-10 секунд (при этом неплохо бы понимать, откуда берутся именно 5 или 10 секунд).
Что касается лицензии — то это тупо заглушка. Если вы внимательно читали — в абзаце, где я выставляю права rwx для всех и вся, я говорю, что версия тестовая, ибо половины функционала еще нет. В данный момент вяжу curl с веб-сервисами типа ifconfig.me и делаю аналог удаленного управления по ssh, только на BASH.

Что качается нормальных систем мониторинга, то на эту нишу я не претендую, цель проекта, что первоначального, что конечного — явить мощь BASH. Кому нужно знать всё ставят Nagios и Zabbix. Я же принципиально использовал лишь те команды, которые порой мелькают в tty опрошенных линуксойдов. Можно было сделать по людски, можно было писать на С/С++, но мне хотелось следовать принципу KISS и получить максимально лёгкую систему.

Что касается iostat — его функция в данном проекте — лишь набить меню. В том варианте, что использую я в данный момент времени, нет ни iostat, ни всего пункта network. К вопросу я хотел подойти максимально объективно и были созданы несколько тем, в т.ч. голосование на linux.org.ru, с результатов которых был сформирован список предоставляемой информации. И всё же несмотря на всю объективность, это всего лишь куски кода, которые решают конкретно мою задачу, хотя и содержат задатки для того, чтобы заинтересованные люди свободно брали и улучшали, переделывали под себя, делали превосходящие аналоги на базе этой идеи. Разве не для этого есть опенсорс?

Благодарю за объективную критику.
Хотите явить мощь BASH? Или хотите сделать все руками сами?
Для первого вполне можно было использовать shsite или похожий готовый скрипт темплейтов html на BASH.

А то эта смесь html и кода… что то уж очень напоминает, от чего все сбежали как от огня)
И то и другое. Вообще можно было много чего сделать. Можно и по ssh это вбивать и смотреть выхлоп глазами, например. И да, ssh в разы мощнее сего.

Меня вот html не пугает. Я лет с 4х, наверное, не боюсь букв и их сочетаний.
Меня вот html не пугает. Я лет с 4х, наверное, не боюсь букв и их сочетаний.

очень за вас рад. правда-правда)

И то и другое. Вообще можно было много чего сделать. Можно и по ssh это вбивать и смотреть выхлоп глазами, например. И да, ssh в разы мощнее сего.

при чём тут ssh? Я ещё помню разгребания сайтов на си написанных, где так же html выплевывался printf-ом.

Писать что-то новое в 21-м веке, смешивая логику и представление — это финиш.
Пожалуйста засуньте скрипты под спойлеры — ужасно неудобно, просто неуважение к читающим. Спасибо.
Я еще не до конца разобрался с разметкой, первый пост, прошу простить.
Это просто гениально! Спасибо за статью!

P.S спойлеры не помешали б…
Для отдачи статики используйте nginx, apach тут совершенно не нужен.
Странная работа с шаблоном. Почему бы не использовать заменяемые плейсхолдеры?
Типа:
<div class="temperature">@@MAIN_TEMP@@</div>
И потом в коде заменять @@MAIN_TEMP@@ на нужное значение с помощью sed, perl или как удобнее.
Можно и так, мне что первое в голову пришло — так я и реализовал, потом просто модифицировал.
а, нет, вру. Хотел так сделать, но так пришлось бы после каждого обновления заново переписывать сначала шаблон, а потом его же парсить на замену. Время работы больше, ибо в среднем на одну команду нужно просмотреть n/2 строк, где n — общее количество строк в шаблоне. Дозаписывать в конец проще, хоть и больше обращений к диску.
Зачем переписывать шаблон? По идее он должен быть неизменным.
Про просмотреть n/2 строк — к чему такая оптимизация? :) Это копеечная операция.
Что касается шаблона — в моём представлении это был бы перл-скрипт, парсящий готовый шаблон и творящий чудеса регэкспом s///. В таком случае при последующем проходе парсер не заменил бы ничего. Если вы имели в виду использование html_template и perl cgi — то такой вариант меня не устроил как слишком сложный, мне хотелось, чтобы каждый школьник мог разобраться. Или я неправильно понял предложенную вами идею?
Есть файл шаблона. Он парсится, плейсхолдеры заменяются на полученную информацию, все это сохраняется в другой файл, который потом и выводится.
Ну, стало быть в конечном счете все сведется к perl cgi ). Я не хотел этого.
А если сделать split /@@/, $template, то достаточно каждый нечетный элемент получившегося массива вставить без изменений, а каждый четный заменить на результат соответствующего измерения.

Это если запариться на тему производительности, чего в данном случае делать не нужно :)
По названию статьи подумал, что будет мониторинг удаленных машин (сервера, коммутаторы итп), но вообще, получилось неплохо!
В будущем можно прикрутить syslog и тогда будет действительно круто!
Благодарю, приоткрою завесу тайны: эти отчеты будут собираться на центральной машине (пусть будет локальный прокси), ибо когда один клиент отвалится — смысл в этой затее потеряется, потому как невозможно будет даже установить причину. А так, учитывая интервал в 5 минут, с этой точностью можно будет установить время выхода из строя конкретной машины и просмотреть что могло к этому привести. Сделаю некое подобие ботнета — одновременное выкачивание одного скрипта и немедленное его выполнение всей подсетью. Одной строчкой можно будет, скажем, выключить несколько десятков машин. Но пока нужно найти вкусностей для более полного сбора информации, решить вопросы безопасности и было бы очень неплохо сдать сессию).
Одновременное выкачивание скрипта и выполнение его подсетью привидет к а) ботлнеку на сети б) резкому росту нагрузки на железо.

Мой совет — сразу после удачной сдачи сессии почитайте что такое SNMP. Также я бы посоветовал настроить syslog коллектор + splunk. Если после этого не наиграетесь, попробуйте сделать nagios + centreon + nagvis. После этого — покрутите заббикс, cacti итд. А после этого — идите уже куда-нибудь работать — там получите нормальные таски, которые нужно решать, там и sh прокачаете и bash если захотите, да и perl-а хлебнете.
Советы учту, спасибо. А с заббиксом и нагиосом я уже имел опыт работы. Были мне вручены 4 сервака в Германии с этими крутатеньками. Не понравились. А работы у меня и так хватает :) К сожалению, таких ваканси, где можно было бы нормально поработать с sh и bash на горизонте нет, а от избытка перла я расстался с последним работодателем. Конечно, весело через perl cgi в html_template давать данные из мускула, но не через ту кмс, с которой приходилось работать.
А чем Zabbix не нравится и остальные системы? Там, простите за выражение, всяких свистелок и перделок туева куча. Ну разве что для прокачки скилов? Тогда да — поддерживаю.
Zabbix, как и Nagios, меня не устроили тем, что они не мои. Своим быдлокодом я тешу свое ЧСВ мыслью, что поддерживаю опенсорс. А вообще, причин две:
1. Хотелось сделать именно самому, именно на баше
2. Ниасилил конфиги первых двух и написал свою.
Гуигнгнм, вот ведь некоторые почитают и подумают, что так правильно. Вы бы уж не выкладывали это никуда. Потренировались и ладно.
Вечно вы чем-то недовольны) Кому-то нравится. Я что на лоре, что здесь уже неоднократно писал, что суть не в «вот эти скрипты решат все ваши проблемы», а в "… а вот что еще можно сделать на баше". Если вы просто потроллить, помните — big tazhate is watching you.
Ну хоть здесь я могу передать тазхейту пламенный привет. Не рискуя быть удалённым =D

>Вечно вы чем-то недовольны) Кому-то нравится

Да я не недоволен, просто если это чисто для себя, то никаких проблем, просто я думаю, что некоторые могут увидеть и решить, что это решение их проблем, вместо здоровых решений. =)

Больше велосипедов разных и нужных.
[quote]некоторые могут увидеть и решить, что это решение их проблем, вместо здоровых решений. =) [/quote]

Всё лишь just 4 fun. На самом деле, первая версия (тогда еще называлась Mitsuki 0.1) писалась на пьяную голову на дежурстве под мерное жужжание кулера новенького HP Proliant. Аниме на буке кончилось и я вдруг вспомнил, что учусь на программиста. Собственно — вот результат. По сабжу — да, вы правы, на лоре я четко дал понять, что (голосом капризного ребенка) «хочу вот так!». А здесь как-то не упомянул. Но, думаю, и без меня очевидна велосипедность.
>export DISPLAY=:0.0;

Эээ. Зачем?
Без него глючило notify-send.
блиа)
покажите вашу фотку?
Эмммм… Мою? Ня...
Кактус же есть. Или вы чисто потренироваться писали это все?
не хватает systat -if для полной кучи
да, мне еще и vmstat предлагали
Простите, а при чём тут «мощь BASH»? Bash использовался исключительно как shell (sh, tcsh, zsh и т.п.). Никаких bash'евых или shell'овых «tips and tricks» нет и в помине. Есть shell-скрипт с перенаправлением вывода, с не очень оптимизированным использованием в нём sed и grep, есть за уши притянутый perl… Вот если бы Вы это всё сделали на чистом bash'е, с использованием его возможностей (here doc'ов, шаблонов, variable substitutions и expansions и прочих «вкусностей»), вот это было бы красиво. А так… just for fun =)
just 4 fun, никто не спорит. Изначально передо мной стояла задача сделать что-то, во что можно тыкнуть пальцем и сказать «а еще баш вот это магёт». Как появилась конкретная задача — убил двух зайцев. А использование фишек усложнит код, всё же старался сделать его максимально простым, используя команды, которые известны всем.
Вот да, sed-аддикт в моей голове аж поперхнулся, увидев зачем здесь потребовался перл.
То, что делает тут perl, можно сделать на чистом bash'е. Да и sed можно везде тоже заменить возможностями bash'а.
Я уже молчу про использование переменных хотя бы для пути/имени out файла…
О ужас! И зачем это? Cacti с плагином monitor справляется отлично.
А за echo 'тут куча html' побил бы

А если нужно проверить доступность хостов, берем html, js и запрашиваем простенький php скрипт, который пингует запрашиваемый хост. Пишется за 5 минут
Круто. Нужно браузер с js и установить пых пых. Это, безусловно, лучше, чем использование перенаправления потока вывода.
НЛО прилетело и опубликовало эту надпись здесь
Как «вариант на коленке для себя» — пусть будет. А так, лучшее, что отсюда можно взять, — это стиль HTML-странички. :)
Тут еще уведомляшки прикольные!
1 — Система мониторинга на BASH, но через пару абзацев apt-get install perl.
2 — sudo chmod 777 — вас давно не били?
3 — «Проект опенсурсный» вы его где-то запаблишили под нормальными лицензиями? Если нет — не тешьте себя призрачными надеждами.
4 — Откройте же для себя snmp.

Ну и естественно — зачем же изобретать новый велосипед, если можно погнуть старый? Что принципиально нового дает ваша система? Вы меня не убедили.
Думаю, вам стоит перечитать ряд комментариев, что я дал выше.
OMG.
если уж перл используется то что бы не переписать по человечески все на нем.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории