日志分析 第二章 统一访问日志格式

网站的简版拓扑图

在开始搭建之前,先简单了解一下拓扑图

说明:网站入口是lvs+keepalived实现的高可用,后端两台nginx,将请求反向代理到后端web服务器的各个nginx之上,然后nginx交由php处理动态程序。

当然这只是一个简版图,实际环境中要比这复杂的多,分了各个频道,比如game频道,home频道,www频道以及gameapi频道等十几个频道,公司网站pv每天大概6000多万,加上如果加上节日活动等,pv最多达到过上亿。

我们filebeat收集日志只需要放在后端web服务器上即可,不必放在二级代理之上,放在二级代理上无法获得后端每个web服务器的主机名,后面grafana要用到主机名。我们只收集nginx访问日志,nginx错误日志和php错误日志。

工欲善其事必先利其器

开始搭建之前一定先规划好nginx访问日志格式以及日志存放目录。

我们规定日志存放目录为/data/logs目录

1 /data/logs
2 ├── nginx
3 │   ├── access_all.log
4 │   └── error.log
5 └── php
6     └── php_error.log

这是事先部署规划好的日志格式,其中10.80.2.139是这台主机的内网IP

1 log_format logstash '$server_name ' '10.80.2.139 ' '$http_x_real_ip ' '$remote_port ' '[$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' '$request_time ' '$upstream_response_time';

在每台后端web服务器修改好日志格式之后,还没完,一定要看看有没有加上日志切割,日志切割是通过logrotate实现的。

 1 nginx日志轮循
 2 # cat /etc/logrotate.d/nginx
 3 /data/logs/nginx/access_*.log /data/logs/nginx/error*.log {
 4     rotate 7
 5         daily
 6         missingok
 7         compress
 8         delaycompress
 9         notifempty
10         sharedscripts
11         postrotate
12                 [ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
13         endscript
14 }
 1 php日志轮循
 2 # cat /etc/logrotate.d/php
 3 /data/logs/php/php_error.log {
 4         rotate 7
 5         daily
 6         missingok
 7         compress
 8         delaycompress
 9         notifempty
10         sharedscripts
11         postrotate
12                 [ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
13         endscript
14 }

 

posted @ 2016-11-25 14:59 hexm 阅读(...) 评论(...) 编辑 收藏
联系我:xiaoming.unix@gmail.com