<?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>TecnoRetales &#187; Apache</title>
	<atom:link href="http://www.tecnoretales.com/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tecnoretales.com</link>
	<description>La experiencia no se olvida</description>
	<lastBuildDate>Mon, 13 Sep 2010 21:37:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- google ad injected by adsense-optimizer http://www.adsenseoptimizer.de -->
			<div  style="padding:7px; float: right; padding-right: 0; margin: 3px;"><!-- Ad number: 1 --><script type="text/javascript"><!--
    	 
    	google_ad_client = "pub-7180773421652966"; google_alternate_color = "FFFFFF";
		google_ad_width = 468; google_ad_height = 60;
		google_ad_format = "468x60_as"; google_ad_type = "text";
		google_ad_channel =""; google_color_border = "FE8B00";
		google_color_link = "FE8B00"; google_color_bg = "FFFFFF";
		google_color_text = "000000"; google_color_url = "D9D9D9";
		google_ui_features = "rc:6"; //--></script>
		<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></div>	<item>
		<title>Instalar Monit para monitorizar un servidor Apache, MySQL y OpenSSH</title>
		<link>http://www.tecnoretales.com/linux/instalar-monit-para-monitorizar-un-servidor-apache-y-mysql/</link>
		<comments>http://www.tecnoretales.com/linux/instalar-monit-para-monitorizar-un-servidor-apache-y-mysql/#comments</comments>
		<pubDate>Sun, 10 May 2009 15:58:03 +0000</pubDate>
		<dc:creator>Manel Pérez Mata</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Monit]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.tecnoretales.com/?p=79</guid>
		<description><![CDATA[Para los que no esteis al caso, según su propia web, Monit es una utilidad gratuita de código abierto para la gestión y vigilancia de procesos, archivos, directorios y sistemas de ficheros en un sistema UNIX.
Configurado correctamente, Monit es capaz de realizar el mantenimiento y la reparación de los servicios, procesos&#8230;  incluso ejecutar acciones [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p><a href="http://mmonit.com/monit/"><img class="size-full wp-image-80 alignright" title="Monit Logo" src="http://www.tecnoretales.com/wp-content/uploads/2009/04/monit_banner.png" alt="Monit Logo" width="257" height="151" /></a>Para los que no esteis al caso, según su propia web, <a title="Web oficial Monit" href="http://mmonit.com/monit/" target="_blank">Monit</a> es una utilidad gratuita de código abierto para la gestión y vigilancia de procesos, archivos, directorios y sistemas de ficheros en un sistema UNIX.</p>
<p>Configurado correctamente, Monit es capaz de realizar el mantenimiento y la reparación de los servicios, procesos&#8230;  incluso ejecutar acciones programadas para situaciones de error.</p>
<p>Por poner un ejemplo, un uso común que se le suele dar es que vaya controlando si apache está funcionando correctamente, en caso de estar caido o saturado, Monit lo levantará automáticamente y nos enviará un mail informando del problema solventado.</p>
<p><span id="more-79"></span><strong>Instalación de Monit</strong></p>
<p>1) Descargamos la última versión estable de Monit (en mi caso la 5.0.1) de la <a href="http://mmonit.com/monit/download/dist.html" target="blank">página oficial</a>, como lo instalaré en una debian, voy a la distribución en concreto, y me descargo el paquete deb para la arquitectura de mi máquina i386:</p>
<pre>wget http://ftp.uk.debian.org/debian/pool/main/m/monit/monit_4.10.1-4_i386.deb</pre>
<p>2) Y lo instalamos con el comando dpkg:</p>
<pre>sudo dpkg -i monit_4.10.1-4_i386.deb</pre>
<p>Si todo ha ido bien, obtendremos un resultado como este:</p>
<pre>Selecting previously deselected package monit.
(Reading database ... 195390 files and directories currently installed.)
Unpacking monit (from monit_4.10.1-4_i386.deb) ...
Setting up monit (1:4.10.1-4) ...
Starting daemon monitor: monit won't be started/stopped
	unless it it's configured
	please configure monit and then edit /etc/default/monit
	and set the "startup" variable to 1 in order to allow
	monit to start</pre>
