【Linux】tailコマンドを利用してリアルタイムでログ監視
今回は ログ を 監視 して、メッセージに特定の文字列が表示されたら、 シェルスクリプト の指定したアクションで、メッセージの内容を利用した処理を行うのが目的です。 例えば、WEBサーバーの ログ に「404」の文字列が表示されたらゴニョゴニョするなどです。 運用・管理面では使える コマンド だと思いますが、 ログ 解析ツールが無料で世の中に出回っている昨今、あまり活躍する場面が思い浮かびませんが…。 使うかどうかはわかりませんが、覚えておいて損はないと思いもいます。 tailコマンドでログ監視 以下のような記述をすることで、指定した ログ を リアルタイム で 監視 することができます。 tail -n 0 -F /path/to/log オプション の解説は後程ご紹介します。 まずは、 シェルスクリプト のサンプルを作成してみましたのでご覧ください。 サンプルスクリプト #!/bin/bash target_log="/var/log/httpd/error_log" search_word="404" sample_action() { while read i do field2=`echo ${i} | grep "${search_word}" | awk '{print $2}'` if [ -n "${field2}" ]; then echo ${field2} fi done } tail -n 0 -F ${target_log} | sample_action exit まずは末尾をご覧ください。 上記の例では、 ログ を 監視 すると同時に新しいメッセージが追加されたら、 sample_action() 関数を実行します。 sample_action() の中では、追加されたメッセージに” 404 “の文字が含まれるかを grep コマンド で検索し、見つけたら awk コマンド で第2フィールドを抽出して echo で表示するものです。 オプション解説 -n 末尾から表示する行数を指定。 ここでは標準出力しないように”0″を指定。 -F [...