Graphite é um sistema gráfico em tempo real altamente escalonável e uma ferramenta de monitoramento de nível empresarial. Usado para coletar informações do site em tempo real e realizar estatísticas, e pode coletar várias informações de status operacional do serviço do site.
Quem deve usar Grafite?
Qualquer pessoa que queira acompanhar qualquer valor numérico no longo prazo. Se você tiver um número que pode mudar com o tempo e quiser representar graficamente esse valor ao longo do tempo, o Grafite pode atender às suas necessidades.
Especificamente, o Graphite foi projetado para lidar com dados numéricos de séries temporais. Por exemplo, o Graphite é ótimo para representar graficamente os preços das ações porque são números que mudam com o tempo. Quer sejam alguns pontos de dados ou dezenas de métricas de desempenho de milhares de servidores, o Graphite é para você. Como bônus, você não precisa saber os nomes dessas coisas com antecedência (quem quer manter uma configuração tão grande?); basta enviar um nome de métrica, um carimbo de data/hora e um valor, e o Graphite cuida do resto.
Quão escalável é o grafite?
Do ponto de vista da CPU, o Graphite é dimensionado horizontalmente no front-end e no back-end, o que significa que você pode simplesmente adicionar mais máquinas para obter mais rendimento. Também é tolerante a falhas, ou seja, perder uma máquina back-end causará perda mínima de dados (independentemente do que a máquina tenha armazenado em cache na memória) e não interromperá o sistema se você tiver capacidade restante suficiente para lidar com a carga.
Do ponto de vista de E/S, sob carga, o Graphite executará muitas pequenas operações de E/S em muitos arquivos diferentes muito rapidamente. Isso ocorre porque cada métrica diferente enviada ao Graphite é armazenada em seu próprio arquivo de banco de dados, semelhante ao funcionamento de muitas ferramentas construídas em cima do RRD (drraw, Cacti, Centreon, etc.). Na verdade, o Graphite inicialmente usou RRD para armazenamento até que surgissem limitações fundamentais que exigiam um novo mecanismo de armazenamento.
Alta capacidade (milhares de métricas diferentes atualizadas por minuto) quase requer uma boa matriz RAID e/ou SSD. Se o disco não conseguir acompanhar o grande número de pequenas gravações acontecendo (apenas alguns bytes por ponto de dados, mas a maioria dos discos padrão não consegue lidar com mais do que alguns milhares de operações de E/S por segundo, mesmo que sejam pequeno), os dados de entrada do backend do Graphite serão armazenados em cache. Quando isso acontece, o mecanismo de banco de dados do Graphite permite que o Carbon grave vários pontos de dados ao mesmo tempo, aumentando assim o rendimento geral às custas de armazenar em cache o excesso de dados na memória até que possam ser gravados.
O Graphite também oferece suporte a back-ends de armazenamento alternativos que podem alterar significativamente esses recursos.
Quão em tempo real é o gráfico?
Em tempo muito real. Mesmo sob carga pesada, quando o número de métricas recebidas por intervalo de tempo é muito maior que a velocidade com que o sistema de armazenamento pode executar operações de E/S e um grande número de pontos de dados são armazenados em cache no pipeline de armazenamento (consulte a explicação da pergunta anterior ), o Graphite ainda pode desenhar gráficos em tempo real. O truque é que quando o webapp Graphite recebe uma solicitação para desenhar o gráfico, ele recupera os dados do disco e também do cache de pré-armazenamento (o cache pode ser distribuído se você tiver vários servidores back-end) e combina as duas fontes de dados Combinado para criar um gráfico em tempo real.
Quem já usa Grafite?
O Graphite foi desenvolvido internamente pela Orbitz, onde é usado para visualizar uma variedade de dados operacionais importantes, incluindo métricas de aplicativos, métricas de banco de dados, vendas e muito mais. No momento em que este artigo foi escrito, o sistema de produção da Orbitz pode processar aproximadamente 160.000 métricas diferentes por minuto, rodando em dois servidores Sun niagra-2 em uma SAN de alta velocidade.
Em que está escrito o grafite?
O webapp Graphite é construído na estrutura web Django e usa o kit de ferramentas ExtJS javascript GUI. A renderização gráfica é feita usando a biblioteca gráfica Cairo. O back-end e o banco de dados são escritos em Python puro.
Quem escreverá e manterá o Graphite?
O grafite foi originalmente desenvolvido por Chris Davis da Orbitz. A Orbitz faz parte da comunidade de código aberto há muito tempo e lançou vários outros produtos desenvolvidos internamente.
O Graphite é atualmente desenvolvido por uma equipe de voluntários da organização Graphite-Project GitHub.