rsyslog收集nginx日志配置

简介:

rsyslog日志收集配置

rsyslog服务器收集各服务器的日志,并汇总,再由logstash处理

请查看上一篇文章 http://bbotte.blog.51cto.com/6205307/1613571 

客户端/发送端  web服务器

1
2
3
4
5
6
7
8
9
# yum install rsyslog -y
# vim /etc/rsyslog.conf
*.* @192.168.10.1:514
# vim /etc/bashrc                              #收集其他服务器的操作命令
export  PROMPT_COMMAND= '{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
# . /etc/bashrc
# crontab -e
* /1  * * * *  /bin/echo  ` date `
# service rsyslog restart


服务器/收集端  rsyslog收集,logstash服务器

1
2
3
4
5
6
7
8
9
10
11
# yum install rsyslog -y
# vim /etc/rsyslog.conf
$ModLoad imudp                                  #启用udp,514端口收集日志
$UDPServerRun 514
$template logformat, "%FROMHOST-IP% %structured-data% %timegenerated% %msg%\n"   #定义日志模板
$template DynFile, "/var/log/%$year%%$month%%$day%.log"                          #定义日志路径
:rawmsg, contains,  "CROND"  ?DynFile;logformat    #含有"CROND"日志,输出为/var/log/%$year%%$month%%$day%.log
:rawmsg, contains,  "CROND" 
# service rsyslog restart
# tail -f /var/log/20150212.log                 #查看crontab的log
# tail -f /var/log/messages                     #查看客户端输入的命令

 wKiom1Te4-XQsGLOAALgGQ3vQjw715.jpg

  

wKiom1Te4_biIFQGAAPf5ZZeBmg351.jpg

#rsyslog测试log传送完毕,下面是用rsyslog收集其他服务器日志:

1
2
# vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS= "-c 5 -Q -x"
1
2
3
4
5
6
# vim /etc/rsyslog.conf                         #把下面几行注释
#$template logformat,"%FROMHOST-IP% %structured-data% %timegenerated% %msg%\n"
#$template DynFile,"/var/log/%$year%%$month%%$day%.log"
#:rawmsg, contains, "CROND" ?DynFile;logformat 
# service rsyslog restart
#现在服务端收集客户端日志,并保存在/var/log各日志文件中,tail -f 查看

 

rsyslog其他配置选项

日志级别:

———————————————————————-

debug       –有调式信息的,日志信息最多

info        –一般信息的日志,最常用

notice      –最具有重要性的普通条件的信息

warning     –警告级别

err         –错误级别,阻止某个功能或者模块不能正常工作的信息

crit        –严重级别,阻止整个系统或者整个软件不能正常工作的信息

alert       –需要立刻修改的信息

emerg       –内核崩溃等严重信息

none        –什么都不记录

从上到下,级别从低到高,记录的信息越来越少


#过滤日志, 由:号开头

:msg, contains, “error” /var/log/error.log

:msg, contains, “error” ~         # 忽略包含error的日志

#如果要把不同服务器发送过来的日志保存到不同的文件, 可以这样操作:

:fromhost-ip, isequal, “192.168.10.2″ /var/log/host1002.log

:FROMHOST-IP, isequal, “192.168.10.3″ /var/log/host1003.log

 

#现在是要把web服务器的nginx日志收集到logstash服务器上,nginx原生不支持syslog,所以要打补丁

#为nginx打syslog补丁

