使用两台虚拟机:
虚拟机10.10.10.200以下简称:(S) 作为数据库服务器+日志服务器 系统使用 "CentOS Linux release 7.8.2003 (Core)"
虚拟机10.10.10.206 以下简称:(C) 作为客服端 系统使用 "CentOS release 6.10 (Final)"
前面按照标准配置在(S)上
搭建Mysql服务器,
安装rsyslog-mysql rpm包,导入/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
在数据库上建立日志库管理账号,并使用常规授权对上述脚本生成的库Syslog进行管理(由于是mysql8.0+的版本,这里已经掉入坑里)
编辑/etc/rsyslog.conf
```
#### MODULES ####
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514 (打开日志服务器监听端口)
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514(打开日志服务器监听端口)
$ModLoad ommysql (加载日志传输至mysql模块)
#### RULES ####
*.info;mail.none;authpriv.none;cron.none :ommysql:<Mysql服务器IP地址>,Syslog(由/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql生成),<日志库管理账户名>,<日志库管理账户密码>
```
由于本人使用的(S) 既是数据库服务器又是日志服务器,所以此处设置之后本机的日志信息也存储至数据库中;
配置完成之后重启rsyslog服务
在(C) 上只需要在/etc/rsyslog.conf中设置
````
#### RULES ####
*.info;mail.none;authpriv.none;cron.none @<日志服务器IP地址>
````
这里前面的@符号是必须要添加的,由于(S)开启了监听端口514,故此时(C) 所产生的日志会成功发送到(S)。
建议关闭(S),(C)上的selinux及防火墙,以免不必要的困惑;
配置完成之后重启rsyslog服务
此时问题出现了,不管是在(S)还是在(C),产生的事件都无法在日志库Syslog生成信息;排查了所有的配置及语法;最后在(S)上运行
systemctl status rsyslog.service的时候发现如下代码:
````
systemctl status rsyslog.service
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-05-13 18:37:07 CST; 11s ago
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 62844 (rsyslogd)
Tasks: 9
CGroup: /system.slice/rsyslog.service
└─62844 /usr/sbin/rsyslogd -n
May 13 18:37:07 mysql_cloudclouded systemd[1]: Starting System Logging Service...
May 13 18:37:07 mysql_cloudclouded rsyslogd[62844]: [origin software="rsyslogd" swVersion="8.24.0-52.el7" x-pid="62844" x-...start
May 13 18:37:07 mysql_cloudclouded systemd[1]: Started System Logging Service.
May 13 18:37:07 mysql_cloudclouded rsyslogd[62844]: db error (2059): Authentication plugin 'caching_sha2_password' cannot b....el7]
May 13 18:37:07 mysql_cloudclouded rsyslogd[62844]: action 'action 0' suspended, next retry is Wed May 13 18:37:37 2020 [v8...007 ]
Hint: Some lines were ellipsized, use -l to show in full.
````
注意加粗部分,原来是日志库管理员账号的认证除了问题,在查阅了资料之后发现。
可以看到MySQL8.0.+版本默认的认证方式是caching_sha2_password ,而在MySQL5.7版本则为mysql_native_password。
个人猜测就是rsyslog或rsyslog-mysql不支持新的认证方法,导致了该错误。
这里提供2种解决方法,本人使用的是第二种;
1、修改/etc/my.conf配置文件将默认的认证方法改为老版本的
[mysqld]
default_authentication_plugin=mysql_native_password
并且重新授权日志库管理员
2、使用数据库root账号运行
ALTER USER 日志库管理账号 IDENTIFIED WITH mysql_native_password BY 密码;
至此,问题解决了,(S)能够正常存储(C)发送过来的日志信息,(S)本机的日志信息也能存储到Syslog库中;
网友评论