企业级Nginx增加日志选项
日志介绍
目的:将用户的访问信息记录到指定的文件中由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:\Windows\System32\drivers\etc
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
-------------------------------------------
个性签名: 所有的事情到最後都是好的,如果不好,那說明事情還沒有到最後~
本文版权归作者【小a玖拾柒】和【博客园】共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利!