Linux
   Home  |  Notícias  |  Artigos  |  Dúvidas  |  Anuncie  | Comunidades |  Parceiros  |  Contato
Login
Facebook  Twitter
Login


Artigos - Servidores

Publicado em 11/11/2011 11:16:42



root

Este artigo trata do restartd software que monitora os serviços que rodam em sua máquina e em caso de queda de algum deles reinicia o mesmo automaticamente.


Garantindo o funcionamento de serviços com o restartd

 

Quem já não passou por esta situação, um belo dia alguém te liga e avisa que o servidor de e-mails parou!!! A internet não acessa (DNS), o Proxy não responde. Eu já passei por isso e tentando encontrar uma solução, me deparei com um software excelente disponível no repositório Debian: 

# apt-cache search restartd
restartd - Process checker and/or restarter 

O programa restartd é um serviço que fica verificando os processos em atividade, que estão rodando e os que não estão. Caso algum processo, por algum motivo sem explicação pare, ele executa qualquer procedimento configurado para a situação.

 

Instalando (Debian): 

# apt-get install restartd 

Configurando: 

# vi /etc/restartd 

Um belo exemplo que utilizo na minha empresa: 

# cat /etc/restartd.conf 

 
# Restartd configuration file
#
#
# Format:
#
# <process_name> <regexp> <action_if_not_running> <action_if_runni ng>
#
# process_name: The name of the process. Just for logging, doesnt take effect fo r the regexp
#
# regexp: the POSIX regular expression for the command line of the process
#
# action_if_not_running: a script or program name to exec if regexp does not mat ch for the full process command line
#
# action_if_running: a script or program name to exec if regexp matches for the full process command line
#
#
# example:
#
# restartd   ".*restartd"       "/bin/echo 'its not running' > /tmp/restartd.out "  "/bin/echo 'its running' > /tmp/restartd.out"
#

dhcpd        ".*dhcp"           "/bin/sh /etc/restartd/dhcp.restartd"    "/bin/echo dhcp 'its not running' > /tmp/restartd.out "
exim4        ".*exim"           "/bin/sh /etc/restartd/exim4.restartd"   "/bin/echo 'exim4 its not running' > /tmp/restartd.out "
named       ".*named"        "/bin/sh /etc/restartd/named.restartd"   "/bin/echo 'bind its not running' > /tmp/restartd.out "
ntpd             ".*ntpd"           "/bin/sh /etc/restartd/ntpd.restartd"   "/bin/echo 'ntpd 'its not running' > /tmp/restartd.out "
psad          ".*psad"           "/bin/sh /etc/restartd/psad.restartd"   "/bin/echo 'psad its not running' > /tmp/restartd.out "
snort         ".*snort"          "/bin/sh /etc/restartd/snort.restartd"   "/bin/echo 'snort its not running' > /tmp/restartd.out "
sshd          ".*sshd"           "/bin/sh /etc/restartd/ssh.restartd"   "/bin/echo 'ssh its not running' > /tmp/restartd.out "

O exemplo acima é uma configuração que utilizo no firewall, a configuração do programa é muito simples, por exemplo: 

O serviço DHCP, caso não esteja rodando, execute "/bin/sh /etc/restartd/dhcp.restartd": 

# vim /etc/restartd/dhcp.restartd 

 
#!/bin/bash # ATRIBUI OS IPS A LAN DATE=`date "+%d%b%Y"` /bin/echo $DATE "DHCP: O SERVIÇO NÃO ESTA RODANDO!" >> /var/log/restartd/dhcp.out sh /etc/init.d/dhcp restart

O script /etc/restartd/dhcp.restart foi um script que montei para os parâmetros de configuração do programa ficarem mais simples e eficiente. 

Para cada serviço criei um script diferente, também alterei o conf /etc/init.d/restartd (PARAMS="-i 10"), para checagem a cada 10 segundos.
 
Testando
 
# sh /etc/init.d/restartd start 

# sh /etc/init.d/dhcp stop 

(ou qualquer outro serviço que você queira testar) 

Aguarde algum tempo e veja o serviço ser reativado pelo restartd.
 
É isso aí galera, espero que tenha contribuído e ajudado de alguma forma com vocês e estarei tentando cada vez mais estar compartilhando alguma experiência que possa vir a conquistar neste universo maravilhoso que é o Linux. 
 

Seja o primeiro a fazer um comentario.




    Logar-se


Links Patrocinados

iCloudWeb - Otimizando Negócios

Impofácil

Bugroon Raízes

Untitled Document

 

Copyright © 2019 SoumaisLinux.com.br . Conteúdo distribuido sob licença GNU FDL