rsyslog分为服务端和客户端



客户端rsyslog配置文件配置

一下几条比较有用        

$ActionQueueType LinkedList   # use asynchronous processing 开启缓存队列

$ActionQueueFileName backup_local # set file name, also enables disk mode 如果客户端挂了,缓存队列写到本地backup_local这个变量上面已经定义了位置

$ActionResumeRetryCount -1    # infinite retries on insert failure

$ActionQueueSaveOnShutdown on

$ActionQueueMaxFileSize 50m   每个文件的大小为50m

$ActionQueueMaxDiskSpace  10g backup_local这个目录最大允许存放10G


local3.*;local4.*;local5.*;local7.*                     @@10.67.21.19:2000

@@为tcp协议传输,@为udp协议

local3为大的级别,下面分为error,info,debug,warn...级别

这个级别的日志传输到10.67.21.19的2000端口上


下面是客户端推送日志的脚本

#!/usr/bin/python

import syslog

import time

while True:

        now_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))

        syslog.openlog('test',syslog.LOG_PID,syslog.LOG_LOCAL3)  这里面定义了推送到rsyslog的级别

        syslog.syslog(syslog.LOG_INFO,'%s content 000000000000'%now_time)

        time.sleep(5)


服务端的配置

先看这块

local3.=alert               -?f_apache_saccess_2000;t_sae_output_2000

local3.=err                 -?f_apache_error_2000;t_sae_output_2000

local3.=warning             -?f_apache_warning_2000;t_sae_output_2000

local3.=notice              -?f_apache_notice_2000;t_sae_output_2000

#local3.=info                -?f_apache_access_2000;t_sae_output_2000

local3.=debug               -?f_apache_debug_2000;t_sae_output_2000


$ActionOMProgBinary /usr/local/sae/logparser/shell/web-access.sh

local3.=info                :omprog:;t_sae_output_2000

这上面的意思local3下的不同级别发送到这些的位置,以及格式是什么,omprog这个的意思是local3的info级别走/usr/local/sae/logparser/shell/web-access.sh去处理


f_apache_saccess_2000这个变量上面有定义,是指日志存放的路径的

$template f_apache_saccess_2000,     "/data1/saelog/%$year%-%$month%-%$day%/saccess/%msg:F,32:9%/%msg:F,32:8%-%msg:F,32:10%-saccess_log"

值得说明的是%msg:F,32:9%的含义,是日志内容以空格为分隔符的第9列


t_sae_output_2000这个变量的含义是输出后的日志格式

"%msg:2:$% %hostname%\n"的含义是从整个日志的第二个字符串开始取到最后 后面跟主机名



这样一个整个rsyslog日志传输的流程就走下来了