Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Olá a todos. Abaixo está a transcrição da apresentação do Big Monitoring Meetup 4.

Prometheus – um sistema de monitoramento de diferentes sistemas e serviços, através do qual os administradores de sistemas podem coletar informações sobre os parâmetros atuais dos sistemas e configurar alertas para receber notificações sobre desvios no funcionamento dos sistemas.

A apresentação fará uma comparação Thanos e VictoriaMetrics — de projetos para armazenamento de métricas a longo prazo no Prometheus.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Por que no hosting comum a administração do PrestaShop é lenta, e no seu não é?

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Primeiro, falarei sobre o Prometheus. É um sistema de monitoramento que coleta métricas de alvos designados e as salva em um armazenamento local. O Prometheus consegue gravar métricas em armazenamento remoto, gerar alertas e regras de gravação.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Limitações do Prometheus:

  • Ele não possui uma visão global de consulta. Isso acontece quando você tem várias instâncias independentes do Prometheus. Elas coletam métricas. E você deseja fazer uma consulta sobre todas essas métricas coletadas de diferentes instâncias do Prometheus. O Prometheus não permite isso.
  • A performance do Prometheus é limitada a um único servidor. O Prometheus não pode escalar automaticamente para vários servidores. Você pode apenas dividir manualmente seus alvos entre várias instâncias do Prometheus.
  • O volume de métricas no Prometheus é limitado a um único servidor pela mesma razão pela qual ele não pode escalar automaticamente para vários servidores.
  • No Prometheus, não é tão fácil organizar a persistência dos dados.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Soluções para esses problemas/tarefas?

As soluções são as seguintes:

Todas essas soluções são para armazenamento remoto de dados coletados pelo Prometheus. Elas abordam o problema do armazenamento remoto da apresentação anterior de maneiras diferentes. Nesta apresentação, falarei apenas sobre as duas primeiras soluções: Thanos e VictoriaMetrics.

As informações sobre Thanos apareceram pela primeira vez em este link. Ela descreve a arquitetura Thanos e como funciona.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos pega os dados que o Prometheus salvou no disco local e os copia para o S3, para GCS ou para outro armazenamento de objetos.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Dessa forma, o Thanos proporciona uma visão global de consulta. Você pode consultar dados armazenados em armazenamento de objetos de várias instâncias do Prometheus.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos suporta PromQL e API de consulta do Prometheus..

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos utiliza o código do Prometheus para armazenamento de dados.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos é desenvolvido pelos mesmos desenvolvedores do Prometheus.

Sobre VictoriaMetrics. Aqui está link, onde falamos pela primeira vez sobre VictoriaMetrics.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O VictoriaMetrics recebe dados de vários Prometheus através da remote write API protocolo suportado pelo Prometheus.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics oferece uma visão global de consulta, pois várias instâncias do Prometheus podem gravar dados em uma única VictoriaMetrics. Assim, você pode fazer consultas sobre todos esses dados.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics também suporta, assim como o Thanos, PromQL e a API de consulta do Prometheus.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Ao contrário do Thanos, o código fonte da VictoriaMetrics foi escrito do zero e otimizado para velocidade e consumo de recursos.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics, ao contrário do Thanos, se escala tanto vertical quanto horizontalmente. Existe uma versão de nó único, que se escala verticalmente. Você pode começar com um processador e 1 GB de memória e crescer gradualmente até centenas de processadores e 1 TB de memória. A VictoriaMetrics consegue utilizar todos esses recursos. Seu desempenho aumentará cerca de 100 vezes em comparação com um sistema de 1 núcleo.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

A história do Thanos começou em novembro de 2017, quando o primeiro commit público foi feito. Antes disso, o Thanos estava sendo desenvolvido internamente na improbable.io.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Em junho de 2019, houve um lançamento marcante 0.5.0, que removeram gossip protocolo. Ele foi removido do Thanos, pois teve um desempenho abaixo das expectativas. Frequentemente, o cluster Thanos apresentava problemas, com nós se conectando incorretamente devido ao protocolo de gossip. Por isso, decidiram removê-lo. Acredito que essa foi uma decisão acertada.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

