goaccess日志切割工具安装说明
- 格式:xlsx
- 大小:100.04 KB
- 文档页数:22
6
查看日志 html
修改
nginx配
置,将浏
览器输入
的日志
html跳转
到正确位
置
location ~*\.html ?{
root /usr/loc al/nginx /logs/;
} 修改后记 得重启 nginx。 Nginx下 sbin文件 夹下 ./nginx -s reload
:set ff=unix( 将文件转 成unix文 件)
LOGS_PAT H="/usr/ local/ng inx/logs " ARCHIVE_ YEAR=$(d ate -d "yesterd ay" "+%Y")
ARCHIVE_ MONTH=$( date -d "yesterd ay" "+%m") ARCHIVE_ DATE=$(d ate -d "yesterd ay" "+%Y%m%d _%H%M%S" ) if [ -r /usr/loc al/nginx /logs/ng inx.pid ]; then
'$status $body_by tes_sent "$http_r eferer" '
'"$http_ user_age nt" "$http_x _forward ed_for" $request _time'; 在nginx 日志格式 默认的基 础上,在 最后新增 $requset _time参 数,记录 响应时间
yum -y install glib2 glib2devel 1 安装环境 ncurses ncursesdevel geoIP geoIPdevel 安装 goaccess (建议安 2 装Linux 下 usr/loca l下) 进入 usr/loca l目录 wget http://j aist.dl. sourcefo / project/ goaccess /0.6.1/g oaccess0.6.1.ta r.gz tar zxvf goaccess 0.6.1.ta r.gz cd goaccess -0.6.1
echo "Nginx might be down" fi
# ======== ======== ======== ======== ======== ======== ======== ======== ======== ====== # Clean up log files older than 100 days # ======== ======== ======== ======== ======== ======== ======== ======== ======== ======
vim /etc/cro ntab
window下 的脚本换 行符在 Linux下 执行会出 现问题 (暂没有 列出具体 错误提 示) sed -i 's/\r//' cut_del_ logs.sh( 暂没有模 拟实现, 不确定该 命令正确 与否)
00*** root /bin/sh /usr/loc al/cut_d el_logs.s h
4
goaccess 使用
进入 nginx日 ces s -f access.l og -c -a
如图
上方选择 第3个(按 space键 进行选 择) 下方Log Format按 c键进行 修改(如 图从左往 右,第2 个红框。 新增%T。 用于匹配 步骤3修 改的 nginx日 志格式) 按Enter 键进入查 看日志进 程(按2次 Enter 键,一次 保存,二 次进入)
./config ure – enablegeoip – enableutf8 make && make install make clean
配置 nginx日 志(不做 详述。修 改后记得 重启 3 nginx。 Nginx下 sbin文件 夹下 ./nginx -s reload)
log_form at main '$remote _addr $remote_ user [$time_l ocal] "$reques t" '
vim 解决: cut_del_
logs.sh
在编辑器 里
退出重新 执行即可
:set ff(查看 文件是否 是dos文 件)
然后
2
在切割 nginx日 志的功能 中,我们 4 要注意该 shell脚 本是切割 前一天的 日志 所以我们 在把该 shell脚 本放在 crontab 中执行 时,建议 在每天的 0点0分 执行。如 下:
# Change HOUSEKEE PING=1 to enable clean up
HOUSEKEE PING=0 KEEP_DAY S=100 if [ $HOUSEKE EPING == 1 ]; then
if [ d "${LOGS_ PATH}" ]; then
find "${LOGS_ PATH}" type f name "access_ *.log.gz " -mtime +${KEEP_ DAYS} exec rm -f {} \;
注意
tips:q键 退出该页 面 如果失 败,可以 尝试修改 如图从左 往右,第 1个红框 内信息为 [%d:%t %^]
2
生成HTML 报告
goacces s -f access.l og -a > report.ht ml
5
nginx日 志切割
创建脚本 (脚本路
径自由定
1 义。本例 放在
usr/loca l下)
2
填写脚本 信息
使用
shell脚
本切割
nginx日
志很简
单,
shell脚
本内容如 #!/bin/b
ash
touch cut_del_ logs.sh
# ======== ======== ======== ======== ======== ======== ======== ======== ======== ====== # chmod u+x /opt/ngi nx/cut_n ginx_log .sh # crontab -e #00* ** /opt/ngi nx/cut_n ginx_log .sh > /opt/ngi nx/logs/ cut_ngin x_log.lo g 2>&1 # ======== ======== ======== ======== ======== ======== ======== ======== ======== ======
kill USR1 $(cat "/usr/lo cal/ngin x/logs/n ginx.pid ")
sleep 1
#gzip "${LOGS_ PATH}/${ ARCHIVE_ YEAR}/${ ARCHIVE_ MONTH}/a ccess_${ ARCHIVE_ DATE}.lo g" else
fi fi
sh 3 运行 cut_del_
logs.sh 注意:如 果不是在 Linux下 写该脚 本,而是 在window 。需要注 意window 下的脚本 在Linux 下执行会 出现问题
1
syntax error: unexpect ed end of file
问题是由 于.sh文 件的格式 为dos格 式。而 linux只能 执行格式 为unix格 式的脚本 。因为在 dos/wind ow下按 一次回车 键实际上 输入的是 “回车 (CR)”和 “换行 ( 而LF)” Linux/uni x下按一 次回车键 只输入“ 换行 (LF) ”,所以 修改的sh 文件在每 行都会多 了一个 CR,所 以Linux 下运行时 就会报错 找不到命
mkdir -p "${LOGS_ PATH}/${ ARCHIVE_ YEAR}/${ ARCHIVE_ MONTH}"
mv "${LOGS_ PATH}/ac cess.log " "${LOGS_ PATH}/${ ARCHIVE_ YEAR}/${ ARCHIVE_ MONTH}/a ccess_${ ARCHIVE_ DATE}.lo g"