共计 6462 个字符,预计需要花费 17 分钟才能阅读完成。
前言:
随着机房内的服务器和网络设备增加,日志管理和查询就成了让系统管理员头疼的事。
系统管理员遇到的常见问题如下:
1、日常维护过程中不可能登录到每一台服务器和设备上去查看日志;
2、网络设备上的存储空间有限,不可能存储日期太长的日志,而系统出现问题又有可能是很久以前发生的某些操作造成的;
3、在某些非法入侵的情况下,入侵者一般都会清除本地日志,清除入侵痕迹;
4、zabbix 等监控系统无法代替日志管理,无法监控如系统登录、计划任务执行等项目。
基于上述原因,在当前的网络环境中搭建一台用于日志集中管理的 Rsyslog 日志服务器就显得十分有必要了。
Rsyslog 服务的优点如下:
1、Rsyslog 服务器可以大多数的网络设备支持,在网络设备的系统设备选项中大多都有远程日志服务的配置选项。只需要填写上 IP 地址和端口(大多数设备已经默认是 514 了),然后确定就可以了;
2、Linux 服务器只需要在本地的 Rsyslog 服务配置中加入简单的一行就可以将日志发送到日志服务器,布署和配置起来十分简单;
3、通过软件(如 evtsys)也可以支持 Windows 服务器,布署和配置也不是很难,但是有些软件是要收费的;
4、搭配前端的 loganalyzer 等软件,可以轻松实现图形化管理和查询日志。
一、Rsyslog 服务器的安装与配置
1、清空 iptabels, 关闭 selinux 避免安装过中报错
清空 iptables
iptables -F
service iptables save
关闭 selinux
setenforce 0
vim /etc/selinux/conifg
将配置文件中的
SELINUX=enforcing
修改为:
SELINUX=disabled
2、yum 安装 LAMP 环境及 rsyslog、rsyslog mysql 支持模块
yum install -y mysql-server mysql-devel libcurl-devel net-snmp-devel php php-gd php-xml php-mysql httpd rsyslog rsyslog-mysql
3、设置 mysqld 和 httpd 开机启动,并启动服务
chkconfig mysqld on
chkconfig httpd on
service mysqld start
service httpd start
4、修改 mysql 的 root 密码
mysqladmin -u root password "你的密码"
修改密码后就可以使用如下命令登录 mysql
mysql -u root -p
5、修改 mysql 的配置文件,支持 uft8
因为通过 yum 安装的 mysql 是不支持 uft8 的,在收集 Windows 服务器的日志和某些支持中文的设备的情况下,收集到的日志无法正确显示,因此需要修改 mysql 配置文件支持中文显示。
配置文件全文如下:
[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
重启 mysqld 服务
service mysqld restart
6、导入 Rsyslog 数据库到 mysql
Rsyslog 的 mysql 数据库默认文件是:
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
在 rsyslog-mysql 相应版本的文件夹中
你可以使用下列命令中查询到:
echo $(rpm -ql rsyslog-mysql | grep sql$)
使用如下命令将文件导入到 mysql:
mysql -u root -p < $(rpm -ql rsyslog-mysql | grep sql$)
随后输入你在第 3 步中设置的 mysql 密码就可以导入数据库了,数据库名为:Syslog
7、设置 Rsyslog 数据库的字符集
上一步导入的数据库只有二个表: SystemEvents 和 SystemEventsProperties
Syslog 数据库及这二个表的默认字符集也不是 uft8,需要进行修改
# 修改 Syslog 数据库的字符集
mysql> ALTER DATABASE `Syslog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
# 修改相应数据表的字符集
mysql> alter table SystemEvents default character set =utf8;
mysql> alter table SystemEventsPorperties default character set =utf8;
查看修改后的效果:
# 查看数据库的字符集设置
mysql> show variables like 'character%';
# 查看 Systlog 数据库所有表的字符集设置
mysql> use Syslog;
mysql> show table status from Syslog\G;
8、创建 Rsyslog 数据库用户
登录 mysql 创建 Rsyslog 的数据库用户 logger
# 登录 mysql
mysql -u root -p
# 创建用户
mysql> grant all privileges on Syslog.* to 'rsyslog'@'localhost' identified by '147258';
mysql> flush privileges;
mysql> exit;
9、修改 rsyslog 配置文件
vim /etc/sysconfig/rsyslog
配置文件如下:
# 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"
各参数详解:
-c 指定运行兼容模式。
-r 指定监听端口。默认 514
-x 在接收客户端消息时,禁用 DNS 查找。需和 - r 参数配合使用。
-m 标记时间戳。单位是分钟,为 0 时,表示禁用该功能。
10、配置服务端支持 rsyslog-mysql 模块,并开启 UDP 服务端口
vim /etc/rsyslog.conf
在 #### MODULES #### 下添加这两行
$ModLoad ommysql.so
*.* :ommysql:localhost,Syslog,rsyslog,147258
注:localhost 表示本地主机,Syslog 为数据库名,rsyslog 为数据库的用户,147258 为该用户密码
取消下面三行注释
$ModLoad immark
$ModLoad imudp
$UDPServerRun 514
重启 rsyslog 服务:
service rsyslog restart
11、添加服务端 iptables 防火墙规则
如果服务端有需要配置 iptables 规则的话,执行如下命令开放 TCP 和 UDP 的 514 端口
iptables -I INPUT -p tcp --dport 514 -j ACCEPT
iptables -I INPUT -p udp --dport 514 -j ACCEPT
service iptables save
二、Loganalyzer 安装与配置
1、下载 Loganalyzer
从 Loganalyzer 官网下载安装文件到 /usr/local/src 目录下
最新版本是 4.1.3 稳定版本是:3.6.6
2、解压文件并复制源代码到 apache 的 loganalyzer 目录
cd /usr/local/src
tar -zxvf loganalyzer-4.1.3.tar.gz
cd loganalyzer-4.1.3
mkdir -p /var/www/html/loganalyzer/
cp -r src/* /var/www/html/loganalyzer/
cp -r contrib/* /var/www/html/loganalyzer/
3、生成空的配置文件并设置权限
cd /var/www/html/loganalyzer/
touch config.php
chmod 666 config.php
4、修改 php 环境
为配合 LogAnalyzer 对 php 环境的要求,请修改 /etc/php.ini 中的内容为:
memory_limit = 512M
max_execution_time = 120
5、创建 apache 日志目录
# mkdir -p /var/log/httpd/loganalyzer
6、配置 apache
这部分,请根据 apache 实际情况操作。以默认系统为例,虚拟主机配置文件都放在 /etc/httpd/conf/httpd.conf
配置文件修改如下:
Listen 80
ServerAdmin root@localhost
ServerName log_server:80
DocumentRoot "/var/www/html/loganalyzer"
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory "/var/www/html/loganalyzer">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/httpd/loganalyzer/error.log
LogLevel warn
CustomLog /var/log/httpd/loganalyzer/access_log combined
ServerSignature On
重启 httpd 服务
service httpd restart
7、Loganalyzer 初始化配置
在浏览器输入网址,进入安装向导
访问 http://serverip:80
一共 8 个步骤,这里只将需要修改的步骤列出,其余只需要”Next”即可
第 3 步:”Enable User Database”选择“Yes”;
第 4、5 二个步骤是指定用户数据库信息(数据库指定为:Syslog)和创建用户
第 7 步:”Source Type”选择“MYSQL Native”并在下载配置数据库信息
第 8 步 Finish 后,完成安装就可登录并查看日志信息了。
三、Linux 客户端配置
CentOS 默认都会安装 rsyslog。
1、确认 rsyslog 服务是否启动
chkconfig | grep rsyslog
如果没有设置为开机启动,执行如下命令:
chkconfig rsyslog on
service rsyslog start
2、配置 Rsyslog 客户端发送本地日志到服务端
vim /etc/rsyslog.conf
在末行添加一行:
*.* @192.168.7.201
注:192.168.7.201 为日志服务器端 IP 地址
3、重启 Rsyslog 服务
service rsyslog restart
这时在服务端刷新就可以看到相关日志信息了。
四、Windows 客户端配置
Loganalyzer 官网推荐在 Winodws 上使用 Winsyslog 来实现日志数据的收集和发送,但是这个软件是收费的。这里用一个开源的软件 Evtsys,但这个软件也有个问题无法在 Server 2012 以上的系统中使用,在 Server 2008 中是没有问题的
Evtsy 官网由于是布署在 google 服务器上的因此现在无法访问,可以到网上去搜索下载。
下载后的文件解压将里面的 evtsys.exe 文件放到 c:\windows\System32 目录下,然后运行 cmd 执行下面的命令:
evtsys -i -s 10 -h log-server-ip -p 514
net start evtsys
只要看到最后的安装成功即可。
以下附上命令的详细参数
Version: 4.4 (32-bit)
Usage: evtsys.exe -i|-u|-d [-h host] [-b host] [-f facility] [-p port]
[-s minutes] [-l level] [-n]
-i Install service
-u Uninstall service
-d Debug: run as console program
-h host Name of log host
-b host Name of secondary log host (optional)
-f facility Facility level of syslog message
-l level Minimum level to send to syslog.\n", stderr);
0=All/Verbose, 1=Critical, 2=Error, 3=Warning, 4=Info
-n Include only those events specified in the config file.
-p port Port number of syslogd
-q bool Query the Dhcp server to obtain the syslog/port to log to
(0/1 = disable/enable)
-s minutes Optional interval between status messages. 0 = Disabled
Default port: 514
Default facility: daemon
Default status interval: 0
Host (-h) required if installing.
这时在刷新 Loganalyzer 就可以看到相关日志了.
————————————– 分割线 ————————————–
CentOS 上配置 rsyslog 客户端用以远程记录日志 http://www.linuxidc.com/Linux/2015-02/112989.htm
CentOS 6.3 下利用 Rsyslog+LogAnalyzer+MySQL 部署日志服务器 http://www.linuxidc.com/Linux/2013-07/86956.htm
使用 rsyslog mysql 和 logAnalyzer 的日志服务器 http://www.linuxidc.com/Linux/2012-09/70717.htm
Rsyslog 配置及使用教程 http://www.linuxidc.com/Linux/2015-02/113614.htm
RHEL5.4 部署中央日志服务器之 rsyslog+loganalyzer http://www.linuxidc.com/Linux/2010-12/30801.htm
————————————– 分割线 ————————————–
Rsyslog 的详细介绍 :请点这里
Rsyslog 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-06/132418.htm