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日志传输的流程就走下来了