2017-04-07 2 views
0

여러 rrd 데이터 파일의 변수가 포함 된 그래프를 플로팅하고 있습니다. 또한 각 변수의 마지막 값을 그래프에 표시합니다. 예를 들어 "CDEF : A = a, UN, 0, a, IF, 8, "을 사용하면 그래프에 변수 A의 마지막 값을 인쇄합니다. 그래프를로드 할 때 마지막 값인 rrd 데이터 파일의 마지막 업데이트 값이 0이 아니더라도 A가 0이되는 경우가 있습니다. rrdtool 1.4.8을 사용하고 있습니다. A를 "CDEF : A = a, 8,"을 사용하여 정의 할 때 이것은 발생하지 않습니다.알 수없는 값을 0으로 설정하기 위해 IF와 UN을 사용할 때 최종 값이 rrd 그래프에서 때때로 0이됩니다.

답변

0

이것은 여러 RRD 파일을 사용하고 업데이트와 쿼리간에 경쟁 조건이 있기 때문입니다. MRTG 데이터보다 "Routers2"에 의해 생성 된 그래프에서 이러한 현상이 발생하는 것을 보았습니다. 프로그램은이를 피하기 위해 특별한 계산을 추가했습니다.

그래프를 실행하면 마지막 시점이 현재 시간을 기준으로합니다. 그러나 현재있는 시간 버킷이 원본 RRD 파일 중 하나에서 업데이트되지 않았을 수 있습니다.

예를 들어 데이터가 5 분마다 업데이트됩니다.

  • 11:59에 RRD 파일 A이 업데이트되고 11:55 버킷이 완료되었습니다.
  • 12:01에 RRD 파일 B이 업데이트되고 12:00 버킷이 완료되었습니다.
  • 12시 3 분에 함수가 호출됩니다. 그래프의 끝은 최신 사용 가능 데이터이므로 12:00으로 설정됩니다.
  • 그러나 RRD 파일 A의 경우 12:04 업데이트가 아직 없기 때문에 최신 데이터는 11:55입니다. 그래프의 마지막 데이터 포인트는 unknown입니다.

이렇게하면 때때로 데이터 세트 중 하나의 끝에 알 수없는 항목이 표시됩니다. 즉, 현재 데이터를 가져 오는 RRD가 현재 시간 창이 끝날 때 업데이트 중임을 의미합니다.

알 수없는 테스트가없는 경우 그래프에 문제의 지점이 표시되지 않습니다. 알려지지 않은 점은 플롯되지 않음). 따라서 면밀히 살펴보면 그래프의 선이 한 픽셀 더 빨리 끝나는 것을 볼 수 있습니다.

프로그래밍 방식으로이 문제를 방지하는 한 가지 방법은 모든 구성 요소 RRD 파일의 시간을 lastupdate으로 설정 한 다음이 중 가장 초기 값을 그래프의 종료 시간으로 사용하는 것입니다. 이것은 routers2 소프트웨어가이 문제를 피하는 방법입니다.