Professional Documents
Culture Documents
• MRTG - 23/Jun/1995
• RRD - 16/Jul/1999
• Cacti - 02/Set/2001
Ferramentas Atuais (cacti)
Ferramentas Atuais (cacti)
Ferramentas Atuais (cacti)
Prós Contras
Plugins Resolução
Cacti x Graphite
História Graphite
• Iniciou como uma aplicação/API para renderizar gráficos baseados
em dados armazenados em arquivos RRD (graphite-web)
• Devido a um bug do RRD, criou um formato próprio para
armazenar os dados (whisper)
• Para escalar, foi necessário criar uma camada de cache e uma
interface de rede para permitir que fosse fácil enviar e armazenar
métricas (carbon)
• Open source desde 2008
• Versão 1.0 lançada semana passada (30/11)
Arquitetura Graphite
Arquitetura Graphite
• O Graphite é composto por 3 componentes
• carbon - Serviço de alta performance que recebe dados das
series temporais
• whisper - uma biblioteca simples para armazenamento
persistente das series temporais
• graphite-web - Interface de usuário e API para renderizar
gráficos e dashboards
Arquitetura Graphite
• As métricas são enviadas através do serviço carbon, que salva
os dados em uma base de dados whisper (para armazenamento
de longo prazo).
• Os usuários interagem com o graphite-web ou com a API, que,
por sua vez, consulta o carbon e as bases whisper para obter os
dados necessários para construir os gráficos solicitados.
• A plataforma web graphite oferece uma variedade de estilos e
formatos, incluindo imagens, CSV, XML e JSON, facilitando a
inclusão de gráficos customizados em outras páginas ou
dashboards.
Arquitetura Graphite
O que o Graphite faz?
• Armazena dados de séries temporais (métricas)
• Renderiza gráficos com esses dados sob demanda
• carbon.agents.graphite0.creates
• infra.openx.SPO-VD.rack0-pdu-a.snmp.temperature
• sflow.bgp.source.CDN-NETFLIX.destination-as.263444
• collectd.openx.SPO1.core1.if_octets.WAN_ATM_V4-SPO1_CORE1.tx
• collectd.openx.SPO2.core1.if_octets.WAN_ATM_V4-SPO2_CORE1.tx
Armazenamento
• Métrica:
• collectd.openx.SPO-L3.x480-core1.snmp.if_octets-
pt25.WAN_ATM_V4-SPO1_CORE1.tx
• Arquivo whisper:
• /var/lib/graphite/whisper/collectd/openx/SPO-L3/x480-
core1/snmp/if_octets-pt25/WAN_ATM_V4-SPO1_CORE1/
tx.wsp
Métricas (retenção)
/etc/carbon/storage-schemas.conf:
[default_1min_for_1day]
pattern = .*
retentions = 60s:1d
Retenção (exemplos)
[snmp_collectd_octets]
pattern = ^collectd\.openx\..*.snmp\.if_octets-*
retentions = 10s:9h,30s:3d,1m:21d,5m:90d,15m:1y,1h:5y
[snmp_collectd_packets_openx]
pattern = ^collectd\.openx\..*.snmp\.if_packets-*
retentions = 10s:3h,30s:1d,1m:5d,5m:90d,30m:1y,1h:5y
Tamanho arquivo whisper
• nc
• collectd
• Sflow-RT
• FastNetMon
• Desenvolvimento interno (é bem fácil)
nc
<Node "graphite">
Host "graphite.isp.com.br"
Port "2003"
Protocol "tcp"
Prefix "collectd."
StoreRates true
EscapeCharacter "."
</Node>
</Plugin>
Collectd (SNMP)
<Host "openx.pop.router0">
<Plugin snmp>
Address "1.2.3.4"
<Data "std_traffic">
Version 2
Type "if_octets"
Community "read"
Table true
Interval 10
Instance "IF-MIB::ifDescr"
Collect "std_traffic"
Values "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets"
</Host>
</Data>
</Plugin>
API
Consulta Interfaces
snmp.if_octets.eth0.tx eth0
snmp.if_octets.eth1.tx eth1
snmp.if_octets.ppp0.tx ppp0
snmp.if_octets.*.tx eth0,eth1,ppp0
snmp.if_octets.eth*.tx eth0,eth1
snmp.if_octets.{ppp0,eth0}.tx ppp0,eth0
Algumas Funções
Scale averageAbove
SumSeries averageOutsidePercentile
MovingAverage currentAbove
AsPercent highestCurrent
TimeShift holtWintersConfidenceBands
Alias nPercentile
AliasByNode sortByName
Render JSON
• https://graphite.isp.com.br/render?
format=json&from=-5min&until=&maxDataPoints=800&targ
et=alias(sumSeries(scale(collectd.snmp.if_octets-
pt*.WAN_IP-*.rx,8)),"WAN-IP-TOTAL")
• [{"target": "WAN-IP", "datapoints": [[3570213406.426056,
1476152100], [3512996469.2378483, 1476152110],
[3501481335.3938, 1476152120], …}]
Render PNG
• https://graphite.isp.com.br/render?
format=png&from=-5min&until=&maxDataPoints=800&targ
et=alias(sumSeries(scale(collectd.snmp.if_octets-
pt*.WAN_IP-*.rx,8)),"WAN-IP-TOTAL")
Dicas
★ snmp.srv1.if_octets.eth0.tx
Grafana
renato@openx.com.br
http://www.openx.com.br