nginxエラーログ分析

nginxエラーログ分析

私は以下を達成する方法を探しています。

これはnginxエラーログの1行です。

2014/12/29 21:17:57 [error] 30078#0: *311826 openat() "/var/www/html/images/images/Outlet-Celine-Boston-Square-Calfskin-Bags-Red_celine_2140_1.jpg" failed (2: No such file or directory), client: 207.46.13.42, server: server.domain.tld, request: "GET /images/images/Outlet-Celine-Boston-Square-Calfskin-Bags-Red_celine_2140_1.jpg HTTP/1.1", host: "www.buylvneverfullpm.net"

何千もの多くがあるので、方法が必要です。

  1. 行に 'host: "*"' が含まれていることを確認します。ここで、*はURLです。
  2. ホスト値の取得: "www.xxx.yyy"
  3. 最初にwwwを削除してください。
  4. 各 xxx.yyy の発生回数を計算します。
  5. 各固有ホスト値の発生を最も高い値から最も低い値にソートします。

私は以下を使用しています:

awk '($20 ~ /GET/)' /var/log/nginx/error_log | awk '{print $24}' | sort | uniq -c | sort -rn

ただし、「www」は削除されないため、重複した項目があります。

ベストアンサー1

ただawkあなたのためにすべてを扱う

awk '$20 ~ /GET/{gsub(/"/, "", $24); sub(/[^.]*\./, "", $24); a[$24]++};
END{for (k in a)print k, a[k]}' /var/log/nginx/error_log

おすすめ記事