Usecases: InfluxDB vs. Prometheus [fechado]

após a página web Prometheus , a principal diferença entre o Prometheus e o InfluxDB é a usecase: enquanto que o Prometheus armazena a série cronológica, apenas o InfluxDB é mais bem orientado para o armazenamento de eventos individuais. Uma vez que houve algum trabalho importante feito no motor de armazenamento do InfluxDB eu me pergunto se isso ainda é verdade.

quero configurar uma base de dados de séries cronológicas e, para além do modelo push / push (e provavelmente uma diferença no desempenho), não consigo ver nada de especial que se separe ambos os projectos. Alguém pode explicar a diferença nos casos de uso?

Author: SpaceMonkey, 2015-10-26

4 answers

Aqui é o CEO e desenvolvedor da InfluxDB. A próxima versão do InfluxDB (0.9.5) terá o nosso novo motor de armazenamento. Com esse motor seremos capazes de armazenar eficientemente dados de um único evento ou séries regularmente amostradas. ou seja, séries cronológicas irregulares e regulares.

O InfluxDB suporta os tipos de dados int64, float64, bool e string usando sistemas de compressão diferentes para cada um. Prometheus só suporta float64.

Para a compressão, a versão 0.9.5 terá compressão competitiva com o Prometheus. Para alguns casos, veremos melhores resultados, já que variamos a compressão de datas com base no que vemos. Na melhor das hipóteses, trata-se de uma série regular amostrada a intervalos exactos. Naqueles por padrão, podemos comprimir 1K pontos de tempo como um tempo de partida de 8 bytes, um delta (zig-zag codificado) e uma contagem (também zig-zag codificado).

Dependendo da forma dos dados que vimos

MMMV baseado nos seus horários, os dados tipo e forma dos dados. Flutuadores aleatórios com esporas de escala de nanossegundos com grandes deltas variáveis seriam os piores, por exemplo.

A precisão variável nos intervalos de tempo é outra característica do InfluxDB. Pode representar segundos, milissegundos, microssegundos ou nanossegundos. Prometheus é fixado em milisegundos.

Outra diferença é que as escritas para o InfluxDB são duráveis depois que uma resposta de sucesso é enviada para o cliente. Prometheus buffers escreve em memória e por padrão os descarrega a cada 5 minutos, o que abre uma janela de potencial perda de dados.

A nossa esperança é que assim que 0,9,5 do InfluxDB for libertado, será uma boa escolha para os utilizadores do Prometheus usarem como armazenamento de metrics a longo prazo (em conjunto com o Prometheus). Tenho a certeza de que o suporte já está em Prometheus, mas até o lançamento 0.9.5 cair pode ser um pouco rochoso. É óbvio que vamos ter de trabalhar juntos e fazer um monte de testes, mas é isso que espero.

Para single métricas do servidor ingerem, eu esperaria Prometheus para ter melhor desempenho (embora nós não fizemos nenhum teste aqui e não temos números) por causa de seu modelo de dados mais restrito e porque eles não adicionam escritas ao disco antes de escrever o índice.

A linguagem de consulta entre os dois são muito diferentes. Não tenho a certeza do que eles apoiam que ainda não temos ou vice-versa, por isso tens de investigar os documentos em ambos para ver se há algo que se possa fazer que precises. A mais longo prazo o objetivo é que a funcionalidade de consulta do InfluxDB seja um super conjunto de soluções de grafite, RRD, Prometheus e outras séries temporais. Eu digo superconjunto porque nós queremos cobrir esses, além de funções mais analíticas mais tarde. É óbvio que vamos levar tempo a chegar lá.

Finalmente, um objectivo a longo prazo para o InfluxDB é apoiar a elevada disponibilidade e escalabilidade horizontal através da agregação. A implementação de clustering atual ainda não está completa e está apenas em alfa. No entanto, trabalhando nele e é um objetivo de projeto principal para o projeto. O nosso design de agrupamento é que os dados são, eventualmente, consistentes.

Pelo que sei, a abordagem do Prometheus é usar letras duplas para o HA (por isso não há garantia de consistência) e usar a federação para escalabilidade horizontal. Não tenho a certeza de como trabalhar em servidores federados funcionaria.

Dentro de um conjunto de InfluxDB, você pode pesquisar através dos limites do servidor sem copiar todos os dados sobre a rede. Isso é ... porque cada consulta é decomposta em uma espécie de trabalho de MapReduce que é executado na mosca.

Provavelmente há mais, mas é nisso que me lembro neste momento.
 71