No mesmo junho de 2019, eles enviaram o pedido número 256 em Cloud Native Computing Foundation.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

E, após alguns meses, o Thanos foi aceito na Cloud Native Computing Foundation, que inclui o Prometheus, Kubernetes e outros projetos populares.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Em janeiro de 2018, começou o desenvolvimento da VictoriaMetrics.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Em setembro de 2018, mencionei publicamente a VictoriaMetrics pela primeira vez.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Em dezembro de 2018, publicaram a versão de nó único.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Em maio de 2019 foram publicados os códigos-fonte tanto da versão de nó único quanto da versão em cluster.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Em junho de 2019, assim como o Thanos, enviamos um pedido para a fundação CNCF sob o número 255. Enviamos nosso pedido um dia antes do Thanos.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Mas, infelizmente, ainda não fomos aceitos lá. Precisamos da ajuda da comunidade.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Vamos considerar os slides mais importantes que mostram a arquitetura do Thanos e da VictoriaMetrics.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Começamos com o Thanos. Os componentes amarelos são componentes do Prometheus. Todo o resto são componentes do Thanos. Começaremos com o componente mais importante. O Thanos Sidecar é um componente que é instalado ao lado de cada Prometheus. Ele se encarrega de carregar os dados do Prometheus do armazenamento local para o S3 ou outro armazenamento de objetos.

Há também um componente chamado Thanos Store Gateway, que pode ler esses dados do Object Storage em solicitações recebidas do Thanos Query. O Thanos Query implementa PromQL e a API do Prometheus. Ou seja, do lado de fora, ele parece um Prometheus. Aceita solicitações PromQL, as envia para o Thanos Store Gateway, que extrai os dados necessários do Object Storage e os envia de volta.

Mas em nosso Object Storage, os dados dos últimos duas horas estão armazenados devido à peculiaridade da implementação do Thanos Sidecar, que não pode carregar as últimas duas horas no Object Storage S3, pois, para essas duas horas, o Prometheus ainda não criou os arquivos no armazenamento local.

Como conseguimos contornar isso? O Thanos Query, além de fazer solicitações ao Thanos Store Gateway, envia paralelamente solicitações para cada Thanos Sidecar que está próximo ao Prometheus.

E o Thanos Sidecar, por sua vez, encaminha as solicitações para o Prometheus e obtém os dados das últimas duas horas.

Além desses componentes, há ainda um componente opcional, sem o qual o Thanos terá um desempenho insatisfatório. É o Thanos Compact, que se encarrega de mesclar pequenos arquivos no Object Storage em arquivos maiores que foram carregados lá pelos Thanos Sidecars. O Thanos Sidecar carrega arquivos com dados das últimas duas horas. Esses arquivos, se não forem mesclados em arquivos maiores, podem crescer exponencialmente em número. Quanto mais arquivos houver, mais memória o Thanos Store Gateway precisa, e mais recursos são necessários para a transmissão de dados pela rede, incluindo metadados. O funcionamento do Thanos Store Gateway se torna ineficiente. Portanto, é essencial executar o Thanos Compact, que mescla pequenos arquivos em arquivos maiores, para reduzir a quantidade de arquivos e diminuir a sobrecarga no Thanos Store Gateway.

Há também um componente chamado Thanos Ruler. Ele executa as regras de alerta do Prometheus e pode calcular regras de gravação do Prometheus para que os dados sejam gravados novamente no Object Storage. No entanto, esse componente não é recomendado, pois ele tende a retornar dados incompletos..

Este é o esquema simples do Thanos.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Agora, vamos comparar com o esquema do VictoriaMetrics.

O VictoriaMetrics possui 2 versões: versão de nó único e versão em cluster. A versão de nó único funciona em um único computador. Na versão de nó único, não há esses componentes, apenas um único binário. Esse binário na apresentação é representado por este quadrado. Tudo que está dentro do quadrado é o conteúdo do arquivo binário da versão de nó único. Você não precisa se preocupar com isso. Basta executar o binário e tudo funcionará.

