Supervisão e Monitorização

28
Supervisão e Monitorização Marco Ramos Maio de 2009

description

Ferramentas e metodologias para supervisionar e monitorizar sistemas remotos. Como deixar centenas de servidores na empresa e ir para casa dormir descansado.

Transcript of Supervisão e Monitorização

Page 1: Supervisão e Monitorização

Supervisão e Monitorização

Marco Ramos Maio de 2009

Page 2: Supervisão e Monitorização

 ~ 600 servidores em produção

 90% Linux + 10% Microsoft

 HTTP, SMTP, IMAP, POP3, XMPP, SQL, FTP, RADIUS, LDAP, NNTP, etc.

 And growing fast…

SAPO

Page 3: Supervisão e Monitorização

 Como está toda a infraestrutura agora?

 Serviços e Sistema

 Cross-platform

 Não intrusivo, idealmente agentless

 Flexível e facilmente extensível

Objectivos

Page 4: Supervisão e Monitorização

 Inicialmente NetSaint, desenvolvido por Ethan Galstad

 Nagios Ain’t Gonna Insist On Sainthood

 GPL

 Grande comunidade

Page 5: Supervisão e Monitorização

Arquitectura

Page 6: Supervisão e Monitorização

Nagios Screenshot

Page 7: Supervisão e Monitorização

Nagios Screenshot (ii)

Page 8: Supervisão e Monitorização

 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

Page 9: Supervisão e Monitorização

 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

Page 10: Supervisão e Monitorização

 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?

Page 11: Supervisão e Monitorização

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;

Page 12: Supervisão e Monitorização

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:

Page 13: Supervisão e Monitorização

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:

Page 14: Supervisão e Monitorização

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

Page 15: Supervisão e Monitorização

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

Page 16: Supervisão e Monitorização

 É O Standard

 Cross-platform

 Flexível e extensível

 Documentação + Comunidade

 Não incorpora gestão de inventário

Vantagens e Desvantagens

Page 17: Supervisão e Monitorização

Alternativas

Page 18: Supervisão e Monitorização

 Como esteve toda a infraestrutura no passado?

 Como é expectável que esteja no futuro?

 Cross-platform

 SNMP?

Objectivos – Parte II

Page 19: Supervisão e Monitorização

 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?

Page 20: Supervisão e Monitorização

 Frontend para RRDtool desenvolvido por Ian Berry

 Desenvolvido em PHP + MySQL

 GPL

 Baseado em sistema de templates

 Poller central efectua a recolha

Page 21: Supervisão e Monitorização

Arquitectura

Page 22: Supervisão e Monitorização

Cacti Screenshots

Page 23: Supervisão e Monitorização

Cacti Screenshots (ii)

Page 24: Supervisão e Monitorização

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?

Page 25: Supervisão e Monitorização

 Flexível e extensível

 Cross-platform

 Comunidade

 Excessiva complexidade nalgumas opções

 Curva de aprendizagem

Vantagens e Desvantagens

Page 26: Supervisão e Monitorização

Alternativas

Page 27: Supervisão e Monitorização

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

Page 28: Supervisão e Monitorização

?