labunix's blog

labunixのラボUnix

squid(リバース/クライアントPC)をgnuplotでグラフ化

squid リバースプロキシサーバのログ

 自分の内部Webサーバへのアクセスをみるだけなので、非常に詰まらない。
 一週間分のローテーションを合わせても少ししかない。
 まあ、私以外に使う人がいないので。

# cat /var/log/squid/access.log* | \
   awk -F\[ '{print $2}' | \
   awk -F\: '{print $2 ":" $3}' | wc -l
57

■まあ、とりあえず保存。
 念の為、並べ替え
 分単位での重複カウント = 1分あたりのアクセス数となる。

# cat /var/log/squid/access.log* | \
   awk -F\[ '{print $2}' | \
   awk -F\: '{print $2 ":" $3}' | \
   sort | uniq -c | awk '{print $2 "\t" $1}' > reverse.txt

$ (echo 'set terminal png size 1024,600'; \
 echo 'set output "reverse.png"'; \
 echo 'set xdata time'; \
 echo 'set key outside'; \
 echo 'set timefmt "%H:%M"'; \
 echo 'set format x "%H:%M"'; \
 echo 'set yrange [0:10]'; \
 echo 'plot "reverse.txt" using 1:2 title "access count" with lines'; \
) | gnuplot

f:id:labunix:20120402233954p:plain

 
■Win版SquidクライアントPCのアクセスログも。
 各時間帯の傾向が分かる。
 一台しかない自身のアクセスログしか取らないPCを一週間分とはいえ、
 以下のグラフのように900を超えているが、
 一日3000件~6000件のRSSやWeb記事、調べ物をさばいているので、別に驚かない。

$ cat access.log* | awk -F\[ '{print $2}' | \
   awk -F\: '{print $2 ":" $3}' | \
   sort | uniq -c | awk '{print $2 "\t" $1}' > client.txt

$ sort -k 2 -n client.txt | tail -1
22:35   925

$ (echo 'set terminal png size 1024,600'; \
 echo 'set output "client.png"'; \
 echo 'set xdata time'; \
 echo 'set key outside'; \
 echo 'set timefmt "%H:%M"'; \
 echo 'set format x "%H:%M"'; \
 echo 'set yrange [0:1000]'; \
 echo 'plot "client.txt" using 1:2 title "access count" with lines'; \
) | gnuplot
 

f:id:labunix:20120402234027p:plain