A versão em cluster é mais complexa. Dentro dela, existem três componentes diferentes: vmselect, vminsert e vmstorage. A partir de seus nomes, deve estar claro qual a função de cada um deles. O componente Insert recebe dados em diferentes formatos: da API remote write do Prometheus, do protocolo Influx line, do protocolo Graphite e do protocolo OpenTSDB. O componente Insert os recebe, analisa e distribui entre os componentes de armazenamento disponíveis, onde os dados já são salvos. PromQL, bem como a API de consulta do Prometheus, e pode ser usado como uma substituição do Prometheus no Grafana ou em outros clientes da API do Prometheus. O Select recebe consultas em promql, as analisa, lê os dados necessários para executar essa consulta a partir dos nós de armazenamento, processa esses dados e retorna a resposta.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Vamos comparar a complexidade de instalação do Thanos e do VictoriaMetrics.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Começaremos com o Thanos. Antes de começar a trabalhar com o Thanos, é necessário criar um bucket em um Armazenamento de Objetos, como S3 ou GCS, para que o Thanos Sidecar possa gravar dados lá.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Em seguida, para cada Prometheus, você precisa instalar o Thanos Sidecar. Antes disso, não se esqueça de desativar a compactação de dados no Prometheus. A compactação de dados periodicamente comprime os dados no armazenamento local do Prometheus para reduzir o consumo de recursos.

Quando você instala o Thanos Sidecar nos seus Prometheus, deve desativar essa compactação de dados, porque o Thanos Sidecar não funciona corretamente quando a compactação de dados está ativada. Isso significa que seu Prometheus começa a salvar dados em blocos de duas horas e para de mesclar esses blocos em blocos maiores. Assim, se você fizer consultas que excedem a duração dos últimos dois horas, elas não funcionarão com tanta eficiência como poderiam funcionar se a compactação de dados estivesse habilitada.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Portanto, o Thanos recomenda reduzir o tempo de retenção de dados no armazenamento local para 6-8 horas, a fim de reduzir este overhead de muitos blocos pequenos.

Depois de instalar o Thanos Sidecar, você deve instalar dois componentes para cada bucket do Armazenamento de Objetos. São eles o Thanos Compactor e o Thanos Store Gateway.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Depois disso, é necessário instalar o Thanos Query e configurá-lo para se conectar a todos os Thanos Store Gateways que você tem, além de conseguir se conectar a todos os Thanos Sidecars.

Aqui pode haver um pequeno problema.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Você precisa configurar uma conexão segura e confiável do Thanos Query para esses componentes. E se seus Prometheus estão em diferentes data centers ou em diferentes VPCs, as conexões externas são proibidas. Mas, para que o Thanos Query funcione, você precisa de alguma forma de estabelecer essa conexão, e deve encontrar uma solução.

Se você tiver muitos desses data centers, a confiabilidade de todo o sistema diminui. Como o Thanos Query deve manter constantemente conexões com todos os Thanos Sidecars localizados em diferentes data centers. A cada solicitação recebida, ele irá encaminhar as requisições para todos os Thanos Sidecars. Se a conexão falhar, você receberá um conjunto de dados incompleto ou a resposta 'o cluster não está funcionando'.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

