Linux のログ解析調査方法 ~messages, apache, ldapログ等をコマンドの組合せで手軽に実施~

スポンサーリンク
スポンサーリンク

messages ログの調査方法

エラー系の文字列が含まれていないかを確認するコマンド

cat /var/log/messages | grep -i -e emerg -e alert -e crit -e error -e warn -e fail -e fatal | more
grepは複数行ある入力から、特定文字列を含む行を抽出するコマンドです(-v コマンドは特定文字列を含まない行を抽出します)。

grep の -i オプション

grep の -i オプションは case Insensitive つまり大文字小文字の区別を行わない、というオプションです。

grep の -e オプション

grep の -e オプションはor条件を並べるときに使います。-i だけでなく、-v にも使えます。例えば cronが動くたびに出力される Starting user-0.slice や Started Session や Starting Session 等を除外した場合は以下のようにコマンドを打ちます。

cat /var/log/messages | grep -v -e ” systemd: Started ” -e ” systemd: Starting ” | more

Apache ログの解析方法

各ページでどれくらいアクセスがあるかを確認するコマンド

cat /var/log/httpd/access_log | grep GET | cut -d ” ” -f 7 | sort | uniq -c | sort -nr
cut コマンドは1行の文字列から区切り文字を元に文字列を切り取るコマンドです。

cut の -d オプション および -f オプション

cut の -dオプションの後には区切り文字を指定します。ここではスペースを指定しています。(デフォルトではタブが区切り文字)

また、cut の -f オプションはフィールド位置の指定です。-d でスペースを指定しているので、先頭から6つ目のスペースと7つ目のスペースの間の文字列が抽出されます。

この cut コマンドが、スペースの連続数が異なるたにうまく行かない場合は、grep とcut の間に | tr -s |を挟み、重複するスペースを1つにしてからcutします。

また、-f 以降の値は環境によって異なります(例えばsyslogサーバに溜まったログを見てる場合等)ので、どの数値が当てはまるかは、ログのフォーマットを確認して適切な数値を入れます。

uniq の -c オプション

uniq コマンドは重複した行を抽出するコマンドですが、連続して重複している必要があるので、sortコマンドで並べ替えをした後に使うことが多いです。

-c オプションを使うと重複した数を表示することができます。

sort の -n オプション および -r オプション

sort コマンドはデフォルトでは文字列を昇順に並べ替えします。a,b,cの場合は分かり易いですが、数字については、文字列として扱うと、例えば 2 と 11 を昇順で並べ替えると 11 の方が先になってしまいます。

-n オプションを付けると 文字列ではなく数字として扱うので、 2のほうが先になります。

また、-r オプションを使うと昇順ではなく降順で表示することができます。

今回はカウント数が多いほう(つまりアクセス数の多いページ)を上に表示させたいので、-nr オプションを付け加えます。

なお、これらを組み合わせればOpenLDAPのログも同様の解析が可能で、どのようなIPからLDAPサーバへアクセスしているかを調査することができます。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク