Pergunta

Estou interessado em saber se há alguma alternativa para rrdtool para registro de dados de séries temporais. Eu estou olhando para algo que pode escalar para um grande número de dispositivos para monitorar.

Pelo que li sobre este assunto, rrdtool é I / O ligado quando ele bateu com grandes quantidades de dados. Desde I imaginar isso para escala para um grande número de dispositivos para monitor, estou curioso para saber se há alguma alternativa que não engasgar com I / O. SQL preferível base, mas não necessariamente.

Graças

Foi útil?

Solução

Se desempenho de I / O é a principal preocupação, então você quer olhar para algo como rrdcached que está disponível na versão atual (1.4) dos RRDTools.

O I / O sobrecarga não é uma função dos dados a serem escritos, depois de todos cada valor de 8 bytes por fonte de dados. A largura de banda I / O vem do fato de todo um sector (tipicamente 4k) precisa ser lido antes de ser escrito. De repente, a escrever 8 bytes de ter lido / escrito 8K bytes.

Os aglutina rrdcached todos estes write juntos para que quando um RRD é atualizado a relação de dados úteis (valores DS reais) aos dados desperdiçados (os bytes de reposição no setor) é reduzida.

Todos os RRDTools automaticamente o trabalho com rrdcached quando detectam-lo funcionando (via uma variável de ambiente). Isto permite-lhes às ondas de gatilho, quando necessário, por exemplo quando a geração de um gráfico a partir dos dados.

Enquanto a mudança para uma solução SQL com base pode ajudar a considerar o adicional de I / O que será necessário para SQL apoio. Considerando que você não tendem a usar dados RRD nesse tipo de padrão de acesso aleatório um banco de dados é um pouco de uma marreta para o problema. Enquanto degola com RRDTool irá manter o acesso a todo o ecossistema de ferramentas que entendem e podem trabalhar com os arquivos, o que é útil, especialmente se você já está familiarizado com ele.

Outras dicas

Existem algumas bases de dados de séries temporais que têm alta disponibilidade e / ou escalabilidade como metas.

Talvez dê uma olhada no

  • rrdcached , uma camada de armazenamento em cache no topo de rrd
  • sussurro , o mecanismo de banco de trás grafite
  • opentsdb é um sistema distribuído, escalável banco de dados Time Series (TSDB) escrito em cima do HBase
  • reconnoiter embora o seu foco é mais no monitoramento

Um amigo meu fez alguns trabalhos há um tempo atrás em um backend SQL para armazenar dados round robin: http: // RRS .decibel.org

No entanto, eu suspeito que desde que você está perguntando sobre "dispositivos para Monitor", você pode estar à procura de uma solução mais completa.

Se as operações de I / O por segundo é o seu principal gargalo e você estiver usando Linux, há um truque fácil que custa apenas memória. Use um tmpfs montar para encenar suas gravações RRD.

Todo o I / O operações será feito na memória e não irá incorrer em qualquer um dos gargalos encontrados em fazer disco I / O (isso é ainda mais rápido do que usando discos de estado sólido). Você pode então usar uma tarefa agendada e rsync para copiar RRDs só mudou para o disco uma vez a cada poucos minutos.


Criar os diretórios

bash-4.2# mkdir /mnt/rrd-reads
bash-4.2# mkdir /mnt/rrd-writes

Criar um sistema de arquivos RAM 500MB-máxima, com opções apropriadas

bash-4.2# mount -t tmpfs -o size=500m,mode=0750,uid=collectd,gid=collectd none /mnt/rrd-writes
bash-4.2# echo "none /mnt/rrd-writes tmpfs size=500m,mode=0750,uid=collectd,gid=collectd 1 2" >> /etc/fstab

Copiar os arquivos antigos RRD para o novo ponto de montagem

bash-4.2# cp -a /var/lib/collectd/rrd/* /mnt/rrd-writes

Configurar seu aplicativo para gravação para o novo ponto de montagem de escrita rrd

bash-4.2# sed -i -e 's/DataDir "\/var\/lib\/collectd\/rrd"/DataDir "\/mnt\/rrd-writes"/' /etc/collectd/collectd.conf

Configurar uma tarefa cron para sincronizar apenas os alterados RRDs para o disco uma vez a cada 2 minutos

bash-4.2# echo "*/2 * * * * collectd rsync -a /mnt/rrd-writes/* /mnt/rrd-reads/ ; sync" > /etc/cron.d/rrd-sync

Não se esqueça de copiar seus arquivos RRD salvos no ponto de montagem antes você iniciar seu aplicativo de gravação de rrd! Você pode precisar editar o script de inicialização para esse serviço para garantir que os arquivos estão lá antes de começar. Se ele começa sem os arquivos no lugar, novos nus será criado e você vai ser muito confuso uma vez que o diretório de leitura será substituído com RRDs vazias.

Se em algum momento você precisa redimensionar as tmpfs montagem, você pode fazer isso na mosca:

bash-4.2# mount -t tmpfs -o remount,size=850m /mnt/rrd-writes
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top