Supervisão e Monitorização

Post on 01-Nov-2014

3.202 views 0 download

Tags:

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

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

?