Author: Paul Dix, 2015-10-27 23:55:20
Temos a mensagem de marketing das duas empresas nas outras respostas. Agora vamos ignorá-lo e voltar ao triste mundo real das séries de dados temporais.

Alguma História

O InfluxDB e o prometheus foram feitos para substituir ferramentas antigas da época passada (RRDtool, grafite).

O InfluxDB é uma base de dados de séries cronológicas. Prometheus é uma espécie de coleção de métricas e ferramenta de alerta, com um motor de armazenamento escrito apenas para isso. (Eu realmente não tenho certeza se você poderia [ou deveria] reutilizar o motor de armazenamento para outra coisa)

Limitações

Infelizmente, escrever uma base de dados é uma tarefa muito complexa. A única maneira que ambas as ferramentas conseguem enviar algo é largando todas as características duras relacionadas à alta disponibilidade e agrupamento.

Para ser franco, é uma única aplicação a correr apenas um nó.

Prometheus não tem nenhum objetivo de suportar agrupamento e replicação qualquer. A forma oficial de apoiar failover é para " executar 2 nós e enviar dados para ambos ". Ai. (Note que é seriamente a única maneira possível, é escrito inúmeras vezes na documentação oficial).

O InfluxDB {[15] } fala de agrupamento há anos... até que foi oficialmente abandonado em Março. O agrupamento já não está na mesa para o InfluxDB. Esquece. Quando for feito (supondo que alguma vez seja), só estará disponível na empresa Edicao.

Https://influxdata.com/blog/update-on-influxdb-clustering-high-availability-and-monetization/

Dentro dos próximos anos, esperamos ter uma base de dados de séries cronológicas bem projetada que está lidando com todos os problemas difíceis relacionados às bases de dados: replicação, falha, segurança de dados, escalabilidade, backup... Neste momento, não há nenhuma bala de prata.

O que fazer

Avaliar o volume de dados a ser devir.

100 métricas * 100 fontes * 1 segundo = > 10000 pontos de dados por segundo = > 864 Mega-pontos de dados por dia.

O bom das bases de dados da times series é que usam um formato compacto, comprimem bem, agregam pontos de dados e limpam dados antigos. (Além disso, eles vêm com características relevantes para séries de dados temporais.) Supondo que um ponto de dados é tratado como 4 bytes, são apenas alguns Gigabytes por dia. Felizmente para nós, existem sistemas com 10 núcleos e 10 unidades de TB prontamente disponíveis. Isso pode funcionar num único nó.

A alternativa é usar uma base de dados NoSQL clássica (Cassandra, ElasticSearch ou Riak) e depois criar os bits em falta na aplicação. Essas bases de dados podem não ser otimizadas para esse tipo de armazenamento (ou são? as bases de dados modernas são tão complexas e otimizadas,não podem ter certeza a menos que comparadas).

Deve avaliar a capacidade requerida pela sua aplicação. Escrever uma prova de conceito com estas várias bases de dados e medidas coisas.

Ver se está dentro das limitações do InfluxDB. Se sim, é provavelmente a melhor aposta. Se não, você terá que fazer a sua própria solução em cima de outra coisa.

 24
Author: user5994461, 2017-04-29 22:13:02

O InfluxDB simplesmente não consegue suportar a carga de produção (métricas) de 1000 servidores. Tem alguns problemas reais com a ingestão de dados e acaba paralisado/enforcado e inutilizável. Tentamos usá-lo por um tempo, mas uma vez que a quantidade de dados atingiu algum nível crítico, ele não poderia mais ser usado. Nenhum Upgrade de memória ou cpu ajudou. Portanto, a nossa experiência é definitivamente evitá-lo, não é um produto maduro e tem sérios problemas de design arquitetônico. E nem sequer estou a falar de uma mudança repentina para o comercial. Influxo.

A seguir, investigámos o Prometheus e, embora fosse necessário reescrever as consultas, ele ingere 4 vezes mais métricas sem quaisquer problemas em comparação com o que tentámos alimentar para o influxo. E toda essa carga é tratada por um único servidor Prometheus, é rápida, confiável e confiável. Esta é a nossa experiência de gerir uma enorme loja de internet internacional sob carga muito pesada.
 12
Author: user3091890, 2016-11-23 14:54:33

A actual implementação Prometheus da IIRC foi concebida em torno de todas as ligações de dados num único servidor. Se você tem quantidades gigantescas de dados, pode não caber tudo em Prometheus.

 5
Author: Travis Bear, 2015-10-26 16:09:50