本文主要是对“CentOS 6.7搭建Rsyslog日志服务器”进行整理,同时在本地进行环境搭建,验证在CentOS6.8上的正确性。php
1.1 清空iptableshtml
通常iptables不要限制对rsyslog端口(默认UDP,514)的访问就不会rsysylog形成影响,能够不用清。mysql
iptables -F #清空iptables策略
service iptables save #保存iptables策略配置
1.2关闭selinuxlinux
selinux老问题,过于严格可能会形成功能异常,将其关闭sql
setenforce 0
上边只是临时关闭,若是配置为启用状态则系统重启后selinux仍是启用,要完全关闭selinux到其配置文件/etc/selinux/config,将属性SELINUX的值修改成disabled数据库
yum install -y mysql-server mysql-devel libcurl-devel net-snmp-devel php php-gd php-xml php-mysql httpd rsyslog rsyslog-mysql
看这意思没什么问题,可是因为本机以前已零散地安装了这些东西,mysql还手动安装成了5.5,在执行此句时报冲突libXtst-1.2.3-1.el6.i686 is a duplicate with libXtst-1.2.2-2.1.el6.x86_64,直接跳过了apache
chkconfig --level 35 mysql on #配置mysql开机自启动;5.5及以前版本用mysql,5.6及以后版本用mysqld chkconfig --level 35 httpd on #配置apache开机自启动 service mysql start #启动mysql service httpd start #启动apache
mysqladmin -u root password "abcd1234" #abcd1234修改为你想要的密码
默认安装的5.1版本的mysqlroot默认密码应该为空能够直接这样修改密码,若是以前已配置密码,则要登陆mysql修改:服务器
update MySQL.user set password=PASSWORD('abcd1234') where User='root'; flush privileges;
编缉/etc/my.cnf配置以下(主要是各节区值为utf8的项):curl
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character_set_server=utf8 init_connect='SET NAMES utf8' default-character-set=utf8 [mysql] default-character-set=utf8 [mysql.server] default-character-set=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid default-character-set=utf8 [client] default-character-set=utf8
mysql5.1版本好像配置配置defalut-character-set就能够了,character_set_server参数5.5版本以后才有,不过多配上去也没关系。改完要重启mysql使配置生效socket
server mysql restart #5.6及以后版本使用mysqld
rsyslog的mysql数据库脚本默认文件是(版本相应修改):
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
可使用如下命令中确认其位置:
echo $(rpm -ql rsyslog-mysql | grep sql$)
导入数据库(输入密码):
mysql -u root -p < $(rpm -ql rsyslog-mysql | grep sql$)
能够看到导入后已建立syslog数据库
按原文讲syslog数据库默认不是utf8编码,因此要使用如下命令修改编码(但就我查看彷佛是utf8的,多执行一次无所谓)
mysql> use syslog #修改Syslog数据库的字符集 mysql> ALTER DATABASE `syslog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; #修改SystemEvents表的字符集 mysql> alter table systemEvents default character set =utf8; #修改SystemEventsPorperties表的字符集 mysql> alter table systemeventsproperties default character set =utf8;
查看修改后的结果:
#查看数据库的字符集设置 mysql> show variables like 'character%'; #查看systlog数据库全部表的字符集设置 mysql> use syslog; mysql> show table status from Syslog\G;
登陆mysql建立用于管理rsyslog的数据库用户rsyslog,下边只授予了其localhost登陆的权限,abcd1234改成本身想要的密码
mysql> grant all privileges on syslog.* to 'rsyslog'@'localhost' identified by 'abcd1234'; mysql> flush privileges;
cat > /etc/sysconfig/rsyslog << EOF # Options for rsyslogd # Syslogd options are deprecated since rsyslog v3. # If you want to use them, switch to compatibility mode 2 by "-c 2" # See rsyslogd(8) for more details SYSLOGD_OPTIONS="-c 2 -r -x -m 180" KLOGD_OPTIONS="-x" EOF
各参数详解:
-c 指定运行兼容模式。
-r 指定监听端口。 默认514
-x 在接收客户端消息时,禁用DNS查找。需和-r参数配合使用。
-m 标记时间戳。单位是分钟,为0时,表示禁用该功能。
编缉/etc/rsyslog.conf,在#### MODULES ####下添加前边两行,而后取消后边三行的注释
$ModLoad ommysql.so *.* :ommysql:localhost,syslog,rsyslog,abcd1234 #注:localhost表示本地主机,syslog为数据库名,rsyslog为数据库的用户,abcd1234为前边建立该用户时指定的密码 $ModLoad immark $ModLoad imudp $UDPServerRun 514
保存后重启rsyslog使配置生效
service rsyslog restart
开头说过iptables策略能够不用清,当若是确实不清为确保万一,执行如下命令开放TCP和UDP的514端口
iptables -I INPUT -p tcp --dport 514 -m comment --comment "accept for rsyslog" -j ACCEPT iptables -I INPUT -p udp --dport 514 -m comment --comment "accept for rsyslog" -j ACCEPT service iptables save
从Loganalyzer官网下载安装文件到/usr/local/src目录下,最新版本是4.1.6
cd /usr/local/src wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.6.tar.gz
cd /usr/local/src tar -zxf loganalyzer-4.1.6.tar.gz cd loganalyzer-4.1.6 mkdir -p /var/www/html/loganalyzer/ cp -r src/* /var/www/html/loganalyzer/ cp -r contrib/* /var/www/html/loganalyzer/
cd /var/www/html/loganalyzer/ touch config.php chmod 666 config.php
为配合LogAnalyzer对php环境的要求,修改/etc/php.ini中如下两项的值为:
memory_limit = 512M max_execution_time = 120
service iptables restart
httpd默认主路径为/var/www/html,如今loganalyzer目录为/var/www/html/loganalyzer,因此访问http://192.168.220.128/loganalyzer/进行配置
CentOS默认都会安装rsyslog,这里咱们以一台CentOS 7为例。CentOS 6和7配置都是同样的,只是启停命令有所改变
systemctl list-unit-files rsyslog.service #确认rsyslog是否开机自启动
systemctl enable rsyslog.service #若是没有则配置其开机自启动
systemctl status rsyslog.service #查看rsyslog状态
systemctl start rsyslog.service #若是rsyslog没启动,将其启动
编缉/etc/rsyslog.conf,在最后### begin forwarding rule ###和### end of the forwarding rule ###之间,新建一行追加远程日志服务器地址(我这是192.168.220.128,根据本身实际状况配置):
*.* @192.168.220.128
systemctl restart rsyslog.service
这样192.168.220.142的日志就会自动发送到192.168.220.128,192.168.220.128接收后就会自动存入syslog库。最后loganalyzer从syslog中读出而后在界面展示
如上图所示,Host列ls便是192.168.220.128,lsx便是192.168.220.142。
参考: