syslog日志落盘收集方案

目前日志服务暂不支持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有没有设置。

Step 5: 将您的设备或者服务器的syslog日志数据通过udp或者tcp协议指向rsyslog agent。

Step 6: 接下来的步骤和用日志服务收集普通日志文件没有区别了,具体请参考文档:

  1. 服务端配置文档
  2. logtail使用文档
上一篇:DRDS实例性能评估分析


下一篇:单账户实时记账能力达2万笔每秒 蚂蚁启用新一代高性能记账引擎