笔者因毕设要求,从零开始搭rsyslog+mysql+loganalyzer日志服务器,本人不才,耗时两天才搭成功,中间走了不少弯路,网上已有的教程大多是CentOs下搭建的,在Ubuntu16.04下还是有些许不同,现在记录下搭建过程,相当于做个笔记。
(搭建环境:ubuntu16.04,rsyslog,mysql, php5.6(ubuntu自带的源是php7.0,下文会说),apache2,loganalyzer-3.6.5,由于身边暂时没有多余机器,先只搭建服务器,客户机随后再补充)
1.第一步:配置服务器rsyslog
安装rsyslog: sudo apt-get install rsyslog //不过一般Linux发行版本都会默认安装
打开其配置文件:sudo vim /etc/rsyslog.conf //没有vim的可以用别的编辑器,也可以通过apt-get下载
module(load="imudp")
input(type="imudp" port="514")//udp
module(load="imtcp")
input(type="imtcp" port="514")//tcp
并加上:(本身有的就不加)
$ActionFileDefaultTemplateRSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
$templateSpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
:programname, startswith,"spice-vdagent" /var/log/spice-vdagent.log;SpiceTmpl
重启rsyslog服务:sudo /etc/init.d/rsyslog restart
测试端口是否打开:sudo netstat -nultp|grep 514 //正常会出现如下画面
2.mysql
思路:
1、安装mysql服务器,且要安装rsyslog连接mysql的驱动
2、解决生成rsyslog服务器的日志特定的格式,
3、在rsyslog配置文件中加载连接mysql的模块,把日志存储到mysql中
具体步骤:sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
测试mysql是否安装成功 :sudo netstat -tap|grep mysql,成功画面入下
安装驱动:sudo apt-get install rsyslog-mysql
重启rsyslog: sudo /etc/init.d/rsyslog restart
设置mysql密码: sudo mysqladmin -u root password 123456 //用户名为root,密码123456
进入mysql: sudo mysql -u root -p 123456
mysql> show databases; 会显示已有的数据库,我的自动建了一个Syslog数据库,用来记录日志文件
mysql> use Syslog; #Syslog即是记录日志文件的数据库
如图所示
mysql> grant all on Syslog.* to 'syslogroot01'@'localhost' identified by '123456'; #设置用户访问数据库服务器中Syslog数据库的用户名和密码,主机localhost(我这里没别的机器,只拿本地主机做测试,若有客户机则可以把它localhost换成主机ip地址)上的用户syslogroot01,密码为123456
mysql> flush privileges; #重读授权表,及时生效
mysql>exit; //离开mysql服务
再sudo vim /etc/ryslog.conf打开rsyslog配置文件
添加 module(load="onmysql")
添加 *.* :ommysql:localhost,Syslog,syslogroot01,123456 //添加这行表示把所有的设施的所有日志都记录到数据库服务器中的Syslog数据库中,以syslogroot01为用户,123456密码访问数据库
重启rsyslog:sudo service rsyslog restart
(ps:如果有其他的客户机,把日志传输到日志服务器主机上,在客户机的rsyslog.conf里添加(若已有的就不加)
*.* @xxx.xxx.xxx.xxx #添加这行用于和服务器通信xxx.xxx.xxx.xxx是服务器主机的ip
*.* :ommysql:xxx.xxx.xxx.xxx,Syslog,syslogroot01,123456 #添加这行,这行表示把所有的设施的所有日志都记录到数据库 服务器中的Syslog数据库中,以syslogroot01用户,123456密码访问数据库
$templateSpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag%%syslogseverity- text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
:programname, startswith, "spice-vdagent" /var/log/spice-vdagent.log;SpiceTmpl)
记得每次修改配置文件之后都重启下sudo service rsyslog restart