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 や SQUID(Proxy) のアクセスログの解析方法
各ページでどれくらいアクセスがあるかを確認するコマンド
# 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 サーバへアクセスしているかを調査することができます。
つまり cat /var/log/ldap.log | grep "ACCEPT from IP=" でLDAPクライアントのIPアドレスを含む行のみを抽出し、上記コマンドを組み合わせるわけです。
OpenLDAP のもう少し具体的なログ検索については以下をご参照下さい。
コメント