Integração Servidor · 3 min read · Oct 18, 2025
Integração do Servidor Nagios 3.x.x/Icinga 1.x.x Para Alertas SMS Via Dispositivos FoxBox No Debian Squeeze
Integração do Servidor Nagios 3.x.x/Icinga 1.x.x Para Alertas SMS Via Dispositivos FoxBox No Debian Squeeze
Este tutorial explica como integrar um servidor de monitoramento padrão Nagios (ou Icinga) com um dispositivo externo de notificação SMS, o FoxBox ( www.smsfoxbox.it).
1 Nota preliminar
FoxBox, conforme declarado pelos fabricantes, vem em duas versões semelhantes (G25 e LX800) que diferem em especificações de hardware. Neste guia, nos referiremos ao SMS Gateway LX800 (compramos este devido ao seu desempenho superior e ao armazenamento CompactFlash), mas estou confiante de que poderia ser estendido para outras versões sem problemas.
Nosso servidor executa o Nagios Core 3.5.0 (com plugins Nagios 1.4.16) em um Debian Squeeze. Provavelmente, para diferentes distribuições, os caminhos mudarão, mas a lógica permanece praticamente a mesma.
2 Instalação do lado do FoxBox
O dispositivo é projetado para esse tipo de tarefa de comunicação, então não há muito a fazer aqui, exceto:
- Fornecer um endereço IP válido, acessível a partir do nosso servidor de monitoramento;
- Inserir um cartão SIM testado e totalmente funcional, para enviar o SMS.
3 Instalação do lado do Servidor
Primeiro de tudo, precisamos colocar este script dentro da pasta /usr/lib/nagios/plugins/:
#!/usr/bin/perl
use LWP::UserAgent;
use Getopt::Long;
use strict;
use warnings;
use constant OK => 0;
use constant WARNING => 1;
use constant CRITICAL => 2;
use constant UNKNOWN => 3;
use constant SEND_PAGE => "/source/send_sms.php";
my($host);
my($username);
my($password);
my($number);
my($message);
sub usage() {
print("Uso: send_sms -h|--host -u|--user --pw|--pass -n|--number -m|--message \n\n");
print(" - Endereço IP ou nome do host do SMS FoxBox\n");
print(" - Nome do administrador do SMS FoxBox\n");
print(" - Senha do administrador do SMS FoxBox\n");
print(" - Número de telefone para onde o SMS será enviado\n");
print(" - Mensagem a ser enviada\n");
}
sub send_sms {
my($host, $user, $pass, $phonenum, $text) = @_;
my($ua);
my($html_page);
my($response);
my($status_code);
$ua = LWP::UserAgent->new;
$ua->timeout(10);
$response = $ua->post("http://$host" . SEND_PAGE,
[
"username" => $user,
"pwd" => $pass,
"from" => 'Nagios',
"nphone" => $phonenum,
"testo" => $text,
"nc" => "http://$host" . SEND_PAGE
]);
if(!$response->is_success) {
print("ERRO: " . $response->status_line . "\n");
$status_code = UNKNOWN;
}
$html_page = $response->content;
if($html_page =~ /p class="(\w+)"/g) {
if($1 eq "confneg") {
print("ERRO: Não foi possível enviar SMS\n");
$status_code = UNKNOWN;
}
else {
$status_code = OK;
}
}
else {
print("ERRO: Saída de página desconhecida\n");
$status_code = UNKNOWN;
}
return $status_code;
}
undef $host;
def undef $username;
def undef $password;
def undef $number;
def undef $message;
GetOptions( 'host|H=s' => \$host,
'user|u=s' => \$username,
'pass|pw=s' => \$password,
'number|n=s' => \$number,
'message|m=s' => \$message);
if(!defined $host || !defined $username || !defined $password || !defined $number || !defined $message) {
usage();
exit(UNKNOWN);
}
$message =~ s/\\n/\n/g;
my($ret_status);
$ret_status = send_sms($host, $username, $password, $number, $message);
exit($ret_status);
É também importante definir corretamente as permissões neste arquivo, para permitir que o usuário Nagios o execute.
Agora devemos adicionar os novos comandos de notificação, funcionando no canal SMS em vez do clássico canal de e-mail. Para fazer isso, precisamos adicionar estas linhas ao arquivo /etc/nagios3/commands.cfg:
# definição do comando 'notify-host-by-foxbox'
define command{
command_name notify-host-by-foxbox
command_line /usr/lib/nagios/plugins/sendSMS.sh -h "127.0.0.1" -u "nagiosadmin" -pw "nagios" -n "$CONTACTPAGER$" -m "Alerta de Host: $HOSTNAME$ \nEstado do Host: $HOSTSTATE$ \nData/Hora: $LONGDATETIME$"
}
# definição do comando 'notify-service-by-foxbox'
define command{
command_name notify-service-by-foxbox
command_line /usr/lib/nagios/plugins/sendSMS.sh -h "127.0.0.1" -u "nagiosadmin" -pw "nagios" -n "$CONTACTPAGER$" -m "Alerta de Serviço: $HOSTALIAS$/$SERVICEDESC$ \nEstado do Serviço: $SERVICESTATE$ \nData/Hora: $LONGDATETIME$"
}
Como você pode ver, precisamos de uma nova informação para os contatos: o número de telefone. Assim, precisamos defini-lo como “pager” no arquivo /etc/nagios3/conf.d/contacts_nagios2.cfg.
Além disso, configuramos o comando de notificação de serviço/host. Por padrão, estes estão usando o canal de e-mail, enquanto queremos alertar com os novos comandos de notificação, então precisamos editar os parâmetros “service_notification_commands” e “host_notification_commands” também:
define contact{
contact_name test-contact
use generic-contact
alias tester
email yourname@domain
host_notification_commands notify-host-by-foxbox
service_notification_commands notify-service-by-foxbox
pager 12453683421
}
Obviamente, uma vez terminadas as configurações, precisamos reiniciar o serviço Nagios para ver seus efeitos.
Para verificar se tudo está ok, talvez você possa lançar a verificação pré-voo com
nagios3 -v /etc/nagios3/nagios.cfgComo vejo, esta arquitetura também foi implementada em um par de versões do FoxBox, fornecendo uma solução de notificação tudo-em-um (EasyG2 G25 e Monitoring LX800).
(Referência: www.smsfoxbox.it)
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.