문제

로깅 시계열 데이터를위한 RRDTool에 대한 대안이 있는지 알고 싶습니다. 많은 장치가 모니터링 할 수있는 규모를 살펴보고 있습니다.

내가이 주제에 대해 읽은 내용에서, RRDTool은 많은 양의 데이터로 쳤을 때 I/O 묶입니다. 모니터링하기 위해 매우 많은 수의 장치로 확장하기 위해 이것을 상상하기 때문에 I/O에서 질식하지 않는 대안이 있는지 궁금합니다. 바람직한 SQL 기반이지만 반드시는 아닙니다.

감사

도움이 되었습니까?

해결책

I/O 성능이 주요 걱정이라면 rrdcached RRDTools의 현재 버전 (1.4)에서 사용할 수 있습니다.

I/O 오버 헤드는 데이터 소스 당 8 바이트 후에 작성되는 데이터의 함수가 아닙니다. I/O 대역폭은 전체 섹터 (일반적으로 4K)를 기록하기 전에 읽어야한다는 사실에서 비롯됩니다. 갑자기 8k 바이트를 읽고 8k 바이트를 작성했습니다.

RRDCached는 이러한 모든 쓰기를 합쳐서 RRD가 업데이트되면 유용한 데이터의 비율 (실제 DS 값)과 낭비 된 데이터 (섹터의 예비 바이트)의 비율이 줄어 듭니다.

모든 RRDTools는 실행을 감지 할 때 (환경 변수를 통해) RRDCached와 자동으로 작동합니다. 이를 통해 필요할 때 (예 : 데이터에서 그래프를 생성 할 때) 플러시를 트리거 할 수 있습니다.

SQL 기반 솔루션으로 전환하면 SQL을 지원하는 데 필요한 추가 I/O를 고려할 수 있습니다. 이러한 종류의 임의의 액세스 패턴에서 RRD 데이터를 사용하는 경향이 없다는 것을 고려하면 데이터베이스는 문제에 대한 약간의 슬레지 해머입니다. RRDTOOL을 고수하면 파일을 이해하고 작업 할 수있는 모든 도구의 생태계에 계속 액세스 할 수 있습니다. 특히 이미 익숙한 경우 유용합니다.

다른 팁

목표로 고 가용성 및/또는 확장 성이있는 시계열 데이터베이스가 있습니다.

어쩌면 볼 수도 있습니다

  • rrdcached, RRD 상단의 캐싱 층
  • 속삭임, 데이터베이스 엔진 뒤에 석묵
  • opentsDB HBASE 위에 작성된 분산, 확장 가능한 시계열 데이터베이스 (TSDB)입니다.
  • 정찰기 비록 그 초점은 모니터링에 더 중점을 둡니다

내 친구가 라운드 로빈 데이터를 저장하기 위해 SQL 백엔드에서 얼마 전에 일을했습니다. http://rrs.decibel.org

그러나 "모니터링 할 장치"에 대해 묻기 때문에보다 완전한 솔루션을 찾고있을 것입니다.

초당 I/O 작업이 메인 병목 현상이 있고 Linux를 사용하는 경우 메모리 비용 만 비용이 드는 해킹이 있습니다. TMPFS 마운트를 사용하여 RRD 쓰기를 무대에 올리십시오.

모든 I/O 작업은 메모리에서 수행되며 디스크 I/O를 수행 할 때 발견 된 병목 현상이 발생하지 않습니다 (솔리드 스테이트 디스크를 사용하는 것보다 훨씬 빠릅니다). 그런 다음 CRON 작업 및 RSYNC를 사용하여 몇 분마다 변경된 RRD 만 디스크로 복사 할 수 있습니다.


디렉토리를 만듭니다

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

적절한 옵션이있는 500MB-Maximum RAM 파일 시스템을 만듭니다

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

이전 RRD 파일을 새 마운트 포인트에 복사하십시오.

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

새로운 마운트 포인트에 쓰기 위해 RRD 작성 응용 프로그램을 구성하십시오.

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

2 분마다 한 번씩 변경된 RRD 만 디스크에 동기화하기 위해 Cron 작업을 설정하십시오.

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

저장된 RRD 파일을 마운트 포인트에 복사하는 것을 잊지 마십시오. ~ 전에 RRD 작성 응용 프로그램을 시작합니다! 파일이 시작되기 전에 파일이 있는지 확인하려면 해당 서비스에 대한 Init 스크립트를 편집해야 할 수도 있습니다. 파일없이 시작되면 새로운 베어 버전이 생성되며 읽기 디렉토리가 빈 RRD로 덮어 쓰면 매우 혼란 스러울 것입니다.

어느 시점에서 TMPFS 마운트 크기를 조정 해야하는 경우 즉시 할 수 있습니다.

bash-4.2# mount -t tmpfs -o remount,size=850m /mnt/rrd-writes
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top