No VictoriaMetrics, tudo é um pouco mais simples. Para a versão de nó único, basta executar um binário e tudo funciona.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Na versão em cluster, basta executar todos os três tipos de componentes mencionados acima na quantidade necessária ou usar helm chart para automatizar o início dos componentes no Kubernetes. Também estamos planejando criar um operador para Kubernetes. O Helm chart não cobre alguns casos e pode causar problemas. Por exemplo, ele permite reduzir o número de nós de armazenamento, o que levará à perda de dados.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Após iniciar um binário ou a versão em cluster, você só precisa adicionar à configuração do Prometheus a configuração para o URL de gravação remota, para que comece a gravar dados simultaneamente no armazenamento local e no armazenamento remoto. Como você percebeu, essa configuração deve funcionar de forma muito mais confiável em comparação com a configuração do Thanos. Não precisamos manter uma conexão do VictoriaMetrics com todos os Prometheus, pois os Prometheus se conectam ao VictoriaMetrics e transmitem os dados.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Vamos considerar a manutenção do Thanos e do VictoriaMetrics.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos precisa monitorar o Sidecar para que eles não parem de carregar dados no Object Storage. Eles podem interromper esse carregamento devido a erros de upload, como uma desconexão temporária da rede com o Object Storage ou se o Object Storage estiver temporariamente indisponível. Nesse momento, o Thanos Sidecar notará isso, relatará um erro e pode falhar, parando de funcionar. Se você não monitorá-lo, os dados deixarão de ser transferidos para o Object Storage. Se passar o período de retenção (6-8 horas recomendado), você perderá dados que não foram para o Object Storage.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Os compactadores do Thanos podem parar de funcionar devido a conflitos com o Sidecar. Os compactadores pegam dados do Object Storage e os combinam em blocos de dados maiores. Como os compactadores não estão sincronizados com os Sidecars, pode ocorrer o seguinte: o Sidecar não conseguiu terminar de escrever um bloco, e o Compactador decide que esse bloco está totalmente gravado. O Compactador começa a lê-lo. Ele lê o bloco incompleto e para de funcionar. Veja os detalhes aqui.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Store Gateway pode fornecer dados inconsistentes devido a conflitos entre o Compactador e os Sidecars. Aqui acontece a mesma situação, pois o Store Gateway não está sincronizado com os Compactadores e Sidecars. Assim, podem surgir condições de corrida, onde o Store Gateway não vê parte dos dados ou vê dados extras.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O componente de Consulta no Thanos, por padrão, retorna um resultado parcial se alguns Sidecars ou o Store Gateway não estiverem disponíveis no momento. Você receberá parte dos dados e não saberá que não recebeu todos os dados. Essa é sua operação padrão. Em uma situação similar, o VictoriaMetrics retorna dados marcados como parciais.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Ao contrário do Thanos, o VictoriaMetrics raramente perde dados. Mesmo se a conexão do Prometheus com o VictoriaMetrics for interrompida, não há problema, pois o Prometheus continua gravando os novos dados que chegam no Write Ahead Log, que tem um tamanho de 2 horas. Se você restaurar a conexão com o VictoriaMetrics dentro de duas horas, os dados não serão perdidos. O Prometheus consegue continuar escrevendo dados após a restauração da conexão com o VictoriaMetrics.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Ao contrário do Thanos, que grava dados no object storage apenas após duas horas, o Prometheus replica automaticamente os dados através do protocolo remote write no remote storage, como o VictoriaMetrics. A perda do local storage no Prometheus não é uma preocupação. Se ele perder o local storage, no pior dos casos, você perderá apenas os últimos segundos de dados que não foram gravados no remote storage.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Kubernetes gerencia automaticamente o cluster, diferentemente do Thanos. Todos os componentes do Thanos são difíceis de acomodar em um único cluster Kubernetes, ao contrário dos componentes cluster do VictoriaMetrics.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

A atualização para uma nova versão do VictoriaMetrics é muito simples. Basta parar o VictoriaMetrics, atualizar os binários e reiniciar. Ao parar com o sinal SIGINT, todos os binários do VictoriaMetrics realizam um gracefull shutdown. Eles salvam corretamente os dados necessários e fecham adequadamente as conexões de entrada, para que nada seja perdido. Portanto, você não perderá nada ao atualizar.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

A expansão do cluster no VictoriaMetrics é muito fácil. Basta adicionar os componentes necessários e continuar a trabalhar.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Sobre as armadilhas do Thanos e do VictoriaMetrics.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos possui as seguintes armadilhas. O Prometheus deve armazenar dados das últimas duas horas. Se esses dados forem perdidos, você os perderá completamente, pois ainda não foram gravados no Object Storage, como o S3.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O componente Store Gateway e o componente compactor podem exigir muita memória para operar com um grande Object Storage, se houver muitos arquivos pequenos armazenados. Quanto maior a quantidade e o volume dos arquivos, mais memória RAM o Store Gateway e o compactor exigirão para armazenar a metainformação. O Thanos tem muitos problemas relacionados a isso. O Store Gateway e o compactor falham com volumes médios de dados gravados..

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos é promovido como capaz de escalar indefinidamente com o número de seus Prometheus. Na verdade, isso não é verdade. Já que todas as solicitações passam pelo componente Query, que deve consultar em paralelo todos os componentes Store Gateway e todos os componentes Sidecar, extrair os dados de lá e depois preprocessar. É evidente que a velocidade das solicitações é limitada pelo elo mais fraco, seja o Store Gateway mais lento ou o Sidecar mais lento.

