2015年2月25日水曜日

webサーバを並列化しているとき、各サーバのログを一括でgrepするShell。

/tmp/log_dir/#{host名} 下にそれぞれ複数の.gz化されたlogファイルを置き、
host毎に検索し、該当行を"#{host名}-#{検索対象文字列}".csvに書き出す というシェルプログラムを作った。

今回はnginxのaccess_logからスマホのUAで特定のURLへアクセスしているリクエストのログを抽出する。


#!/bin/bash


log_dir="/tmp/log_dir"
hosts=("zetton01" "zetton02" )
uris=("/login/" "/news/" "/todays/special/")

for host in ${hosts[@]}
do
read_dir="${log_dir}/${host}"
for uri in ${uris[@]}
do
dum=`echo $uri | sed -e "s/\//-/g"`
outfile="${host}_${dum}.csv"

echo $read_dir
echo $uri
zcat $read_dir/*.gz | grep "http://#{mydomain}${uri}" | grep "iPhone\|Android" > $outfile
done
done

0 件のコメント:

コメントを投稿