使用Rsyslog来收集常用日志

rsyslog 无论在性能还是部署上都优于其它日志收集应用,因系统自带,需要新功能只需要做升级即可,方便部署!

版本:syslog-8.16.0

download:http://rpms.adiscon.com/v8-stable

因rsyslog 默认工作目录是没有设置的,在生成statefile时会无法自动生成 ,我们需要在主配置文件中添加,也可以添加在子配置文件中

1
2
$WorkDirectory /var/lib/rsyslog
$PreserveFQDN on #如果需要获取主机名时,主机名中带有’.’,请设置,如主机名为:c1-b2c-shop-web01.bj

以下是收集单行日志示例(nginx access log为例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
module(load="imfile")    # if you want to tail files
module(load="omkafka") # lets you send to Kafka

#nginx access log
input(type="imfile"
File="/home/work/logs/nginx/*.log"
Tag="ngx_log_shopapi"
PersistStateInterval="1000"
reopenOnTruncate=“on

addMetadata="on"
)

template( name="general_log" type="string" string="%hostname% %fromhost-ip% %msg%”)

#nginx access log
if ($syslogtag == "ngx_log_shopapi") then {
action(
broker=["c3-b2c-b2cop-log-kafka01.bj:9092","c3-b2c-b2cop-log-kafka02.bj:9092","c3-b2c-b2cop-log-kafka03.bj:9092"]
type="omkafka"
topic="ngx_log_shopapi"
template="general_log"
confParam=["compression.codec=gzip"]
partitions.auto="on"
)
stop
}

注:
reopenOnTruncate=“on” #版本要求8.16.0以上,此配置是为了解决log rotate切割日志后不收集问题
详情见:https://github.com/rsyslog/rsyslog/issues/511

%fromhost-ip #版本要求在8.17.0之后会支持,imfile模块获取主机IP,主要用于docker容器
详情见:https://github.com/rsyslog/rsyslog/issues/545

以下是收集多行日志示例(php slow log为例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
module(load="imfile")    # if you want to tail files
module(load="omkafka") # lets you send to Kafka

#php slow log
input(type="imfile"
File="/home/work/logs/php/php-fpm.log.slow"
Tag="php_log_slow_v2"
PersistStateInterval="1000"
reopenOnTruncate="on"
addMetadata="on"
ReadMode="1"
escapeLF="on"
)

template( name="general_log" type="string" string="%hostname% %fromhost-ip% %msg%")

#php slow log
if ($syslogtag == "php_log_slow_v2") then {
action(
broker=["c3-b2c-b2cop-log-kafka01.bj:9092","c3-b2c-b2cop-log-kafka02.bj:9092","c3-b2c-b2cop-log-kafka03.bj:9092"]
type="omkafka"
topic="php_log_slow_v2"
template="general_log"
confParam=["compression.codec=gzip"]
#errorFile="rsyslog_err.log"
partitions.auto="on"
)
stop
}

参考文档 :
http://www.rsyslog.com/doc/v8-stable/

文章目录
,