<p>Llegados a este punto, ya tenemos instalado <strong>Monit en nuestro servidor Debian</strong>, ¿sencillo no?</p>
<p>Un último paso en la instalación antes de pasar a la configuración (sólo aplica si tienes apache instalado y deseas monitorizarlo con monit):</p>
<p>Localiza el directorio root document del servidor Apache que queramos monitorizar y dentro de él crear una carpeta llamada monit que contenga un archivo llamado token (el contenido de este archivo es irrelevante)</p>
<pre>mkdir -p /PATH_TO_ROOT_FOLDER/monit/
touch /PATH_TO_ROOT_FOLDER/monit/token</pre>
<p>Comprobaremos que todo ha ido bien visitando <em>http://[IP_SERVER]/monit/token</em>. Si no hay un error, es que apache ha podido leer correctamente el archivo /monit/token, en caso de error asegúrate de que has creado el archivo en la ubicación correcta y que apache puede leerlo.</p>
<p><strong>Configuración de Alertas Monit</strong></p>
<p>El fichero de configuración de Monit se encuentra en la ruta <em>/etc/monit/monitrc</em>, por defecto trae una serie de configuraciones definidas y comentadas que podremos utilizar para tener lista una <strong>configuración básica</strong>, con un poco de tiempo y paciencia, podeis ir añadiendo diferentes chequeos.</p>
<pre>sudo vi /etc/monit/monitrc</pre>
<p>Primero modificaremos la <strong>información de las alertas vía mail</strong> (recordad que debeis tener configurado en vuestro servidor un servidor de correo).</p>
<p>Añadimos la siguiente información en la sección <em>Global Sectio</em> modificando miMail@hotmail.com por el mail en el que queremos recibir las visitas y monit@myServer.com por el mail del que queremos que provenga, por ejemplo, monit@mi-dominio.com:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">set</span> alert miMail@hotmail.com</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">set</span> mail-format <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;from: monit@myServer.com</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;subject: <span class="re1">$SERVICE</span> <span class="re1">$EVENT</span> at <span class="re1">$DATE</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;message: </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Monit <span class="re1">$ACTION</span> <span class="re1">$SERVICE</span> at <span class="re1">$DATE</span> on <span class="re1">$HOST</span>: <span class="re1">$DESCRIPTION</span>.</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Yours sincerely,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; monit</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p><strong>Configuración de control de Apache</strong></p>
<p>Añadimos la siguiente información al final de la sección <em>Services</em></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">check process apache with pidfile /var/run/apache2.pid</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;group www</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;start program = <span class="st0">&quot;/etc/init.d/apache2 start&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;stop program &nbsp;= <span class="st0">&quot;/etc/init.d/apache2 stop&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="kw1">if</span> failed host <span class="br0">&#91;</span>IP_SERVER<span class="br0">&#93;</span> port <span class="nu0">80</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; protocol http request /monit/token <span class="kw1">then</span> restart</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> cpu is greater than <span class="nu0">60</span>% <span class="kw1">for</span> <span class="nu0">3</span> cycles <span class="kw1">then</span> alert</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> cpu &gt; <span class="nu0">80</span>% <span class="kw1">for</span> <span class="nu0">5</span> cycles <span class="kw1">then</span> restart</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> totalmem &gt; <span class="nu0">400</span> MB <span class="kw1">for</span> <span class="nu0">5</span> cycles <span class="kw1">then</span> restart</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="kw1">if</span> children &gt; <span class="nu0">250</span> <span class="kw1">then</span> restart</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> loadavg<span class="br0">&#40;</span>5min<span class="br0">&#41;</span> greater than <span class="nu0">10</span> <span class="kw1">for</span> <span class="nu0">8</span> cycles <span class="kw1">then</span> stop</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="nu0">3</span> restarts within <span class="nu0">5</span> cycles <span class="kw1">then</span> timeout</div>
</li>
</ol>
</div>
<p><strong>NOTA!!</strong> Debemos modificar la ruta del fichero pid de apache a donde lo tengamos alojado. En Debian suele ser <em>/var/run/apache2.pid</em> y los valores que he colocado entre [] por los de nuestro servidor.</p>
<p>Explicado de un modo rápido, le estamos indicando que reinicie el servidor Apache si el servidor presenta uno de los siguientes sintomas:</p>
<ul>
<li>No responde al visitar la url <em>http://[IP_SERVER]/monit/token</em></li>
<li>Apache ocupa más del 80% de la CPU durante 5 ciclos de Monit</li>
<li>La memoria utilizada por Apache es superior a 400MB durante 5 ciclos de Monit</li>
<li>El proceso tiene más de 250 hijos</li>
</ul>
<p>Que nos envíe un mail (siempre que tengamos configurado un servidor de correo) en caso de que:</p>
<ul>
<li>Haya detectado uno de los problemas mencionados anteriormente</li>
<li>Apache ocupa más del 60% de la CPU durante 3 ciclos de Monit</li>
</ul>
<p>Y parará el servidor en caso de error crítico avisandonos vía email.</p>
<p><strong>Configuración de control de MySQL</strong></p>
<p>Para configurar un chequeo del servidor MySQL, añadimos la siguiente información después del bloque configurado anteriormente:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">check process mysql with pidfile /var/run/mysqld/mysqld.pid</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;group database</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;start program = <span class="st0">&quot;/etc/init.d/mysql start&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;stop program = <span class="st0">&quot;/etc/init.d/mysql stop&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="kw1">if</span> failed host <span class="nu0">127.0</span><span class="nu0">.0</span><span class="nu0">.1</span> port <span class="nu0">3306</span> <span class="kw1">then</span> restart</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="nu0">5</span> restarts within <span class="nu0">5</span> cycles <span class="kw1">then</span> timeout</div>
</li>
</ol>
</div>
<p><strong>NOTA!!</strong> Debemos modificar la ruta del fichero pid de mysql a donde lo tengamos alojado. En Debian suele ser <em>/var/run/mysqld/mysqld.pid</em>.</p>
<p><strong>Configuración de control de OpenSsh</strong></p>
<p>Para acabar este tutorial, configuraremos un control del servidor SSH, punto importante, pues si no podemos acceder físicamente a nuestro servidor y no podemos acceder mediante SSH porque este servicio ha caido, tenemos un pequeño problema <img src='http://www.tecnoretales.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Añadiremos el siguiente trozo de código acordandonos de cambiar la ruta al fichero sshd.pid a la correspondiente en nuestro servidor:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">check process sshd with pidfile /var/run/sshd.pid</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;start program &nbsp;<span class="st0">&quot;/etc/init.d/ssh start&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;stop program &nbsp;<span class="st0">&quot;/etc/init.d/ssh stop&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> failed port <span class="nu0">22</span> protocol <span class="kw2">ssh</span> <span class="kw1">then</span> restart</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="kw1">if</span> <span class="nu0">5</span> restarts within <span class="nu0">5</span> cycles <span class="kw1">then</span> timeout</div>
</li>
</ol>
</div>
<p>Cabe <strong>remarcar la importancia de tener monitorizaciones cruzadas</strong> desde diferentes servidores, pues si, por poner un ejemplo, se corta la conexión en nuestro servidor de producción monitorizado desde la mísma máquina, a pesar de que monit lo detectará, intentará enviar emails que no llegarán (pues no tiene conexión). Para evitar esto y tenemos la suerte de disponer de varios servidores, podemos indicar al server1 que monitorice los servicios de server2 y en caso de fallar, que nos alerte vía mail para poder actuar en consecuencia.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.tecnoretales.com/linux/instalar-monit-para-monitorizar-un-servidor-apache-y-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

