Syslog-ng3.5 & mysql 日志服务器

Syslog-ng3.5 & mysql 日志服务器

最近公司要做一个日志集中收集的日志服务器,所以有了这篇攻略。

1、安装部署

CentOS本身的yum源没有syslog-ng,所以需要先安装EPEL源

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
rpm -ivh epel-release-latest-6.noarch.rpm --force 

安装syslog-ng

yum install syslog-ng –y

启动syslog-ng服务

systemctl start syslog-ng

2、修改配置文件

yum安装的配置文件路径

vi /etc/syslog-ng/syslog-ng.conf

1. template是默认没有的,可以根据需要自己写
第一步
options里create_dirs()默认是no,修改成yes,就是是否能自动创建文件的意思
其他使用默认配置。

2. 配置source,也就是日志来源
日志来源
默认的s_sys中是syslog-ng自带的,system()用来收集系统产生的日志,internal()用来收集syslog-ng自己内部产生的日志。

配置的s_udp用来收集514端口上收到的udp消息(也支持tcp)(有防火墙的小伙伴一定要把UDP或TCP对应的端口号打开)

3. 配置目的地在这里插入图片描述
这里可以配置想要日志存放的地方,可以是文件,可以转发给其他的syslog,可以存数据库,也可以发给文件服务器…就说存数据库和文件吧。

file()里可以指定存放日志的位置和文件格式以及文件名。

program()配合pipe()可以直接把日志存到想存的数据库(需要提前准备好数据库和表)。

先创建好pipe文件 mkfifo /var/log/mysql.pipe。

program("/usr/bin/mysql -h127.0.0.1 -uxxxx -pxxxx database < /var/log/mysql.pipe")
database对应数据库名。

官方文档里也提供了sql()方法,但是试了下发现不能用,不知道是不是我的版本有问题。

syslog-ng提供了几个类似$HOST的变量,配置里可以使用,比如:

我想每天生成一个新的日志文件,并且通过HOST-LEVEL-20200110.log分成多个日志文件

5. 配置filter
在这里插入图片描述
过滤器支持正则,也支持 and ,not,or这种逻辑规则,默认的配置里已经演示过了

6. 配置log
在这里插入图片描述
这个就是把之前配置的destination啊,filter啊,source啊添加进来就好了,可以有多个。

然后重启syslog-ng

systemctl restart syslog-ng

3、测试一下

代码里就按照syslog日志的规则组装下UDP消息,发送到对应端口就好。
在这里插入图片描述
当然也可以集成到logback或log4j里,不过我写到aop里了,logger还是用来记录写异常信息好了,syslog用来记录比较关键的操作。

先康康文件里有没有
在这里插入图片描述
再来康康数据库里有没有
在这里插入图片描述
这里有3.5的官方文档,里面比较全

官方文档3.5

猜你喜欢

转载自blog.csdn.net/weixin_38045214/article/details/112648049