#下面是nginx1.4.7版本,其他版本请查看此链接 https://github.com/splitice/nginx_syslog_patch 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# tar -xzf nginx-1.4.7.tar.gz
# cd nginx-1.4.7
# ./configure --user=www --group=www --prefix=/usr/local/nginx \
--with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module \
--with-pcre= /root/pcre-8 .35 --with-http_realip_module --with-http_image_filter_module  #这个是测试,我是把pcre-8.35解压到root目录
# make
# make install
#以上是安装nginx的步骤,下面打补丁
# git clone https://github.com/splitice/nginx_syslog_patch
# patch -p1 < /root/nginx-1.4.7/nginx_syslog_patch/syslog-1.4.0.patch
patching  file  src /core/ngx_cycle .c
patching  file  src /core/ngx_log .c
patching  file  src /core/ngx_log .h
patching  file  src /http/modules/ngx_http_log_module .c
patching  file  src /http/ngx_http_core_module .c
Hunk  #2 succeeded at 4895 (offset 2 lines).
Hunk  #3 succeeded at 4913 (offset 2 lines).
Hunk  #4 succeeded at 4952 (offset 2 lines).
patching  file  src /http/ngx_http_request .c
Hunk  #1 succeeded at 517 (offset -14 lines).
Hunk  #2 succeeded at 798 (offset -23 lines).
Hunk  #3 succeeded at 2002 (offset -23 lines).
# ./configure --user=www --group=www --prefix=/usr/local/nginx \
--with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module \
--with-pcre= /root/pcre-8 .35 --with-http_realip_module --with-http_image_filter_module \
--add-module= /root/nginx-1 .4.7 /nginx_syslog_patch/
# make
# make install
# /usr/local/nginx/sbin/nginx -V                             #查看编译的配置参数
nginx version: nginx /1 .4.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) 
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix= /usr/local/nginx  \
--with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module \
--with-pcre= /root/pcre-8 .35 --with-http_realip_module --with-http_image_filter_module \
--add-module= /root/nginx-1 .4.7 /nginx_syslog_patch/
# grep -v ^.*# /usr/local/nginx/conf/nginx.conf|sed '/^$/d'  #nginx配置
worker_processes  1;
syslog local6 nginx;
events {
     worker_connections  1024;
}
http {
     include       mime.types;
     default_type  application /octet-stream ;
     log_format  main   '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                       '"$http_user_agent" "$http_x_forwarded_for"' ;
     sendfile        on;
     keepalive_timeout  65;
     server {
         listen       80;
         server_name  localhost;
index index.html;
root  /var/www ;
access_log  syslog:notice|logs /host1 .access.log main;
error_log   syslog:notice|logs /host1 .error.log;
         error_page   500 502 503 504   /50x .html;
         location =  /50x .html {
             root   html;
         }
     }
}

 

#现在的话,nginx日志有3份,一份位于/usr/local/nginx/logs,一份在/var/log/messages里面,刷新nginx首页,查看日志

#当然,在syslog收集端也有一份nginx的访问日志

# tail -f /var/log/messages

#刷新下面页面,

http://192.168.10.1/index.html#/dashboard/file/logstash.json

wKiom1Te5V2hBpChAAPHTLmBq5E874.jpg

如果感觉这篇文章比较乱,那么请了解一些关于rsyslog的配置,以便更灵活的操控日志的收集,上面需要改动的是不同web服务器的nginx日志存储到不同的文件或目录,在logstash配置文件中稍微修改即可。

如果不希望为nginx打补丁的方式,可以参考下一篇文章 http://bbotte.blog.51cto.com/6205307/1615477 










本文转自 bbotte 51CTO博客,原文链接:http://blog.51cto.com/bbotte/1614453,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4天前
|
移动开发 前端开发 JavaScript
前端vue2、vue3去掉url路由“ # ”号——nginx配置(一)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
60 0
|
4天前
|
JavaScript 前端开发 应用服务中间件
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
26 0
|
4天前
|
弹性计算 应用服务中间件 Shell
切割 Nginx 日志文件
【4月更文挑战第28天】
23 0
|
4天前
|
前端开发 JavaScript 应用服务中间件
前端vue2、vue3去掉url路由“ # ”号——nginx配置(二)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
66 0
|
2天前
|
SQL 存储 Java
实时计算 Flink版产品使用合集之怎么配置日志的输出格式和文件大小
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
16 1
|
2天前
|
消息中间件 SQL 资源调度
实时计算 Flink版产品使用合集之 Flink on YARN 中使用滚动日志时配置不生效如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
13 0
|
3天前
|
负载均衡 应用服务中间件 nginx
解决nginx配置负载均衡时invalid host in upstream报错
在Windows环境下,配置Nginx 1.11.5进行负载均衡时遇到问题,服务无法启动。错误日志显示“invalid host in upstream”。检查发现上游服务器列表中,192.168.29.128的主机地址无效。负载均衡配置中,两个服务器地址前误加了&quot;http://&quot;。修正方法是删除上游服务器列表和proxy_pass中的&quot;http://&quot;。问题解决后,Nginx服务应能正常启动。
33 4
解决nginx配置负载均衡时invalid host in upstream报错
|
4天前
|
应用服务中间件 nginx
nginx配置集群轮训策略
nginx配置集群轮训策略
418 0
|
4天前
|
安全 网络协议 应用服务中间件
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
|
4天前
|
应用服务中间件 PHP nginx
php如何实现检测nginx配置的正确性
请确保在执行此操作时,PHP有足够的权限来执行Nginx命令和访问Nginx配置文件。另外,将上述代码嵌入到您的应用程序中时,要注意安全性,以防止潜在的命令注入攻击。
53 3