通过Rsyslog实现对Nginx日志发送至日志服务器

配置文件/etc/rsyslog.conf

local 1~7 –自定义的日志设备:

日志级别:

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

debug 0       –有调式信息的,日志信息最多
info 1        –一般信息的日志,最常用
notice 2      –最具有重要性的普通条件的信息
warning 3     –警告级别
err  4        –错误级别,阻止某个功能或者模块不能正常工作的信息
crit  5       –严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert  6      –需要立刻修改的信息
emerg 7       –内核崩溃等严重信息
none  8       –什么都不记录

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

执行脚本:

local3.*    ^/tmp/a.sh      # ^号后跟可执行脚本或程序的绝对路径
# 日志内容可以作为脚本的第一个参数.
# 可用来触发报警

转发到远程:

*.* @192.168.137.22            # 使用UDP协议转发到192.168.137.22的514(默认)端口
*.* @@192.168.137.22       # 使用TCP协议转发到192.168.137.22的10514端口

忽略,丢弃:

local3.*   ~    # 忽略所有local3类型的所有级别的日

过滤特定的日志到文件, 忽略(丢弃)包含某个字符串的日志

过滤日志, 由:号开头

:msg, contains, “error” /var/log/error.log
:msg, contains, “error” ~         # 忽略包含error的日志
:msg, contains, “user nagios”   ~
:msg, contains, “user kadefor”   ~
:msg, contains, “module-alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write” ~
local3.*    ~

# 注意:
&   ~    ### 忽略所有的日志

# 发送文件
$ModLoad imfile #装载imfile模块
$InputFileName /data2/logs/ssologs.log #读取日志文件
$InputFileTag quanag100.xyz: #日志写入日志附加标签字符串
$InputFileFacility local5 #日志类型
$InputFileSeverity info #日志等级
$InputFileStateFile ssologs.log_state #定义记录偏移量数据文件名
$InputFilePollInterval 1 #检查日志文件间隔(秒)
$InputFilePersistStateInterval 1 #回写偏移量数据到文件间隔时间(秒)
$InputRunFileMonitor #激活读取,可以设置多组日志读取,每组结束时设置本参数。以示生效。

接收队列

$WorkDirectory /data2/logs/ #定义工作目录。例如队列文件存储存储文件夹。
$MainMsgQueueType LinkedList #选择使用内存队列模式。
$MainMsgQueueFileName local5.main #如果队列模式使用内存模式,同时在配置这个参数,意味激活磁盘附加队列。
$MainMsgQueueHighWatermark 10000 #当内存队列达到这些元素时,开始回写磁盘。
$MainMsgQueueLowWatermark 1000 #当内存队列小于这些元素时,停止回写磁盘。
$MainMsgQueueMaxDiskSpace 20g #限制磁盘队列大小,参数疑似20GByte。
$MainMsgQueueMaxFileSize 200m #队列单文件尺寸大小。
$MainMsgQueueSaveOnShutdown on #在rsyslogd关闭时,要保存队列中数据。
$MainMsgQueueDiscardSeverity 8 #丢弃消息等级设定,数字越低丟的越多,设置8代表禁止丢弃消息。
$MainMsgQueueDiscardMark 1000000000 #超出10亿后,会禁止新消息入队,丢弃消息。
$MainMsgQueueTimeoutEnqueue 3000 #超时3秒,TCP或local_socket方式下,预防资源夯住,引起崩溃。
$MainMsgQueueDequeueBatchSize 500 #优化带宽,设置每批次传输元素量,尽可能每次传输更多的数据。

发送队列(可以部署多个)

$ActionForwardDefaultTemplate RSYSLOG_ForwardFormat #定义转发消息格式模板,使用系统默认转
$WorkDirectory /data2/logs/ #定义工作目录。例如队列文件存储存储文件夹。
$ActionQueueType LinkedList #选择使用内存队列模式。
$ActionQueueFileName local5.forward #如果队列模式使用内存模式,同时在配置这个参数,意味激活磁盘附加队列。
$ActionQueueHighWatermark 10000 #当内存队列达到这些元素时,开始回写磁盘。
$ActionQueueLowWatermark 1000 #当内存队列小于这些元素时,停止回写磁盘。
$ActionQueueMaxDiskSpace 20g #限制磁盘队列大小,参数疑似20GByte。
$ActionQueueMaxFileSize 200m #队列单文件尺寸大小。
$ActionResumeRetryCount -1 #失败后重试次数,-1 代表无限。
$ActionQueueSaveOnShutdown on #在rsyslogd关闭时,要保存队列中数据。
$ActionQueueDiscardSeverity 8 #丢弃消息等级设定,数字越低丟的越多,设置8代表禁止丢弃消息。
$ActionQueueDiscardMark 1000000000 #超出10亿后,会禁止新消息入队,丢弃消息。如果前一个被禁止,