Esses componentes podem estar desiguais em carga. Por exemplo, você tem um Prometheus que coleta milhões de métricas por segundo. E há um Prometheus que coleta milhares de métricas por segundo. O Prometheus que coleta milhões de métricas por segundo carrega muito mais o servidor em que está operando. Assim, o Sidecar lá funciona mais lentamente. E, no geral, tudo lá funciona devagar. E o componente de consultas puxará os dados de lá muito lentamente. Portanto, o desempenho de todo o seu cluster será limitado por esse Sidecar lento.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Por padrão, o Thanos fornece dados parciais se alguns Sidecars ou o Store Gateway estiverem inacessíveis. Por exemplo, se seus Sidecars estiverem espalhados pelo mundo em diferentes data centers, a probabilidade de desconexão e inacessibilidade dos componentes aumenta consideravelmente. Assim, na maioria dos casos, você receberá dados parciais, mesmo sem saber.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O VictoriaMetrics também tem suas armadilhas. A primeira armadilha é a opção que limita a quantidade de memória RAM utilizada pelo cache do VictoriaMetrics. Por padrão, essa configuração é igual a 60% da memória RAM na máquina onde o VictoriaMetrics está em execução ou 60% da RAM do pod do VictoriaMetrics no Kubernetes.

Se você alterar esse valor incorretamente, pode comprometer o desempenho do VictoriaMetrics. Por exemplo, se definir um valor muito baixo, os dados podem não caber no cache do VictoriaMetrics. Isso fará com que o sistema precise realizar trabalho adicional e sobrecarregar o processador com o disco. Se essa opção for configurada como muito alta, aumentará, em primeiro lugar, a probabilidade de o VictoriaMetrics falhar com um erro de falta de memória e, em segundo lugar, deixará muito pouca memória RAM disponível para o cache de arquivos no sistema operacional. E o VictoriaMetrics depende do cache de arquivos para o desempenho. Se ele for insuficiente, a carga no disco pode aumentar significativamente. Portanto, a recomendação é não alterar esse parâmetro sem necessidade extrema.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

A segunda opção é o retentionPeriod — período que, por padrão, é definido em 1 mês. Esse é o tempo durante o qual o VictoriaMetrics armazena os dados. Após esse prazo, o VictoriaMetrics exclui os dados.

Muitos iniciam o VictoriaMetrics sem esse parâmetro, gravam dados durante um mês. E depois perguntam: por que os dados desapareceram no mês anterior? Porque o retentionPeriod padrão é de 1 mês. Portanto, é necessário saber e definir o retentionPeriod correto.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Vamos explorar as possibilidades únicas.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos possui um recurso chamado downsampling: intervalos de 5 minutos e hora, que muitas vezes não funcionam corretamente. Se você pesquisar e olhar os problemas dele no GitHub, encontrará muitos problemas relacionados a esse downsampling, que às vezes não funciona como esperado pelos usuários.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos tem deduplicação de dados para pares de Prometheus HA. Quando dois Prometheus coletam as mesmas métricas dos mesmos targets e o Thanos as armazena no Object Storage. O Thanos é capaz de deduplicar esses dados corretamente, em contraste com o VictoriaMetrics.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O Thanos possui um componente de alerta, que estava no esquema do Thanos. Mas é não recomendado para uso em produção..

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Uma vantagem do Thanos é que o código do Thanos e do Prometheus é compartilhado. O Thanos e o Prometheus foram desenvolvidos pelos mesmos desenvolvedores. Com as melhorias no Thanos, o Prometheus também se beneficia.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

A principal característica do VictoriaMetrics é o MetricsQL. É uma extensão do VictoriaMetrics para PromQL, sobre a qual falei no recente meetup de big monitoring.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

O VictoriaMetrics suporta a ingestão de dados por diversos protocolos. O VictoriaMetrics pode não só receber dados do Prometheus, mas também através de protocolos como Influx, OpenTSDB e Graphite.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Os dados do VictoriaMetrics geralmente ocupam muito menos espaço em comparação ao Thanos e ao Prometheus.

