本番のアプリが Nginx を使っていることが前提。 alp を使う。秘伝のタレ云々ものちにまとめたい
cd ~
# wget, unzipのインストール (必要なら)
sudo apt install -y wget unzip
# alpをインストール
wget https://github.com/tkuchiki/alp/releases/download/v1.0.21/alp_linux_amd64.zip
unzip alp_linux_amd64.zip
sudo install ./alp /usr/local/bin
# 確認
which alp
sudo vim /etc/nginx/nginx.conf
# httpブロックの中に、log_formatの設定追加
http {
log_format ltsv "time:$time_local"
"\thost:$remote_addr"
"\tforwardedfor:$http_x_forwarded_for"
"\treq:$request"
"\tmethod:$request_method"
"\turi:$request_uri"
"\tstatus:$status"
"\tsize:$body_bytes_sent"
"\treferer:$http_referer"
"\tua:$http_user_agent"
"\treqtime:$request_time"
"\truntime:$upstream_http_x_runtime"
"\tapptime:$upstream_response_time"
"\tcache:$upstream_http_x_cache"
"\tvhost:$host";
access_log /var/log/nginx/access.log ltsv;
}
sudo systemctl reload nginx
echo -n "" > /var/log/nginx/access.log && sudo chmod 777 /var/log/nginx/access.log
# ログローテ & nginx再起動
sudo rm /var/log/nginx/access.log && sudo systemctl reload nginx
特定の正規表現でグルーピングして、結果を出力することができる
sudo cat /var/log/nginx/access.log | alp ltsv
# グルーピングの例
# /items/{数字}.json, /users/{数字}.json がalpの出力結果の大半を占めている場合は、正規表現使ってグルーピングしてあげると見やすくなる
sudo cat /var/log/nginx/access.log | alp ltsv -m "/items/[0-9]+.json, /users/[0-9]+.json" --sort=sum --reverse
参考