目前日志服务暂不支持syslog数据不经过磁盘中转直接写入服务,不落盘的功能预计今年3月初提供,目前收集syslog日志只能使用磁盘中转,下面的步骤详细介绍了使用落盘方案收集syslog日志的方法。
Step 1: 安装rsyslog。
如果机器已经安装rsyslog,忽略这一步。
Step 2: 配置rsyslog。
在/etc/rsyslog.conf中根据需要修改配置,下面给一个例子:
module(load="imudp")
module(load="imtcp")
module(load="omfwd")
$WorkDirectory /var/spool/rsyslog # where to place spool files
$ActionQueueFileName fwdRule1 # unique name prefix for spool files
$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
$ActionQueueType LinkedList # run asynchronously
$ActionResumeRetryCount -1 # infinite retries if host is down
# 定义日志数据的字段
$template ALI_LOG_FMT,"%pri-text% %protocol-version% %timestamp:::date-rfc3339% %fromhost-ip% %app-name% %procid% %msgid% %msg%\n"
# 例1:使用udp接收远程syslog数据,并将udp收到的数据存到文件/var/log/remote_udp_514。
ruleset(name="remote_udp_514"){
action(template="ALI_LOG_FMT" type="omfile" file="/var/log/remote_udp_514")
}
input(type="imudp" port="514" ruleset="remote_udp_514")
# 例2:将本机的启动日志使用格式ALI_LOG_FMT记录到文件/var/log/boot.log
local7.* /var/log/boot.log;ALI_LOG_FMT
Step 3:启动rsyslog。
启动之前请先检查机器上是否安装了其他syslog的agent,比如syslogd、sysklogd、syslog-ng等,如果有的话请stop掉。
sudo /etc/init.d/rsyslog start
Step 4:设置logrotate。
以轮转日志文件/var/log/remote_udp_514和/var/log/boot.log为例子,在/etc/logrotate.d目录下新建文件rsyslog,加入以下内容:
/var/log/remote_udp_514 /var/log/boot.log {
rotate 5
size 100M
missingok
create
notifempty
sharedscripts
postrotate
service rsyslog restart >/dev/null 2>&1 || true
endscript
}
logrotate的目的主要是为了让日志文件达到一定大小的时候轮转,从而限制日志文件磁盘空间的使用。
如果发现日志没有轮转,请检查CRONTAB有没有设置。