rsyslog服务端配置 centos6.4 x64系统 系统自带rsyslog 5.8版本
rsyslog 是一个 syslogd 的多线程增强版。
现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了
rsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件
###################################
#首先部署好lamp环境,详情见lamp安装文档
#更新系统时间 rsyslog-mysql是rsyslog把日志传送到mysql的一个模块
yum install ntp rsyslog-mysql -y
ntpdate cn.pool.ntp.org
#编辑配置文件
vim /etc/rsyslog.conf 取消下列三行的注释,并添加加载mysql模块信息。
$ModLoad immark # provides --MARK-- message capability
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # kernel logging (formerly provided by rklogd)
#####下面这2行是要添加的内容##### 123456是root用户登录mysql的密码
#加载mysql模块
$ModLoad ommysql
#定义插入的数据内容_(insertpl) 模板名称
$template insertpl,"insert into SystemEvents (Message, Facility, FromHost, FromIP, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslog
facility%, '%HOSTNAME%', '%fromhost-ip%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL
#如果日志内容包含下列括号中的内容, 则将日志写入到 /var/log/11.log 并退出,不继续后续操作
if $msg contains '(root) CMD (/usr/lib64/sa/sa1 1 1)' then /var/log/11.log
&~
#将所有日志写入到数据库_以下*.*表示所有类型的日志,mysql模块-数据库服务器-数据库-数据库用户名-密码-模板
*.* :ommysql:localhost,Syslog,root,123456;insertpl
#去掉下面两行的注释,接受客户端的日志, 开启514端口
$ModLoad imudp.so # provides UDP syslog reception
$UDPServerRun 514 # start a UDP syslog server at standard port 514
#添加mysql root密码
mysqladmin -u root password 123456
#导入数据库
cd /usr/share/doc/rsyslog-mysql-5.8.10/
mysql -uroot -p <createDB.sql
#检查数据库是否有相应数据
mysql -uroot -p
USE Syslog;
select * from SystemEvents;
#如果有数据,则表示成功
#创建rsyslog用户访问Syslog
grant all privileges on Syslog.* to rsyslog@localhost identified by "123456";
flush privileges;
exit
#重启rsyslog服务
service rsyslog restart
安装loganalyzer
##LogAnalyzer 是一个 syslog 和其他网络事件数据的 Web 前端工具,提供简单易用的日志浏览、搜索和基本分析以及图表显示。
下载源码包:
wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.5.tar.gz
tar zxvf loganalyzer-3.6.5.tar.gz
mkdir /var/www/html/syslog
cd /tmp/loganalyzer-3.6.5/src
cp -r * /var/www/html/syslog
cd /tmp/loganalyzer-3.6.5/contrib
cp * /var/www/html/syslog
cd /var/www/html/syslog
chmod +x *.sh
sh configure.sh && sh secure.sh
chmod 666 config.php
chown -R daemon.daemon *
登录web安装,http://ip地址/syslog 或者 http://ip地址/syslog/src
1:选择Click here
2:Enable User Database选择Yes,如果选择no将没有管理页面
点击NEXT时若报错,后台执行如下命令后继续
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
3:填写如下信息:Database Host:localhost
Database Port:3306
Database Name:Syslog
prefix:logcon_
Database User:root
Database Password:123456
Require user to be logged in 选择yes
4:选择next 设置登录用户名和密码
root 123456
5:next Source type: MYSQL Native
Select View: Syslog Fields
Database Name: Syslog
Database Tablename:SystemEvents
Database User: root
Database Password: 123456
next
finish ############完成安装配置
################ Linux客户端部署
1. vi /etc/rsyslog.conf
2. 在最后面添加:*.* @192.168.10.250
3. 保存退出,重启syslog服务
4. service syslog restart
5. 此时在服务器上就可以看到相关服务器的日志信息了
#修改LogAnalyzer 设定
###删除LogAnalyzer 初始化安装文件
###删除安装档install.php,或者设置该文件权限为只读
rm -rf install.php
###关闭分析页面中赞助信息
vi /var/www/html/syslog/include/functions_common.php
###将下行改为false
$content['SHOW_DONATEBUTTON'] = false; // Default = true!
###更换分析页面首页图标Logo
1. 首先将准备好的logo 放至images/main目录下。
2. 编辑include/functions_common.php
3. 修改如下路径:
$content['EXTRA_PHPLOGCON_LOGO'] = $content['BASEPATH'] .
"images/main/Header-Logo.png";
############### windows客户端部署
下载evtsys 64位
http://eventlog-to-syslog.googlecode.com/files/Evtsys_4.4.3_64-Bit.zip
打开文件双击运行 evtsys.exe,生成cfg配置文件
把所有文件复制C:\Windows\System32下
#开启evtsys服务
运行- cmd
cd c:\windows\system32
evtsys -i -s 10 -h 192.168.6.185 -p 514
net start evtsys
#查看服务器端验证效果
192.168.6.185/syslog
#rsyslog接收windows日志出现乱码
登录web界面,点击admin center 选择 Preferences
Default character encoding 改为UTF-8 即可
#######################################################
iptables策略
修改 iptables ,增加udp541端口出入,防止被人恶意破坏
服务端需添加rsyslog UDP 514端口以及loganalyzer TCP 80端口通过规则
iptables -A INPUT -p udp --dport 514 -j ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p TCP --dport 80 -j ACCEPT
客户端只需添加OUTPUT通过规则
iptables -P OUTPUT ACCEPT
rsyslog server端为被动获取数据,client端为主动发送数据
#######################################################
logrotate管理日志配置
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件更名或删除,并创建新的日志文件,我们把它叫做“转储”。
centos下logrotate配置文件路径:/etc/logrotate.conf
/etc/logrotate.d/ 下面放置自定义的一些配置文件
下面是redhat的logrotate.conf的具体内容
# see "man logrotate" for details
# rotate log files weekly
weekly
#每周rotate一次
# keep 4 weeks worth of backlogs
rotate 4
#保留前四周的log备份
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
使用轮换的日期为后缀
#建立新的log文件
# uncomment this if you want your log files compressed
#compress
#是否压缩log文件,需要压缩就去掉“#”符
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
#将/etc/logrotate.d目录下的文件读来执行rotate
# no packages own wtmp -- we'll rotate them here
/var/log/messages {
monthly
create 0664 root root
rotate 1
}
#上面一段时单对messages文件的rotate的配置
#每月rotate一次
#建新的log文件,权限设定为0664,文件拥有者root,群组为root
#保留前一个月的log备份
#也可以根据自己需求参照上面的配置来需要rotate的日志。
参数 功能
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).
logrotate命令
logrotate [-vf] logfile
-v 显示模式
-f 强制执行rotate
范例:
logrotate -vf /etc/logrotate.conf