awk で特定列が条件に合致する場合に表示する

Linux

apache や nginx のログで http status code が 5xx のログのみを表示したり、処理時間が 5秒以上のログを検索したいと言ったことがあるかと思いますが、awk を使用することで比較的簡単に実現すること可能です。

サンプルの access.log

207.241.237.224 - - [17/May/2015:16:05:51 +0000] "GET /robots.txt HTTP/1.0" 200 - "-" "Mozilla/5.0 (compatible; archive.org_bot +http://www.archive.org/details/archive.org_bot)"
207.241.237.224 - - [17/May/2015:16:05:57 +0000] "GET /articles/arp-security/arpmitm HTTP/1.0" 200 1788 "http://semicomplete.com/articles/arp-security/" "Mozilla/5.0 (compatible; archive.org_bot +http://www.archive.org/details/archive.org_bot)"
46.105.14.53 - - [17/May/2015:16:05:06 +0000] "GET /blog/tags/puppet?flav=rss20 HTTP/1.1" 200 14872 "-" "UniversalFeedParser/4.2-pre-314-svn +http://feedparser.org/
208.91.156.11 - - [17/May/2015:16:05:23 +0000] "GET /files/logstash/logstash-1.3.2-monolithic.jar HTTP/1.1" 404 324 "-" "Chef Client/10.18.2 (ruby-1.9.3-p327; ohai-6.16.0; x86_64-linux; +http://opscode.com)"
116.125.143.84 - - [17/May/2015:16:05:22 +0000] "GET /robots.txt HTTP/1.1" 200 - "http://search.daum.net/" "Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server; + http://tab.search.daum.net/aboutWebSearch.html) Daumoa/3.0"
116.125.143.84 - - [17/May/2015:16:05:35 +0000] "GET /projects/grok/ HTTP/1.1" 301 341 "http://search.daum.net/" "Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server; + http://tab.search.daum.net/aboutWebSearch.html) Daumoa/3.0"

ステータスコードで検索

9カラム目が 400以上 499 以下 で検索した結果が表示されます。検索するカラムや条件を変更することで、簡単に様々な条件での検索が可能となります。

$ cat access.log | awk '$9 >= 400 && $9 <= 499 {print $0}'
208.91.156.11 - - [17/May/2015:16:05:23 +0000] "GET /files/logstash/logstash-1.3.2-monolithic.jar HTTP/1.1" 404 324 "-" "Chef Client/10.18.2 (ruby-1.9.3-p327; ohai-6.16.0; x86_64-linux; +http://opscode.com)"
$

コメント

タイトルとURLをコピーしました