企业级Nginx增加日志选项

日志介绍

目的:将用户的访问信息记录到指定的文件中由ngx_http_log_module模块负责

访问日志参数:

access_log:指定日志文件的路径和使用何种日志格式记录日志

log_format:用来指定日志的格式

可以放置标签段: main,http,server,location

image

日志格式

image

添加日志:

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之前)

image

2. 配置access_log(最好在虚拟主机里面配置,便于统计)

默认配置:#access_log  logs/access.log  main;

image

放置位置: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

image

4. 测试结果

浏览器访问www.etiantian.com【注意,真实环境也有此IP,本次仅作实验用,记得恢复hosts文件】

image

关于日志的深入研究

  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

posted @ 2018-07-11 18:49  小a玖拾柒  阅读(980)  评论(0编辑  收藏  举报