2014-03-28 3 views
1

서버 클러스터에서 오류 빈도를 분석하여 추세를 찾으려고합니다. 로그를 분석하여 타임 스탬프가있는 관련 오류를 추출했습니다. (내 데이터는 현재 %b.%d.%H:%M:%S $HOSTNAME 형식이지만 타임 스탬프를 변환하는 것은 문제가되지 않습니다.) 이러한 이벤트를 그래프에 표시하고 싶습니다. 나는 gnuplot을 사용한 적이 없기 때문에 좋은 해결책이 아니라면 다른 것을 제안하십시오.gnuplot으로 이벤트 빈도 그래프 표시

내가 본 gnuplot 예제 (및 다른 문제의 그래프 솔루션)는 일정한 간격으로 검색된 데이터를 사용하는 것처럼 보입니다. CPU 사용량은 매 30 초마다, 온도는 매시간 등입니다. 그러나 상황에 따라 오전 8시 36 분에 300 회의 오류가 발생할 수 있으며 나머지 하루 동안 또는 하루 동안 일정하지 않거나 ... 누가 알겠습니까? 나는 단지 더 나은 시각화를 얻으려고 노력하고있다.

최종 결과로 보면 클러스터 노드 당 하나씩 세 줄의 그래프가 표시되어 오류 발생 빈도 (분당?)를 보여줍니다.

큰 스케일 솔루션이 있음을 알고 있습니다. Graylog, Logstash 및 Kibana를 다른 프로젝트에 사용하고 있습니다. 그러나 이것은 일회성이고, 내가 이와 같은 것을 필요로했던 다른 상황들이있었습니다; 실제로 gnuplot을 배우는 데 어느 정도 시간을 투자하고 싶습니다. 하지만 지금은이 고비를 극복하려고 노력하고 있습니다.

감사합니다.

+0

나는 함께 뭔가를 해킹 할 수 있었지만 이렇게하는 것은 끔찍한 일입니다. 나는'grep -c'에 중첩 된 for 루프를 사용하여 10 분 청크에서 카운트를 얻은 다음 그 결과를 노드 당 파일을 분리하여 저장했습니다. 그 데이터를 사용하여 gnuplot에서 그래프를 생성 할 수있었습니다. –

답변

3

smooth frequency 매개 변수를 사용하여 주파수를 플로팅 할 수 있습니다. 이는 동일한 모든 x 값을 모든 y 값의 합계를 y 값으로 갖는 단일 점으로 대체합니다.

5 개 블록을 수행해야 함은 x-데이터 : 당신이 균일 한 5 데이터의 재 샘플링을하지 않는 때문에 boxes 플로팅 스타일로 잘 작동하지만 lines으로 이상하게 보일 것

width = 5*60 # five minutes 
bin(x) = (timecolumn(x)/width+0.5)*width 
set boxwidth 0.9*width abs 
set style fill solid noborder 

set timefmt '%b.%d.%H:%M:%S' 
set xdata time 
set yrange [0:*] 

host='hostname' 
plot 'file' using (bin(1)):(strcol(2) eq host ? 1 : 0) smooth frequency with boxes 

분 그리드.

.... 
hosts='host1 host2 host3' 
plot for [h in hosts] 'file' using (bin(1)):(strcol(2) eq host ? 1 : 0) smooth frequency with boxes title h 

을 당신은 grep 같은 외부 도구로도 필터링을 수행 할 수 있습니다 :

세 개의 호스트에 대해 다음과 같이하는 것이 반복 할 수

hosts = 'host1 host2 host3' 
cmd = '< grep ''\b%s\b'' file' 
plot for [h in hosts] sprintf(cmd, h) using (bin(1)):(1) smooth frequency with boxes title h 

의 데이터를 재 샘플링과를 얻기 위하여 적절한 라인 플롯, 즉 하루 간격으로 두 가지 오류 버스트를 보간하여 데이터를 왜곡시키지 않지만 그 사이에 아무런 변화가없는 경우 외부 도구 또는 스크립트가 필요합니다.