Este documento discute a monitorização e supervisão de sistemas através do Nagios. Descreve a arquitetura do Nagios, como escrever plugins, exemplos de alertas remotos e locais, características importantes como escalar problemas e gerar relatórios, e alternativas como o Cacti para armazenamento e visualização de dados.
2. SAPO
~ 600 servidores em produção
90% Linux + 10% Microsoft
HTTP, SMTP, IMAP, POP3, XMPP,
SQL, FTP, RADIUS, LDAP, NNTP,
etc.
And growing fast…
3. Objectivos
Como está toda a infraestrutura
agora?
Serviços e Sistema
Cross-platform
Não intrusivo, idealmente agentless
Flexível e facilmente extensível
8. Tipos de Alertas
Serviço
Simulação de um pedido de um cliente
(ex.: HTTP Get)
Remoto
Recolha de um valor no sistema
remoto e posterior tratamento (ex.:
espaço em disco). Como?
9. SNMP
Simple Network Management
Protocol
Standard
Lightweight e Cross-platform
Organizado em MIBs, acessível por
OIDs, facilmente extensível
Síncrono ou Assíncrono
10. Como escrever plugins/scripts?
Pode ser usada qualquer linguagem
Return codes:
0: Ok
1: Warning
2: Critical
Descrição do problema: última linha
enviada para STDOUT
11. Exemplo: Alarme de serviço
#!/usr/bin/perl
use strict;
use DBI;
my $host=$ARGV[0];
my $user=$ARGV[1];
my $password=$ARGV[2 ];
my $dbh;
if (!($dbh=DBI->connect("dbi:mysql:host=$host","$user","$password"))) {
print "Cannot connect to MySQL!n";
exit 2;
}
print "MySQL Ok!n";
exit 0;
13. Exemplo: Alarme Remoto (ii)
Nagios:
#!/usr/local/bin/perl
use strict;
my $result = $session->get_request(
use Net::SNMP;
-varbindlist => [$oid]
);
my $hostname = $ARGV[0];
if ($result->{$oid} >= 10) {
my $community = "sapo";
print “Muitos processos SSHn";
my $oid = "1.3.6.1.4.1.2021.8.1.101.1";
exit 2;
}
my ($session, $error) = Net::SNMP->session (
print "Numero de processos SSH OK!n";
-hostname => $hostname,
exit 0;
-community => $community,
-port => 161
);
my $result = $session->get_request(
-varbindlist => [$oid]
);
14. 10 features importantes
Interacção com os alarmes
Envio de notificações
Escalar problemas
Marcação de intervenções
Definição de intervalos de tempo
15. 10 features importantes (ii)
Geração de reports
Definição de acções correctivas
Definição de dependências
Interacção com API do motor
Arquitectura Master-Slave
16. Vantagens e Desvantagens
É O Standard
Cross-platform
Flexível e extensível
Documentação + Comunidade
Não incorpora gestão de inventário
18. Objectivos – Parte II
Como esteve toda a infraestrutura no
passado?
Como é expectável que esteja no
futuro?
Cross-platform
SNMP?
19. Round Robin Database Tool
Desenvolvido por Tobias Oetiker,
criador do MRTG
Baseado na libgd para a geração de
gráficos
Mas… como “injectar” os dados no
RRDtool?
20. Frontend para RRDtool desenvolvido
por Ian Berry
Desenvolvido em PHP + MySQL
GPL
Baseado em sistema de templates
Poller central efectua a recolha