Supervisão e Monitorização
-
Upload
sapo-sessions -
Category
Technology
-
view
3.202 -
download
0
description
Transcript of Supervisão e Monitorização
Supervisão e Monitorização
Marco Ramos Maio de 2009
~ 600 servidores em produção
90% Linux + 10% Microsoft
HTTP, SMTP, IMAP, POP3, XMPP, SQL, FTP, RADIUS, LDAP, NNTP, etc.
And growing fast…
SAPO
Como está toda a infraestrutura agora?
Serviços e Sistema
Cross-platform
Não intrusivo, idealmente agentless
Flexível e facilmente extensível
Objectivos
Inicialmente NetSaint, desenvolvido por Ethan Galstad
Nagios Ain’t Gonna Insist On Sainthood
GPL
Grande comunidade
Arquitectura
Nagios Screenshot
Nagios Screenshot (ii)
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?
Tipos de Alertas
Simple Network Management Protocol
Standard
Lightweight e Cross-platform
Organizado em MIBs, acessível por OIDs, facilmente extensível
Síncrono ou Assíncrono
SNMP
Pode ser usada qualquer linguagem
Return codes:
0: Ok
1: Warning
2: Critical
Descrição do problema: última linha enviada para STDOUT
Como escrever plugins/scripts?
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;
Exemplo: Alarme Remoto
exec checkNumberSSH /path/to/scripts/script.sh # Results in: # service name: .1.3.6.1.4.1.2021.8.1.2.1 # command executed: .1.3.6.1.4.1.2021.8.1.3.1 # exit code: .1.3.6.1.4.1.2021.8.1.100.1 # result: .1.3.6.1.4.1.2021.8.1.101.1
#!/bin/sh ps ax | grep -v grep | grep -c ssh
Servidor remoto:
snmpd.conf do servidor remoto:
Exemplo: Alarme Remoto (ii)
#!/usr/local/bin/perl
use strict; use Net::SNMP;
my $hostname = $ARGV[0]; my $community = "sapo"; my $oid = "1.3.6.1.4.1.2021.8.1.101.1";
my ($session, $error) = Net::SNMP->session ( -hostname => $hostname, -community => $community, -port => 161 ); my $result = $session->get_request( -varbindlist => [$oid] );
my $result = $session->get_request( -varbindlist => [$oid] ); if ($result->{$oid} >= 10) { print “Muitos processos SSH\n"; exit 2; } print "Numero de processos SSH OK!\n"; exit 0;
Nagios:
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
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
É O Standard
Cross-platform
Flexível e extensível
Documentação + Comunidade
Não incorpora gestão de inventário
Vantagens e Desvantagens
Alternativas
Como esteve toda a infraestrutura no passado?
Como é expectável que esteja no futuro?
Cross-platform
SNMP?
Objectivos – Parte II
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?
Frontend para RRDtool desenvolvido por Ian Berry
Desenvolvido em PHP + MySQL
GPL
Baseado em sistema de templates
Poller central efectua a recolha
Arquitectura
Cacti Screenshots
Cacti Screenshots (ii)
Exemplo de Script
exec checkNumberSSH /path/to/scripts/script.sh # Results in: # service name: .1.3.6.1.4.1.2021.8.1.2.1 # command executed: .1.3.6.1.4.1.2021.8.1.3.1 # exit code: .1.3.6.1.4.1.2021.8.1.100.1 # result: .1.3.6.1.4.1.2021.8.1.101.1
#!/bin/sh ps ax | grep -v grep | grep -c ssh
Servidor remoto:
snmpd.conf do servidor remoto:
Lembram-se do Slide anterior?
Flexível e extensível
Cross-platform
Comunidade
Excessiva complexidade nalgumas opções
Curva de aprendizagem
Vantagens e Desvantagens
Alternativas
Referências http://nagios.org http://nagiosexchange.org http://zenoss.com http://hyperic.com http://zabbix.com http://pingdom.com http://royal.pingdom.com http://oss.oetiker.ch/rrdtool/ http://cacti.net http://ganglia.info http://munin.projects.linpro.no/ https://labs.omniti.com/trac/reconnoiter
?