那么丢弃数据将无针对性,如果

$ActionQueueTimeoutEnqueue 3000 #超时3秒,TCP或local_socket方式下,预防资源夯住,引起崩溃。
$ActionQueueDequeueBatchSize 500 #优化带宽,设置每批次传输元素量,尽可能每次传输更多的数据。
local5.* @@192.168.1.100;RSYSLOG_ForwardFormat #发送local5类型数据,以系统默认格式转发到目标服务器。
:rawmsg, contains, “access_log” ?DynFile;logformat    # 把rawmsg(也可以使用msg)日志中包含sdns_log标志的信息写到DynFile定义的日志文件里
:rawmsg, contains, “access_log”  ~                     # 这个表示丢弃包含sdns_log标志的信息, 一般都加上它, 以免多个日志文件记录重复的日志

实例

单一日志文件

日志服务器配置:

$EscapeControlCharactersOnReceive off
$ActionForwardDefaultTemplate RSYSLOG_ForwardFormat
$template RemoteLogs,"/var/log/nginx/%FROMHOST-IP%/nginx_access_log.%$year%-%$month%-%$day%"
local5.* ?RemoteLogs

客户端配置:

$ModLoad imfile
$InputFileName /usr/local/nginx/logs/nginx_access.log
$InputFileTag nginx_1:
$InputFileStateFile /nginx/pianyi.log
$InputFileSeverity info
$InputFileFacility local5
$InputRunFileMonitor
$InputFilePollInterval 1
$InputFilePersistStateInterval 1
$ActionQueueSaveOnShutdown on
local5.*        @@192.168.137.22

多个日志文件

客户端

客户端: /etc/rsyslog.conf

local5.*        @@192.168.204.150

/etc/rsyslog.d/web1.conf:

web1.conf:
$ModLoad imfile
$InputFileName /usr/local/nginx/logs/web1/web1_access.log
$InputFileTag nginx_1:
$InputFileStateFile /nginx/pianyi1.log
$InputFileSeverity info
$InputFileFacility local5
$InputRunFileMonitor
$InputFilePollInterval 1
$InputFilePersistStateInterval 1
$ActionQueueSaveOnShutdown on

/etc/rsyslog.d/web0.conf

$ModLoad imfile
$InputFileName /usr/local/nginx/logs/web/web_access.log
$InputFileTag nginx_0:
$InputFileStateFile /nginx/pianyi.log
$InputFileSeverity info
$InputFileFacility local5
$InputRunFileMonitor
$InputFilePollInterval 1
$InputFilePersistStateInterval 1
$ActionQueueSaveOnShutdown on

服务器端;

在/etc/rsyslog.d/nginx.conf追加下面

$EscapeControlCharactersOnReceive off
$ActionForwardDefaultTemplate RSYSLOG_ForwardFormat
$template RemoteLogs_ngx0,"/var/log/nginx0/%FROMHOST-IP%/nginx_access_log.%$year%-%$month%-%$day%"
:rawmsg,contains,"nginx_0:" ?RemoteLogs_ngx0
:rawmsg,contains,"nginx_0" ~ 
$template RemoteLogs_ngx1,"/var/log/nginx1/%FROMHOST-IP%/nginx_access_log.%$year%-%$month%-%$day%"
:rawmsg,contains,"nginx_1:" ?RemoteLogs_ngx1
:rawmsg,contains,"nginx_1" ~

在/etc/rsyslog.conf追加下面

$ModLoad imuxsock
$ModLoad imklog
$ModLoad immark
# Provides UDP syslog reception(配置udp接受日志)
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception(配置tcp接受日志)
$ModLoad imtcp
$InputTCPServerRun 514

results matching ""

    No results matching ""