centos5系列系统自带为syslog1.4.1
centos6系列自带rsyslog版本为5.8.10
centos7系列自带rsyslog版本为7.4.7
目前最新版rsyslog为8.22.0
rsyslog从8.5.0后对imfile模块进行重构,文件名中可以支持通配符。
因此,对rsyslog升级,体验一下通配功能。
安装很简单,安装之前有一些依赖问题要解决
##系统依赖
yum install -y zlib zlib-devel gcc uuid libuuid-devel libgcrypt-devel
##安装libestr
tar xvf libestr-0.1.9.tar.gz
cd libestr-0.1.9
./configure && make && make install
cp libestr.pc /usr/lib64/pkgconfig
不装这个模块,编译rsyslog时会报错
##安装libfastjson
yum install -y autoconf automake libtool
git clone https://github.com/rsyslog/libfastjson.git
cd libfastjson
sh autogen.sh
./configure
make
make install
cp libfastjson.pc /usr/lib64/pkgconfig
###安装json
tar xvf json-c-0.10.tar.gz
cd json-c-0.10
./configure && make && make install
cp ../json-c-0.10/json_object_iterator.h /usr/local/include/json/
##安装liblogging-stdlog
方法一:
yum install liblogging-stdlog-1.0.4-4.fc22.i686.rpm -y
方法二:
git clone https://github.com/rsyslog/liblogging.git
cd liblogging
autoreconf -fvi
./configure --disable-man-pages
make
make install
方法三:
编译rsyslog加参数 --disable-liblogging_stdlog
##安装rsyslog
tar zxvf rsyslog-8.22.0.tar.gz
cd rsyslog-8.22.0
./configure --prefix=/usr/local/ --disable-liblogging_stdlog
make && make install
因为我尝试安装liblogging-stdlog后,编译时仍报错“No package 'liblogging-stdlog' found”,因此在编译时选择加参数--disable-liblogging_stdlog
安装好以后就可以配置了,input部分如下:
注意:
1.input文件支持通配,通配的后状态文件State Files(跟踪文件的哪个部分已经被处理了)会出现重名不能被创建的问题,因此注释掉了此参数
2.通配符是被支持的在文件名字级别
配置好后启动时报错“无法加载imfile模块”
解决的方法--重新安装此模块:
cd /root/rsyslog-8.22.0/plugins/imfile
make && make install
这样就可以了,/opt/所有的.log结尾的日志文件就都可以上传到output端。
因为我的日志是上传到袋鼠云云日志服务端,因此需要配置模板,但是模板中的文件名是不支持通配的,因此所有/opt/*.log的日志文件,上传到云日志平台都显示模板中同一文件名。