前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >宝塔面板,awk读取网站日志,筛选请求耗时排名前100的记录

宝塔面板,awk读取网站日志,筛选请求耗时排名前100的记录

作者头像
泥豆芽儿 MT
发布2024-09-27 08:45:57
1120
发布2024-09-27 08:45:57
举报
文章被收录于专栏:木头编程 - moTzxx

背景

  • 近期发现项目的访问量稳步上升 渐渐注意到一些接口响应时间过长,在此需设计读取接口耗时较长的日志(nginx 的 access.log日志) 在此将实现步骤记录如下,方便道友参考 .
  • 环境配置
代码语言:javascript
复制
宝塔面板 + Nginx 1.20.2 + PHP-7.2.33

实现步骤

记录操作步骤,方便日后查证

1. nginx 配置 http
  • 首先,在 Nginx 的配置文件中,对如下位置进行修改 (可根据自己的需求进行配置)
  • 配置信息如下:
代码语言:javascript
复制
log_format access_b1b_log 
                            '[$remote_addr] $time_iso8601 [$request]'
                            '[$status] [$request_time]';
2. 网站配置
  • 找到自己所有操作的网站,打开网站配置文件,注意对 access_log 的文件目录绑定操作
3. 统计请求时长 前100的请求
  • 参考指令如下:
代码语言:javascript
复制
cat /www/wwwlogs/uat.b1b.com.log | awk '$2 >="[2024-09-20T15:01:20" && $2 <="[2024-09-20T16:48:17"' | awk '{print $NF " " $2" "$4}' | sort | uniq -c | sort -nr | head -n 100

根据个人需求,考虑设计一个脚本可以将需要的日志读取并存储到指定文件,方便后期的数据读取或直接查看

  • 设计脚本实现步骤
代码语言:javascript
复制
1. 设定日志文件路径
2. 提取日志中,请求耗时排名靠前的地址 (匹配一个小时前的数据)
3. 进行结果打印
4. 将得到的结果,可以整理打印到指定 日志文件
  • 设计脚本代码如下:
代码语言:javascript
复制
#!/bin/bash

# 设置日志文件路径
LOG_FILE="/www/wwwlogs/uat.b1b.com.log"

# 获取当前时间和一小时前的时间戳
HOUR_AGO=$(date '+%Y-%m-%dT%H' -d '1hour ago')
HOUR_AGO_SAVE=$(date '+%Y-%m-%d %H' -d '1hour ago')

# 提取日志中的 请求地址并统计出现次数
URL_TIME_LEN=$(cat $LOG_FILE |awk -v str_mz="$HOUR_AGO" '$2~ str_mz' |awk '!a[$4]++' | awk '{print $6 " "$2" "$4}' | sort | uniq | sort -nr)

# 提取前 100 个 请求地址
TOP_URL=$(echo "$URL_TIME_LEN" | head -n 100)

# 打印结果
echo ">>> Top 100 RequestUrl ($HOUR_AGO_SAVE时) :"
echo "$TOP_URL"

# 将结果整理打印到 日志文件
LOG_FILE_SUFFIX=$(date '+%Y-%m')
LOG_SAVE_FILE="/data/uat.b1b.com/storage/logs/access_analyze_$LOG_FILE_SUFFIX.log"

echo -e "\n>>> Top 100 RequestUrl ($HOUR_AGO_SAVE时)" >>$LOG_SAVE_FILE
TOP_URL2=$(echo "$URL_TIME_LEN" | head -n 100 >> $LOG_SAVE_FILE )
echo "$TOP_URL2"
  • 配置计划任务,执行结果如下:

附录

  • 如果想将收集到的日志数据,存储到数据库,方便直观的筛选排查 可考虑读取日志文件,进行存储分析
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 实现步骤
    • 1. nginx 配置 http
      • 2. 网站配置
        • 3. 统计请求时长 前100的请求
        • 附录
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档