<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>hudson@work &#187; monitoring</title>
	<atom:link href="http://hudson.su/tag/monitoring/feed/" rel="self" type="application/rss+xml" />
	<link>http://hudson.su</link>
	<description>статьи о web-разработке, менеджменте IT проектов и контроле качества</description>
	<lastBuildDate>Fri, 20 Jan 2012 13:15:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Полезные плагины мониторинга nginx для munin</title>
		<link>http://hudson.su/2009/11/24/poleznye-plaginy-monitoringa-nginx-dlya-munin/</link>
		<comments>http://hudson.su/2009/11/24/poleznye-plaginy-monitoringa-nginx-dlya-munin/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 12:52:00 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[hints]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=485</guid>
		<description><![CDATA[Ниже приведены полезные плагины для мониторинга nginx, которые я использую на боевых серверах NGINX ram usage Из названия ясно что данный плагин позволяет наблюдать расход памяти nginx&#8217;ом: Установка плагина nginx ram usage: $ cd /usr/share/munin/plugins $ wget -O ngnix_memory http://muninexchange.projects.linpro.no/download.php?phid=626 $ chmod +x ngnix_memory $ ln -s /usr/share/munin/plugins/ngnix_memory /etc/munin/plugins $ /etc/init.d/munin-node restart Тут же можно [...]]]></description>
			<content:encoded><![CDATA[<p>Ниже приведены полезные плагины для мониторинга nginx, которые я использую на боевых серверах</p>
<p><span id="more-485"></span></p>
<p><a href="http://muninexchange.projects.linpro.no/?search=&amp;cid=54&amp;os[4]=on&amp;os[7]=on&amp;os[3]=on&amp;os[2]=on&amp;os[5]=on&amp;os[8]=on&amp;os[1]=on&amp;os[6]=on&amp;pid=419" target="_blank">NGINX ram usage</a></p>
<p>Из названия ясно что данный плагин позволяет наблюдать расход памяти nginx&#8217;ом:</p>
<p><img class="alignnone size-full wp-image-486" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/nginx-ram.png" alt="График использования памяти nginx" width="495" height="264" /></p>
<p>Установка плагина nginx ram usage:</p>
<pre>$ cd /usr/share/munin/plugins
$ wget -O ngnix_memory http://muninexchange.projects.linpro.no/download.php?phid=626
$ chmod +x ngnix_memory
$ ln -s /usr/share/munin/plugins/ngnix_memory /etc/munin/plugins
$ /etc/init.d/munin-node restart

Тут же можно проверить работоспособность плагина
$ ./ngnix_memory
ram.value 2637824
</pre>
<p><a href="http://muninexchange.projects.linpro.no/?search=&amp;cid=54&amp;os[4]=on&amp;os[7]=on&amp;os[3]=on&amp;os[2]=on&amp;os[5]=on&amp;os[8]=on&amp;os[1]=on&amp;os[6]=on&amp;pid=51" target="_blank">NGINX requests</a></p>
<p>Позволяет наблюдать число запросов к серверу nginx в секунду:</p>
<p><img class="alignnone size-full wp-image-487" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/nginx-requests.png" alt="График числа запросов к nginx в секунду" width="497" height="282" /></p>
<p>Установка плагина nginx requests:</p>
<pre>$ cd /usr/share/munin/plugins
$ wget -O nginx_request http://muninexchange.projects.linpro.no/download.php?phid=64
$ chmod +x nginx_request
$ ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins
$ /etc/init.d/munin-node restart

Тут же можно проверить работоспособность плагина
$ ./nginx_request
request.value 7875541
</pre>
<p><a href="http://muninexchange.projects.linpro.no/?search=&amp;cid=54&amp;os[4]=on&amp;os[7]=on&amp;os[3]=on&amp;os[2]=on&amp;os[5]=on&amp;os[8]=on&amp;os[1]=on&amp;os[6]=on&amp;pid=52" target="_blank">NGINX status</a></p>
<p>Позволяет наблюдать текущие статусы nginx &#8211; сколько запросов активно, читают данные с диска, пишут данные на диск, находятся в ожидании:</p>
<p><img class="alignnone size-full wp-image-488" src="http://hudson.su/wp-content/blogs.dir/1/files/2009/11/nginx-status.png" alt="График статусов сервера nginx" width="497" height="366" /></p>
<p>Установка плагина nginx status:</p>
<pre>$ cd /usr/share/munin/plugins
$ wget -O nginx_status http://muninexchange.projects.linpro.no/download.php?phid=65
$ chmod +x nginx_status
$ ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins
$ /etc/init.d/munin-node restart

Тут же можно проверить работоспособность плагина
$ ./nginx_status
total.value 15
reading.value 0
writing.value 1
waiting.value 14
</pre>
<p>HTH! Спасибо munin за наш спокойный сон )</p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/11/24/poleznye-plaginy-monitoringa-nginx-dlya-munin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Тестер http-статус кода для munin</title>
		<link>http://hudson.su/2009/09/15/test-http-status-for-munin/</link>
		<comments>http://hudson.su/2009/09/15/test-http-status-for-munin/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 12:04:00 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=95</guid>
		<description><![CDATA[Мелочевка в копилку. Как оказалось, может быть полезно. Сразу оговорюсь, решение не гениальное, но забавное Итак, постановка задачи. Требуется периодически мониторить статус веб-сервера. Т.е. не полноценный тест, а просто проверка, живо ли приложение (именно приложение, а не apache и иже с ними). Будем запрашивать главную страницу и проверять код ответа. 1xx, 2xx, 3xxx считаем нормой, 4xx &#8211; WARNING, 5xx &#8211; CRITICAL. В качестве [...]]]></description>
			<content:encoded><![CDATA[<p>Мелочевка в копилку. Как оказалось, может быть полезно. Сразу оговорюсь, решение не гениальное, но забавное <img src='http://hudson.su/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3><span id="more-95"></span>Итак, постановка задачи.</h3>
<p>Требуется периодически мониторить статус веб-сервера. Т.е. не полноценный тест, а просто проверка, живо ли приложение (именно приложение, а не apache и иже с ними). Будем запрашивать главную страницу и проверять код ответа. 1xx, 2xx, 3xxx считаем нормой, 4xx &#8211; WARNING, 5xx &#8211; CRITICAL. В качестве окружения &#8211; CentOS сервер с установленным munin-node (один из нодов в общем мониторинге).</p>
<h3>Плагин будет состоять из 2х частей.</h3>
<p>- Простенький таск на PHP (symfony), который получает статус-коды<br />
- Собственно плагин на bash</p>
<p>Таск на symfony (подробно процесс создания таска описан тут <a href="http://www.symfony-project.org/cookbook/1_2/en/tasks">http://www.symfony-project.org/cookbook/1_2/en/tasks</a>):</p>
<p>- создаем класс</p>
<pre>
#lib/task/testSitesResponseTask.class.php
class testSitesResponseTask extends sfBaseTask
{
}
</pre>
<p>Таск будет принимать один параметр &#8211; список сайтов, разделенный запятыми.</p>
<pre>
protected function configure()
{
  //....
  $this-&gt;addArgument('sites', sfCommandArgument::REQUIRED, 'Sites URLs comma separated. E.g. "www.site1.ru,www.site2.ru"');
}
</pre>
<p>Тело таска:</p>
<pre>
protected function execute($arguments = array(), $options = array())
{
  $sites_array = explode( ',', $arguments['sites'] );
  foreach( $sites_array as $site )
  {
    $code = $this-&gt;tester( $site );
    $site_string = str_replace( array('.','/'), '_', $site ); <span>// заменяем точки и слеши на подчерк (создаем уникальную переменную для сайта)</span>
    echo "$site_string.value $coden"; <span>// это важная строка! вывод значения для munin в виде variable_name.value NNN</span>
  }
}</pre>
<p>И простенький тестер на базе CURL:</p>
<pre>
protected function tester( $url )
{
  $ch = curl_init();
  curl_setopt( $ch, CURLOPT_URL, $url );
  curl_setopt( $ch, CURLOPT_HEADER, true );
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
  curl_exec( $ch );
  $result = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); <span>// Cохраняем HTTP статус-код в переменную</span>
  curl_close($ch);
  return $result;
}</pre>
<p>Запускается таск таким образом:</p>
<pre>
bash-3.2$ php symfony namespace:test-sites-response www.site1.ru,www.site2.ru
www_site1_ru.value 0
www_site2_ru.value 200</pre>
<p>Теперь на базе этого таска можно написать плагинчик, который будет тестировать наши сайты.<br />
Munin хранит плагины в <strong>/usr/share/munin/plugins/</strong> (хотя в общем-то можно наш плагинчик положить сразу в <strong>/etc/munin/plugins/</strong>).<br />
Наш плагин состоит из 2х частей. Конфигуратора и собственно запуска плагина.</p>
<pre>
# vim /usr/share/munin/plugins/sites
#!/bin/bash
# конфигуратор, запускается munin c параметром config. Показывает конфигурацию и выключается.
# заголовок графика
graph_title Sites status test
# подпись по оси Y
graph_vlabel status code
# категория
graph_category misc
# Описание под графиком
graph_info Sites status code
# псевдонимы
www_site1_ru.label site1
www_site2_ru.label site2
# лимиты для нотификации
www_site1_ru.warning 400
www_site1_ru.critical 500
www_site2_ru.warning 400
www_site2_ru.critical 500
# подписи для графиков
site1.info Status of the site1
site2.info Status of the site2
# запуск плагина
/path/to/symfony/symfony namespace:test-sites-response www.site1.ru,www.site2.ru
</pre>
<p>Вот почти все <img src='http://hudson.su/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Теперь делаем файл исполняемым и симлинк на него: </p>
<pre>
# chmod +x <span>/usr/share/munin/plugins/sites
# ln -s <span>/usr/share/munin/plugins/sites /etc/munin/plugins/sites
</pre>
<p>Протестируем плагин:</p>
<pre># /usr/sbin/munin-run sites</pre>
<p>и конфигурацию</p>
<pre># /usr/sbin/munin-run sites config</pre>
<p>Если все работает, перезапускаем munin-node:</p>
<pre># /etc/init.d/munin-node restart</strong></pre>
<p>И наблюдаем за построением графика.<br />
p.s. о создании плагинов для munin подробнее тут: <a href="http://munin.projects.linpro.no/wiki/HowToWritePlugins">http://munin.projects.linpro.no/wiki/HowToWritePlugins</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/09/15/test-http-status-for-munin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мониторинг для ленивых с помощью munin на примере CentOS 5</title>
		<link>http://hudson.su/2009/05/30/lazy-monitoring-with-munin/</link>
		<comments>http://hudson.su/2009/05/30/lazy-monitoring-with-munin/#comments</comments>
		<pubDate>Sat, 30 May 2009 20:08:00 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[munin]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=82</guid>
		<description><![CDATA[Проблема: нужно мониторить состояние основных параметров одного или нескольких серверов. Достаточно часто возникающая задача как мне кажется. Предисловие: В основу данной статьи легла эта статья на HowToForge http://www.howtoforge.com/server-monitoring-with-munin-and-monit-on-centos-5.2 и мой личный опыт настройки и работы с Munin. Munin мониторит и создает графики по ряду критичных параметров и приложений на ваших серверах &#8211; как то Apache, [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="font-size: medium">Проблема</span></strong>:</p>
<p>нужно мониторить состояние основных параметров одного или нескольких серверов. Достаточно часто возникающая задача как мне кажется.</p>
<p><strong><span style="font-size: medium">Предисловие</span></strong>:</p>
<p>В основу данной статьи легла эта статья на HowToForge <a href="http://www.howtoforge.com/server-monitoring-with-munin-and-monit-on-centos-5.2">http://www.howtoforge.com/server-monitoring-with-munin-and-monit-on-centos-5.2</a> и мой личный опыт настройки и работы с <strong>Munin</strong>.</p>
<p>Munin мониторит и создает графики по ряду критичных параметров и приложений на ваших серверах &#8211; как то <strong>Apache</strong>, <strong>MySQL</strong>, <strong>Postfix</strong> и многие другие.</p>
<p>Он быстро и просто настраивается, быстро расширяется плагинчиками (коих по умолчанию тоже не мало), которые можно писать и самому на удобном для вас языке (<strong>bash</strong>, <strong>perl</strong>, <strong>php</strong>, <strong>ruby</strong>&#8230; &#8211; смотря что у вас есть в распоряжении). Очень приятной особенностью munin является то, что он также быстро может быть настроен на мониторинг более чем одного сервера и даже может интегрироваться с <strong>Nagios</strong>.</p>
<p>Munin это конечно же не единственное решение проблемы мониторинга. Однако мне оно понравилось простотой и быстротой настройки, легкой расширяемостью &#8211; и я его применяю прямо сейчас )) Чего и вам желаю.</p>
<p>Основные ссылки на проект:</p>
<ul>
<li>Trac проекта &#8211; <a href="http://munin.projects.linpro.no/">http://munin.projects.linpro.no/</a></li>
<li>Каталог плагинов &#8211; <a href="http://muninexchange.projects.linpro.no/">http://muninexchange.projects.linpro.no/</a></li>
</ul>
<p><strong><span style="font-size: medium">Решение</span></strong>:</p>
<p>Актуально для <strong>CentOS 5</strong>, но может быть адаптировано и для других Linux дистрибутивов при наличии смекалки и прямых ручонок.</p>
<p><span id="more-82"></span></p>
<p><span style="font-size: small"><strong>1. Допущения</strong></span></p>
<p>У вас есть некий хостнейм server1.example.com и вебсайт www.example.com на нем с корнем document root в /var/www/www.example.com/web.</p>
<p><span style="font-size: small"><strong>2. Добавляем репозиторий RPMforge</strong></span></p>
<p>В CentOS 5 munin не доступен в дефолтных репозиториях. К счастью мы можем установить его из репозитория RPMforge. Для того чтобы добавить возможность работы с RPMforge мы должны выполнить следующие команды:</p>
<p>для i386 систем:</p>
<div style="margin-left: 40px">
<p><span>wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm<br />
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm</span></p>
<p>rm -f rpmforge-release-0.3.6-1.el5.rf.i386.rpm</p>
</div>
<p>для x86_64 систем:</p>
<div style="margin-left: 40px">
<p><span>wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm<br />
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm</span></p>
<p>rm -f rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm</p>
</div>
<p>(обязательно посетите <a href="https://rpmrepo.org/RPMforge/Using" target="_balnk">https://rpmrepo.org/RPMforge/Using</a> для того чтобы получить ссылки на последние версии).</p>
<p><span style="font-size: small"><strong>3. Устанавливаем и конфигурируем munin</strong></span></p>
<p>для того чтобы установить munin достаточно выполнить следующую команду:</p>
<div style="margin-left: 40px"><span>yum install munin munin-node</span></div>
<p>Небольшое лирическое отступление: здесь мы устанавливаем два пакета &#8211; munin и munin-node. Первый это собственно сам munin который собирает данные по нодам и рисует графики. Второй &#8211; это провайдер данных с конкретного нода. Т.е. munin-node в соответствии с настройками плагинов собирает информацию, и передает ее munin по запросу с его стороны. Для нода, который не является собственно сервером статистики munin нужно устанавливать только munin-node.</p>
<p>Затем нам нужно создать startup ссылки для munin-node и запустить его.</p>
<div style="margin-left: 40px"><span>chkconfig &#8211;levels 235 munin-node on<br />
/etc/init.d/munin-node start</span></div>
<p>Далее редактируем конфигурационный файл munin /etc/munin/munin.conf. Нужно указать munin куда сладывать вывод (html + графики). Поскольку нам интересно мониторить по web &#8211; изменяем значение параметра htmldir, и также мы хотим использовать имя server1.example.com вместо localhost.localdomain в HTML файлах, т.о. мы заменяем localhost.localdomain на server1.example.com. Файл в результате будет выглядеть так:</p>
<div style="margin-left: 40px">
<p><span>vi /etc/munin/munin.conf</span></p>
<p>[...]<br />
dbdir   /var/lib/munin<br />
htmldir /var/www/www.example.com/web/monitoring<br />
logdir  /var/log/munin<br />
rundir  /var/run/munin</p>
<p># Where to look for the HTML templates<br />
tmpldir /etc/munin/templates<br />
[...]<br />
# a simple host tree<br />
[server1.example.com]<br />
address 127.0.0.1<br />
use_node_name yes<br />
[...]</p>
</div>
<p>Затем подготовим директорию в docroot нашего сайта www.example.com: /var/www/www.example.com/web/monitoring и изменим права доступа на пользователя и группу munin, иначе munin не сможет записывать свои выходные файлы туда. После рестартуем munin:</p>
<div style="margin-left: 40px"><span>mkdir -p /var/www/www.example.com/web/monitoring<br />
chown munin:munin /var/www/www.example.com/web/monitoring<br />
/etc/init.d/munin-node restart</span></div>
<p>Теперь нужно подождать десяток минут пока munin соберет первую статистику и после этого открыть http://www.example.com/monitoring/ в своем любимом браузере, и вы сможете увидеть вашу первую статистику. После нескольких дней она будет выглядеть как-то так:</p>
<p><a href="http://pics.livejournal.com/dbykadorov/pic/0000cew6/"><img src="http://pics.livejournal.com/dbykadorov/pic/0000cew6/s320x240" border="0" alt="" width="286" height="240" /></a> <a href="http://pics.livejournal.com/dbykadorov/pic/0000dwc1/"><img src="http://pics.livejournal.com/dbykadorov/pic/0000dwc1/s320x240" border="0" alt="" width="271" height="240" /></a></p>
<p>(это лишь небольшой пример тех графиков, которые создает munin)</p>
<p><span style="font-size: small"><strong>4. Защищаем наш мониторинг от посторонних базовой HTTP аутентификацией</strong></span></p>
<p>Теперь неплохо было бы защитить паролем директорию /var/www/www.example.com/web/monitoring (если вы конечно не хотите предоставлять публичный доступ к статистике).</p>
<p>Делается это просто &#8211; создаем .htaccess файл в /var/www/www.example.com/web/monitoring:</p>
<div style="margin-left: 40px">
<p><span>vi /var/www/www.example.com/web/monitoring/.htaccess</span></p>
<p>AuthType Basic<br />
AuthName &#8220;Members Only&#8221;<br />
AuthUserFile /var/www/www.example.com/.htpasswd<br />
&lt;limit GET PUT POST&gt;<br />
require valid-user<br />
&lt;/limit&gt;</p>
</div>
<p>Теперь нужно создать файл с паролями для доступа к дериктории &#8211; /var/www/www.example.com/.htpasswd. Мы хотим добавить пользователя admin:</p>
<div style="margin-left: 40px"><span><br />
htpasswd -c /var/www/www.example.com/.htpasswd admin</span></div>
<p>Вводим пароль админа &#8211; и вуаля! ))</p>
<p><span style="font-size: small"><strong>5 Добавляем в мониторинг еще один сервер</strong></span></p>
<p>Пусть у нас есть еще один сервер server2.example.com и мы хотим добавить его в мониторинг.</p>
<p>Выполняем шаг 2 (RPMforge) так же как и для первого сервера. В шаге 3 будут некоторые изменения:</p>
<p>Устанавливаем только munin-node:</p>
<div style="margin-left: 40px"><span>yum install munin-node</span></div>
<p>Затем нам нужно создать startup ссылки для munin-node и запустить его.</p>
<div style="margin-left: 40px"><span>chkconfig &#8211;levels 235 munin-node on<br />
/etc/init.d/munin-node start</span></div>
<p>Это еще не все. Теперь нам надо сказать основному серверу munin что появился новый нод в мониторинге. Заходим на server1.example.com, открываем /etc/munin/munin.conf и добавляем новую секцию host:</p>
<div style="margin-left: 40px"><span>[server2.example.com]<br />
local_address XX.XX.XX.XX<br />
use_node_name yes</span></div>
<p>Здесь XX.XX.XX.XX это IP адрес server2.example.com</p>
<p>Далее надо на ноде server2.example.com разрешить доступ к сборщику статистики с нашего головного сервера. Открываем файл /etc/munin/munin-node.conf и ищем такие строки:</p>
<div style="margin-left: 40px">
<p><span># A list of addresses that are allowed to connect.  This must be a<br />
# regular expression, due to brain damage in Net::Server, which<br />
# doesn&#8217;t understand CIDR-style network notation.  You may repeat<br />
# the allow line as many times as you&#8217;d like</span></p>
<p>allow ^127.0.0.1$</p>
</div>
<p>Ниже надо дописать regexp с IP головного сервера мониторинга, чтобы munin-node отдавал ему статистику.</p>
<div style="margin-left: 40px"><span>allow ^YY.YY.YY.YY$ </span></div>
<p>где YY.YY.YY.YY IP нашего головного сервера.</p>
<p>После этого нужно перезапустить munin-node</p>
<div style="margin-left: 40px"><span>/etc/init.d/munin-node start</span></div>
<p>И подождать пока головной сервер запросит статистику с этого нода. Кстати посмотреть и изменить при необходимости частоту запуска можно в файле /etc/cron.d/munin. По умолчанию там будет что-то такое:<br />
<span><br />
</span></p>
<div style="margin-left: 40px"><span>*/5 * * * *     munin test -x /usr/bin/munin-cron &amp;&amp; /usr/bin/munin-cron<br />
14 10 * * *     munin test -x /usr/share/munin/munin-limits &amp;&amp; /usr/share/munin/munin-limits &#8211;force &#8211;contact nagios &#8211;contact old-nagios</span></div>
<p>Основное сердце Munin это первая строка &#8211; которая собственно и запускает опрос нодов и создание выходных файлов. При желании этот процесс можно запускать чаще или реже.</p>
<p><span style="font-size: small"><strong>6. Нотификации</strong></span></p>
<p>Помимо пассивного мониторинга, munin может также предупреждать нас о достижении некоторых лимитов по тому или иному ресурсу на сервере. Нотификации настраиваются на головном сервере мониторинга (в нашем случае это server1.example.com).</p>
<p>Откроем /etc/munin/munin.conf и добавим туда следующие строки:</p>
<div style="margin-left: 40px"><span># группы контактов &#8211; пока один me<br />
contacts me<br />
# команда на отправку нотификации<br />
contact.me.command |mail -s &#8220;Munin-notification for ${var:group} :: ${var:host}&#8221; your@email.address.here<br />
# всегда отправлять предупреждения и критические нотификации<br />
contact.me.always_send warning critical</span></div>
<p>Полный список переменных типа ${var:group} можно посмотреть здесь: <a href="http://munin.projects.linpro.no/wiki/MuninAlertVariables" target="_blank">http://munin.projects.linpro.no/wiki/MuninAlertVariables</a>.</p>
<p>В моем случае пришлось заместо mail нашаманить довольно топорный скриптик-враппер над qmail-inject:</p>
<div style="margin-left: 40px"><span>#!/bin/bash<br />
echo &#8220;To: $1<br />
From: monitoring@example.com<br />
Subject: $2<br />
$3<br />
&#8211;<br />
example.com-monitoring with munin&#8221; | /var/qmail/bin/qmail-inject</span></div>
<p>И команда отправки выглядит так:</p>
<div style="margin-left: 40px"><span>contact.me.command | /root/bin/munin.notify your@email.address.here &#8220;Munin-notification for ${var:group} :: ${var:host}&#8221; &#8220;[${var:group};${var:host}] -&gt; ${var:graph_title} -&gt; warnings: ${loop&lt;,&gt;:wfields  ${var:label}=${var:value}} criticals: ${loop&lt;,&gt;:cfields  ${var:label}=${var:value}}&#8221;</span></div>
<p>Результат выполнения будет такой:</p>
<div style="margin-left: 40px">
<p><span>Subject: Munin-notification for example.com :: server2.example.com</span></p>
<p>[example.com;server2.example.com] -&gt; CPU usage -&gt; warnings:  user=70.94 criticals:</p>
<p>&#8211;<br />
example.com-monitoring with munin</p>
</div>
<p>Вот вкратце все, что я хотел рассказать про этот замечательный инструмент для любого LAMP проекта. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/05/30/lazy-monitoring-with-munin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

