日志介绍
目的:将用户的访问信息记录到指定的文件中由ngx_http_log_module模块负责
访问日志参数:
access_log:指定日志文件的路径和使用何种日志格式记录日志
log_format:用来指定日志的格式
可以放置标签段: main,http,server,location
日志格式
添加日志:
sed -i '1 i error_log logs/error.log error;' /usr/local/nginx/conf/nginx.conf
创建日志路径:
mkdir -p /usr/local/nginx/logs
配置访问日志(使用默认的配置)
1. 配置log_format(在http中配置)
sed -n '21,24p' nginx.conf.default
取出信息后添加都nginx.conf的http模块中(server之前)
2. 配置access_log(最好在虚拟主机里面配置,便于统计)
默认配置:#access_log logs/access.log main;
放置位置:http server location
本机配置:在单独的虚拟域名的location后配置(注意封号)
server { listen 80; server_name www.etiantian.com etiantian.com; location / { root html/etiantian; index index.html index.htm; } access_log logs/access_etiantian.log main; } # main 表示全局,所有的访问虚拟主机etianitian的都会打入
3. 配置windows的hosts解析
C:WindowsSystem32driversetc
4. 测试结果
浏览器访问www.etiantian.com【注意,真实环境也有此IP,本次仅作实验用,记得恢复hosts文件】
关于日志的深入研究
1. 高并发可以写入缓存
access_log log/access_baobaotao.log main gzip buffer=32k flush=5s;
2. nginx访问日志的轮询处理(日志按天分割) -->推荐
缘由:指定的访问日志长时间写入会导致文件过大而无法分析,可以使用切割脚本
#!/bin/sh Dateformat=`date +%Y%m%d` Basedir="/usr/local/nginx" Nginxlogdir="$Basedir/logs" Logname="access_etiantian" [ -d $Nginxlogdir ] && cd $Nginxlogdir||exit 1 [ -f ${Logname}.log ] || exit 1 /bin/mv ${Logname}.log ${Dateformat}_${Logname}.log $Basedir/sbin/nginx -s reload
3.切割脚本添加到定时任务
crontab –e
00 00 * * * /bin/sh cut_nginx.sh &>/dev/null
关于日志收集的工具
自带:syslog rsyslog
开源:flume logstash scrible Awstats ELK