Minicurso Monitoramento de redes
III Workshop de Tecnologia de Redes do POP-BAPonto de Presença da RNP na Bahia
Italo Valcy <[email protected]>
27 e 28 de setembro de 2012
2 / 80
Licença de uso e atribuição
Todo o material aqui disponível pode, posteriormente, ser utilizado sobre os termos da:
Creative Commons License: Atribuição - Uso não comercial - Permanência da Licença
http://creativecommons.org/licenses/by-nc-sa/3.0/
3 / 80
Motivação As redes não são imunes a falhas Aumento da expectativa dos usuários Administradores de rede necessitam de
ferramentas para exibir o status e histórico da rede◦ Apagar incêndio
Planejamento (gestão de capacidade) Detectar anormalidades Exibir resultados de mudanças
Como identificar a causa e localização de eventuais problemas de desempenho?
4 / 80
Estratégia
A estratégia para detecção de problemas ou funcionamento anormal da rede pode ser: Uso de Ferramentas de Diagnóstico para
localizar os problemas◦ Ferramentas de monitoramento ativo (ex. latência,
largura de banda disponível)◦ Ferramentas de monitoramento passivo (ex. contadores
de erros) Monitoramento Regular para identificar o
funcionamento normal (baseline) e gerar alertas quando cair as expectativas.◦ Visualização de dados e alarmes
5 / 80
Métricas de interesse Atraso de ida e volta (RTT – Round Trip Time) Perdas de ida e volta Utilização Atraso em um sentido (One way delay) Variação do atraso em um sentido (jitter) Perdas em um sentido Reordenação de Pacotes Largura de banda alcançável (TCP, UDP) MOS (Mean Opinion Score) Fluxos (volume de pacotes, bytes, tipo de
protocolo)Fonte: Monitoramento de Redes, Suruagy, WTR 2011
6 / 80
Ferramentas Ping:◦ Atraso de ida e volta
(RTT – Round Trip Time)◦ Perdas de ida e volta
SNMP◦ Utilização
Iperf◦ Largura de banda
alcançável (TCP, UDP)
Fonte: Monitoramento de Redes, Suruagy, WTR 2011
OWAMP:◦ Atraso em um sentido
(One way delay)◦ Variação de atraso em
um sentido (jitter)◦ Perdas em um sentido◦ Reordenação de pacotes
Netflow/Sflow◦ Fluxos (volume de
pacotes, bytes, tipo de protocolo)
7 / 80
Agenda
Monitoramento com Cacti◦ SNMP◦ RRDTool◦ Introdução ao Cacti◦ Instalação e Configuração do Cacti
Zabbix Fluxos de rede com Nfsen/Nfdump
8 / 80
Monitoramento com Cacti Ambiente utilizado:◦ SNMP◦ RRD◦ LAMP (Linux, Apache, MySQL e PHP)
9 / 80
SNMP Simple Network Management Protocol (RFC
1157)◦ Padrão de facto para monitoramento de redes
Pode-se monitorar CPUs, uso de memória, uso de disco, SO, etc.
Suportado por uma série de equipamentos: APs, Routers, Switches (gerenciáveis), Servidores, etc.
Deve ser bem configurado
10 / 80
SNMP O modelo de gerenciamento de redes usado
pelo SNMP inclui:◦ Estação de Gerenciamento (Manager)◦ Agente de Gerenciamento◦ MIB: Management Information Base: Base de
Informações Gerenciais◦ Protocolo de Gerenciamento de Redes
11 / 80
SNMP MIBs + OIDs + Agentes + SNMP + Gerente(s)
Agente
Informações degerenciamento
acesso
Dispositivos gerenciadosEstação Gerente
Aplicações degerenciamento Protocolo
SNMP
Agente
Informações degerenciamento
acesso
MIB
MIB
12 / 80
MIB Para gerenciar recursos na rede, cada
recurso é representado como um objeto (OID)◦ A coleção de objetos é conhecida como MIB -
Management Information Base MIBs padrões (RFC 1213) MIBs específicas de vendors◦ http://www.oidview.com/mibs/detail.html
13 / 80
MIB Exemplos:◦ AtPhysAddress (1.3.6.1.2.1.3.1.1.2)◦ IfInOctets (1.3.6.1.2.1.2.2.1.10)◦ IfInDiscards (1.3.6.1.2.1.2.2.1.13)◦ …
Como descobrir um OID desejado? MIB Browser (http://ireasoning.com/mibbrowser.shtml)
14 / 80
Protocolo SNMP Três funcionalidades chaves:◦ Get: Permite ao gerente (estação) recuperar
valores de objetos dos agentes◦ Set: permite ao gerente configurar valores de
objetos nos agentes◦ Notify: Permite que agentes notifiquem o gerente
a ocorrência de eventos significativos. (traps)
15 / 80
Protocolo SNMP
16 / 80
Versões SNMP SNMPv1◦ Centralizado (pouca escalabilidade)◦ Não permite transferência de porções maiores de dados
SNMPv2◦ Permite monitoramento descentralizado◦ Permite transferência de maiores porções de dados◦ Maior deficiência é a falta de segurança efetiva
SNMPv3◦ autenticação◦ autorização de usuários para monitorar e ler informações
da rede◦ privacidade
17 / 80
SNMP Como efetuar consultas manualmente:
snmpwalk -v 2c -c public 10.0.0.1 1.3.6.1.2.1.3.1.1.2
prompt$ snmpwalk v2c c community 192.168.0.1 1.3.6.1.2.1.3.1.1.2RFC1213MIB::atPhysAddress.2.1.10.X.X.X = HexSTRING: 00 1B 21 19 52 38 RFC1213MIB::atPhysAddress.2.1.10.X.X.X = HexSTRING: 00 04 AC C5 44 6C RFC1213MIB::atPhysAddress.2.1.10.X.X.X = HexSTRING: 00 16 3E DF 10 23 RFC1213MIB::atPhysAddress.2.1.10.X.X.X = HexSTRING: 00 22 64 F5 1D 28 RFC1213MIB::atPhysAddress.2.1.10.X.X.X = HexSTRING: 1C AF F7 E9 5B BF RFC1213MIB::atPhysAddress.2.1.10.X.X.X = HexSTRING: 00 1E C9 FF 1F 1B RFC1213MIB::atPhysAddress.2.1.10.X.X.X = HexSTRING: 00 04 96 1E 56 04 RFC1213MIB::atPhysAddress.1000036.200.128.X.X = HexSTRING: 00 1D 70 E3 FF B9 RFC1213MIB::atPhysAddress.1000036.200.128.X.X = HexSTRING: 00 1D 70 E3 FF B9 RFC1213MIB::atPhysAddress.1000036.200.128.X.X = HexSTRING: 00 1D 70 E3 FF B9 RFC1213MIB::atPhysAddress.1000036.200.128.X.X = HexSTRING: 00 1D 70 E3 FF B9 RFC1213MIB::atPhysAddress.1000036.200.128.X.X = HexSTRING: 00 1D 70 E3 FF B9 ...
18 / 80
SNMP Como efetuar consultas manualmente:
snmpget -v 2c -c public 10.0.0.1 IF-MIB::ifHCInOctets.1004
prompt$ snmpget v2c c community 192.168.0.1 IFMIB::ifHCInOctets.1004IFMIB::ifHCInOctets.1004 = Counter64: 12584346213790
prompt$ snmpget v2c c community 192.168.0.1 IFMIB::ifHCOutOctets.1004IFMIB::ifHCOutOctets.1004 = Counter64: 14452315751348
19 / 80
RRD Round Robin Database para armazenar séries de
dados temporais, principalmente sobre redes de computadores
Armazenamento com tamanho fixo Útil para provimento de tendências
históricas, com interface simples GPL, ferramentas de manipulação, CGI, API◦ rrdtool create|update|graph|fetch|dump [options]
20 / 80
RRDCreate :: Definindo entradas (Data Sources)
DS:speed:COUNTER:600:U:U DS:fuel:GAUGE:600:U:U◦ DS = Data Source◦ speed, fuel = nome da variável◦ COUNTER, GAUGE = tipo da variável◦ 600 = heart beat – UNKNOWN é retornado se não
houver entrada de dados naquele período de tempo◦ U:U = limites mínimo e máximo das variáveis (U
significa “Unknow”, onde qualquer valor é permitido)
21 / 80
RRDCreate :: Definindo arquivamento (Data Archives)
RRA:CF:xff:steps:rows◦ RRA = Roudin Robin Archives◦ CF = Função de consolidação (AVERAGE, MIN,
MAX, LAST)◦ xff = dos dados originais, qual a porcentagem
pode ser considerada unknown? (entre 0 e 1)◦ steps: quantos pontos dos dados originais serão
usados para os consolidados?◦ rows: define quantas gerações de dados
consolidados serão armazenados no RRA
22 / 80
RRDCreate rrdtool create ./myrouter.rrd --step 300 \
DS:in:COUNTER:600:0:1000000000 \DS:out:COUNTER:600:0:1000000000 \RRA:AVERAGE:0.5:1:600 \RRA:AVERAGE:0.5:6:700 \RRA:AVERAGE:0.5:24:775 \RRA:AVERAGE:0.5:288:797 \RRA:MAX:0.5:1:600 \RRA:MAX:0.5:6:700 \RRA:MAX:0.5:24:775 \RRA:MAX:0.5:288:797 \RRA:LAST:0.5:1:600 \RRA:LAST:0.5:6:700 \RRA:LAST:0.5:24:775 \RRA:LAST:0.5:288:797 \
23 / 80
RRDUpdate Para inserir dados no RRD:
#!/bin/bash
IN=$(snmpget v2c c community 10.0.0.1 \IFMIB::ifHCInOctets.1004 | awk '{print $NF}')
OUT=$(snmpget v2c c community 10.0.0.1 \IFMIB::ifHCOutOctets.1004 | awk '{print $NF}')
TIMESTAMP=$(date +%s)
/usr/bin/rrdtool update ./myrouter.rrd $TIMESTAMP:$IN:$OUT
24 / 80
RRDGraphGerar gráfico com média de 5minutosrrdtool graph - --imgformat=PNG \--start='-1d' \--title='Daily - 5 min avg' \--vertical-label='bits per second' \--lower-limit=0 \--width=500 --height=120 \DEF:a=./myrouter.rrd:in:AVERAGE:step=300 \DEF:b=./myrouter.rrd:out:AVERAGE:step=300 \CDEF:cdefa=a,8,* \CDEF:cdefb=b,8,* \AREA:cdefa#00CF00FF:"Inbound" \GPRINT:cdefa:LAST:" Current\:%6.2lf %s" \GPRINT:cdefa:AVERAGE:"Average\:%6.2lf %s" \GPRINT:cdefa:MAX:"Maximum\:%6.2lf %s\n" \LINE1:cdefb#002A97FF:"Outbound" \GPRINT:cdefb:LAST:"Current\:%6.2lf %s" \GPRINT:cdefb:AVERAGE:"Average\:%6.2lf %s" \GPRINT:cdefb:MAX:"Maximum\:%6.2lf %s"
Tipos comuns: - Daily – 5 min avg - Weekly – 30 min avg - Monthly – 2 hour avg - Yearly – 1 day avg
25 / 80
Cacti MRTG ==> RRDTool Cacti: uma interface de administração e
infraestrutura para o RRDTool Pode obter informações via SNMP ou scripts Criado por Ian Berry, desenvolvido em PHP
e MySQL, distribuído sob GPL. Mais informações:◦ http://www.cacti.net
26 / 80
Arquitetura
Data Retrieval: poller + (SNMP || scripts) Data Storage: RRDTool Data Presentation: RRDTool + web server
27 / 80
Instalação do Cacti Instalação / Configuração bastante simples Leitura recomendada:◦ http://www.cacti.net/downloads/docs/html/installati
on.html◦ Gráficos elegantes com o cacti (Linux Magazine)◦ http://www.debianadmin.com/cacti-bandwith-
monitoring-tool-in-debian-etch.html No Debian GNU/Linux◦ aptitude install cacti◦ /usr/share/doc/cacti/README.Debian
28 / 80
Adicionar recursos ao monitoramento
Passos necessários (via SNMP):◦ Configurar o SNMPD no servidor remoto◦ Adicionar servidor como Device◦ Criar gráficos para o servidor em questão◦ Adicionar os gráficos à Graph Tree◦ Configurar permissões de visualização
29 / 80
Criando um Device Console > Devices > Add new device◦ Description◦ Hostname◦ Host template◦ SNMP Version◦ SNMP Community◦ Outros..
30 / 80
Criando um Device
31 / 80
Adicionando gráficos ao Device
Console > New Graphs > SEU_DEVICE◦ Marcar gráficos disponíveis ao host template
escolhido.
Exemplo (ucd/net SNMP host template)◦ CPU Usage◦ Load Avarage◦ Memory Usage◦ ...
32 / 80
Adicionando gráficos ao Device
33 / 80
Plugins para o Cacti É possível estender as funcionalidades
básicas com plugins:◦ Weathermap◦ Syslog◦ Thold◦ Discovery
Mais:◦ http://cactiusers.org/downloads/
34 / 80
Exemplo: PoP-BA
35 / 80
Exemplo: Panorama ReMeSSA
36 / 80
Exemplo: Panorama RNP
37 / 80
Cacti Prática 01: Configurar o Cacti para
monitorar a própria máquina
38 / 80
Zabbix Programa de código aberto, criado em 1998 por
Alexei Vladishev Backend em C++ e Frontend em PHP Suporta diversos SGBD (PostgreSQL, MySQL,
SQLite, Oracle ou IBM DB2) Agentes (AIX, HP-UX, FreeBSD, GNU/Linux,
Windows) Monitoramento sem agentes Suporta IPv6 e Ipv4 Escalável com utilização de proxies ou
monitoramento distribuído
39 / 80
Como funciona
Agente Agente Ativo
Alerta Interface
E-mailSMS
ComandoScript
ZABBIXMONITORING SYSTEM
memory-usage
36.6
check-mysql
1
snmpget
XYZ
40 / 80
Servidor Zabbix
Template
Item Trigger Ação
Host
41 / 80
Servidor Zabbix
Configuração do ativo a ser monitorado Contém os seguintes parâmetros◦ Nome do host◦ Endereço IP (ou nome DNS)◦ Template associado◦ Grupo associado◦ Outros...
Host
42 / 80
Servidor ZabbixItem
É o objeto que será monitorado para determinado host◦ Ex: monitorar interface se0/1 do router1
Contém os seguintes parâmetros◦ Tipo (Mon Simples, Agente Zabbix, SNMP, Mon Externo,
etc.)◦ Chave de monitoramento◦ Frequência de monitoramento◦ Tipo de retorno (string, integer ou float)◦ Método de armazenamento (Normal, Delta, Delta/s)◦ Outros...
43 / 80
Servidor Zabbix
Chave de monitoramento é a solicitação da informação ao agente (ou direta)
Formato:
Permite: 0-9a-zA-Z_-. Exemplos:◦ cbgpPeerState.sh[192.168.8.254] (Mon Externo)◦ IfOutDiscards.3 (SNMP)◦ vfs.fs.size[/var,pfree] (Agente Zabbix)
Item
44 / 80
Servidor Zabbix
São expressões lógicas que “avaliam” os dados obtidos dos itens e representam o estado atual do sistema◦ Threshold aceitável para item coletado◦ Disparo de gatilhos (ações)◦ Pode ser OK, PROBLEM, UNKNOWN
Expressões lógicas:◦ valor_retorno.último = 0◦ valor_retorno.média(120s) > 5
Retorno verdadeiro = Problema Sem retorno = Unknown
Trigger
45 / 80
Servidor Zabbix
Modelo de expressão:◦ {<host>:<key>.<function>(<parameter>)}<op><cons>
Alguns exemplos:◦ avg(time)◦ last(0), last(#num)◦ sum(time), sum(#num)◦ max(time)
Exemplo:◦ {vmserver1:vfs.fs.size[/var,pfree].last(0)}<10
Trigger
46 / 80
Servidor Zabbix
É possível definir dependência entre as triggers
Caso a trigger que possui dependentes for disparada, a dependente não será monitorada até retorno da primeira
Trigger
Trigger Trigger
ZABBIXMONITORING SYSTEM
dependênciaXStop
47 / 80
Servidor Zabbix
Ações (ou eventos) são gerados por 3 origens:◦ Triggers: caso a trigger mude seu status◦ Descoberta: na detecção de hosts ou serviços◦ Eventos gerados pelos agente
Ação
48 / 80
Servidor Zabbix
Principais ações:◦ Envio de e-mail para grupo responsável◦ Envio de SMS◦ Chat no Jabber◦ Intervenção no ativo (ex: restart no processo X)
As ações são baseadas no horário e dia da semana
Ação
49 / 80
Servidor Zabbix
Configuração padrão de itens, triggers, ações, gráficos, etc.
Configuração automática ao associar o host a um template
Agilidade na adição de hosts◦ Facilidade de alteração/correção
Template
SEMPRE usetemplates
50 / 80
Servidor ZabbixTemplate
51 / 80
Diversidade no monitoramento
Qualquer objeto cujo valor possa ser obtido via console/scripts ou afins é possível monitorar no zabbix
No agente, é possível configurar qualquer checagem◦ UserParameter=key, command
Exemplos (via zabbix-agent:◦ UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc -l◦ UserParameter=net.ipv4_forward,cat /proc/sys/net/ipv4/ip_forward◦ UserParameter=verify.aide,/usr/local/bin/verify-aide.sh
52 / 80
Prática Prática 2: Acompanhar demonstração sobre
o zabbix do PoP-BA e da UFBA Prática 3: Configurar monitoramento na
máquina virtual
53 / 80
NfSen / NfDump
Fonte: Tracking Incidents with NfSen, Peter Haag (SWITCH-CERT)
54 / 80
NfSen / NfDump Algumas questões relacionadas ao
tratamento de anormalidades em uma rede:◦ O que causou este pico em seu gráfico de rede?◦ Quais hosts/subnets consumem a maioria de
nossa largura de banda?◦ Quais são os top talkers em sua rede?◦ Sobre aquele (D)DoS ocorrido, você poderia nos
passar maiores informações?◦ Quais são os principais destinos que acessamos?
55 / 80
Motivação Monitoramento tradicional usa estatísticas de tráfego dos links
(MRTG, RRD, etc.)
Algumas questões: Cenário muito complexo e gráficos simples Precisamos de mais detalhes
O monitoramento tradicional não é mais satisfatório!
56 / 80
Motivação Precisamos de mais informações em nível
de conexão:◦ Endereços IP◦ Portas (TCP/UDP)◦ Flags TCP◦ Contadores de Byte/Pacote◦ Número de interfaces◦ Número de Ases◦ ...
57 / 80
Netflow / SflowO que é Netflow Netflow é uma tecnologia de monitoramento de tráfego
desenvolvida pela Cisco Networks. Fluxos são unidirecionais e contém dados relacionados à conexão, como:◦ Endereços Ethernet de origem e destino
◦ Endereços IP de origem e destino
◦ Portas de origem e destino
◦ AS de origem e destino
◦ Protocolo (TCP, UDP, ICMP, etc.), flags TCP
◦ Interface lógica de entrada e saída
◦ Contadores de pacote e bytes
Funciona por amostragem Exemplo:2006-03-30 00:47:33.728 54.971 TCP 172.16.71.66:13599 -> 192.168.10.34:80 .A..SF 215 9890
Registros Netflow nunca contém qualquer dado do usuário
Outra tecnologia usada é o sFlow, especificado pelo
consorcio sflow.org
58 / 80
Netflow / Sflow Exemplo:
59 / 80
Netflow / Sflow
NfSen Frontend web Exibe os fluxos Framework para automatizar tarefas
NfDump Coleta e armazena os fluxos Processa os fluxos na linha de comando
60 / 80
Arquitetura do Nfdump
61 / 80
ExemplosRespondendo às nossas perguntas... Mostra o top 15 endereços IP consumindo a maioria
da banda
62 / 80
ExemplosRespondendo às nossas perguntas... Mostra o top 15 /24 com maior troca de tráfego
63 / 80
Nfdump
O nfdump pode ser extremamente útil para responder diversas questões◦ Pode-se filtrar pelos campos dos flows◦ Pode-se agregar o resultado◦ Qualquer filtro vai necessitar uma adaptação ao
perfil da sua rede Tudo depende de definir um bom filtro
64 / 80
Nfdump Nfdump é:◦ Robusto, flexível, fácil de usar e rápido, mas...
… Tratar incidentes de rede não é algo tão simples – além disso, todos nós gostamos de
imagens, não?
=> Nfsen
65 / 80
NfSen Funcionalidades do NfSen para análise de
incidentes de rede:◦ Uso do nfdump como ferramenta de backend◦ Imagens◦ Partimos da visão geral, para detalhes de um
fluxo◦ Gráfico da situação atual da rede◦ Gráficos de perfis específicos da rede◦ Analisar uma janela de tempo específica
66 / 80
NfSen
67 / 80
68 / 80
69 / 80
Análise de incidentes de rede com Nfsen
70 / 80
Análise de incidentes de rede com Nfsen
71 / 80
72 / 80
Análise de incidentes de rede com Nfsen
Nem todos os incidentes são óbvios de detectar◦ Eventos visualmente perceptíveis
◦ Alto tráfego: muitos pacotes, muitos bytes E sobre os incidentes que ficam ocultos no tráfego
geral?
Sem pico óbvio
73 / 80
Perfis da Rede É uma visão específica dos dados dos fluxos, com
filtros aplicados Aplicados aos gráficos assim como para a visão
detalhada Pode ser criado a partir de dados antigos Pode ser criado para dados de entrada Pode contar um ou mais canais
74 / 80
Perfis da Rede Mesmos dados – visão diferente
Evento óbvio
75 / 80
Perfis da Rede Análise do incidente – uma olhada de perto
76 / 80
Perfis da RedeAnálise do incidente – uma olhada de perto Não parece de fato com um SYN
FLOOD◦ Vejamos os fluxos
77 / 80
Perfis da RedeAnálise do incidente – uma olhada de perto Como o host foi infectado?◦ Checar mais fluxos
78 / 80
Nfsen / Nfdump Detectando outros tráfegos suspeitos:◦ Alertas◦ Extensões
Alertas◦ Monitoram os fluxos periodicamente◦ Muitas condições◦ Automaticamente dispara uma alarme, quando
uma condição é satisfeita◦ Envia uma notificação, ou executa uma ação
79 / 80
Referências Barbosa, M. (2010). Gráficos elegantes com o cacti. Linux Magazine.
Berry, I., Roman, T., Adams, L., Pasnak, J., Conner, J., and Scheck, R. (2010). The Cacti Manual. The Cacti Group. Acessado em 08 de setembro de 2012.
Cacti (2010). Cacti: the complete rddtool-based graphing solution. Disponível em http://www.cacti.net. Último acesso em 08 de setembro de 2012.
Case, J., Fedor, M., Schoffstall, M., and Davin, J. (1990). Simple Network Management Protocol (SNMP). RFC 1157.
Menezes, E. and Leite Silva, P. (1998). Gerenciamento de Redes: Estudos de Protocolos. Workshop de Administração e Integração de Sistemas, UFPE.
Zabbix (2012). Zabbix documentation for version 1.8. Disponpivel em http://www.zabbix.com/documentation/1.8/. Último acesso em 08/Setembro/2012.
Peter Haag (2008). Tracking Incidents with NfSen. SWITCH-CERT. Disponível em http://www.switch.ch/all/cert/downloads/presentations/index.html. Último acesso 08/Setembro/2012
80 / 80
Dúvidas?