Ao gravar dados reais, os usuários relatam uma redução de 2 a 5 vezes no tamanho dos dados no disco em comparação com o Prometheus e o Thanos.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Outra vantagem do VictoriaMetrics é que ele é otimizado para velocidade.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Vamos abordar o custo da infraestrutura.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Uma das vantagens do Thanos é que ele armazena dados em object storage, que é relativamente barato.

Ao armazenar dados em object storage, você deve pagar por operações de gravação e leitura de dados ($10 por milhão de operações). Quando você grava dados no object storage, precisa arcar com os custos de upload dos dados pela internet se seu cluster não estiver na AWS — lá é gratuito. Ao ler os dados, você paga de $10 a $230 por 1TB. Isso pode ser significativo se você frequentemente solicitar dados históricos do cluster do Thanos.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Para o cluster Thanos, é necessário pagar pelos servidores para os componentes Compact, Store Gateway e Query, que requerem muita memória e CPU para grandes volumes de dados.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Os custos para o VictoriaMetrics são os seguintes. Se os dados forem armazenados em discos GCE HDD, o custo é de $40 por 1TB. Para o VictoriaMetrics, discos HDD comuns são suficientes, não são necessários SSDs, que custam cinco vezes mais. O VictoriaMetrics é otimizado para HDD.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Para o VictoriaMetrics, são necessários servidores para os componentes: ou Single-nod ou para componentes de cluster, que, ao contrário dos componentes Thanos, requerem muito menos CPU e RAM — portanto, será mais barato.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Exemplos de implantação.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Um exemplo de implantação do Thanos é o Gitlab. O Gitlab funciona completamente no Thanos. Mas as coisas não são tão simples. Se olharmos para eles issues, podemos ver que eles enfrentam continuamente alguns problemas operacionais com o Thanos: a memória para os componentes Store Gateway ou Query é insuficiente. Eles estão constantemente aumentando a quantidade de memória.

Por causa disso, os custos para resolver esses problemas aumentam.

A segunda implantação, que pode ser mais bem-sucedida, é a da empresa Improbable, que começou o desenvolvimento do Thanos. Eles publicaram os fontes do Thanos. A Improbable é uma empresa que desenvolve motores de jogos.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Os exemplos públicos de implantação do VictoriaMetrics são:

  • wix.com, criador de sites
  • Adidas implementa o VictoriaMetrics e até fez uma apresentação na última PromCon 2019
  • TrafficStars — rede de anúncios
  • Seznam.cz — popular motor de busca checo.

E depois vieram empresas desconhecidas, que não posso nomear agora. Elas não deram consentimento.

  • Um grande desenvolvedor de jogos. Maior do que a Improbable.
  • Um grande desenvolvedor de software gráfico.
  • Um grande banco russo.
  • Um fabricante europeu de turbinas eólicas, que testou com sucesso o VictoriaMetrics. Este fabricante utiliza o VictoriaMetrics para monitorar dados obtidos das turbinas eólicas a uma taxa de 50 amostras por segundo por sensor. Cada turbina eólica tem várias centenas de sensores. Eles têm várias centenas de turbinas eólicas.
  • As linhas aéreas russas, que querem implementar o VictoriaMetrics, mas ainda não conseguiram. Estamos em fase de contrato com eles.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetricsConclusões.

VictoriaMetrics e Thanos resolvem problemas semelhantes, mas de maneiras diferentes:

  • Visão de consulta global
  • escalonamento horizontal
  • retenção arbitrária

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Obrigado.

Estamos esperando por você em nosso canal do telegram.

Escolhendo um armazenamento de dados para Prometheus: Thanos vs VictoriaMetrics

Apenas usuários registrados podem participar da pesquisa. Entre, por favor.

O que você usa como armazenamento a longo prazo para o Prometheus?

  • 35,3%Thanos6

  • 0,0%Cortex0

  • 0,0%M3DB0

  • 41,2%VictoriaMetrics7

  • 23,5%outro4

17 usuários votaram. 16 usuários se abstiveram.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster