一、安装配置rsyslog
1、安装
yum install rsyslog logrotate

2、配置
vi /etc/rsyslog.conf
$ModLoad imuxsock #imuxsock是模块名,支持本地系统日志的模块
$ModLoad imklog #imklog是模块名, 支持内核日志的模块
#$ModLoad immark #immark是模块名,支持日志标记
$ModLoad imudp #imupd是模块名,支持udp协议
$UDPServerRun 514 #允许514端口接收使用UDP协议转发过来的日志
$ModLoad imtcp #imtcp是模块名,支持tcp协议
$InputTCPServerRun 514 #允许接收tcp 514的端口传来的日志
$ModLoad ommysql #加载mysql的模块
*.* @x.x.x.x #loganalyzer服务器地址,@@是TCP连接,@是udp连接

3、重启服务,配置生效
chkconfig –level 35 rsyslog on
service rsyslog restart

二、安装配置rsyslog的mysql,数据库里存放日志信息
1、安装
yum install mysql-server rsyslog-mysql

2、设置mysql的密码
mysqladmin -u root password passw0rd

3、修改mysql默认字符集为utf8
# 登录mysql
mysql -u root -p
mysql> show databases; #显示数据库服务器中没有日志的数据库
mysql> SHOW VARIABLES LIKE ‘character%’; #查看mysql目前使用的字符集
# 修改mysql字符集
vi /etc/my.cnf
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
init_connect=‘SET NAMES utf8’
[mysqld_safe]
default-character-set=utf8
# 重启mysql服务生效
chkconfig –level 35 mysqld on
service mysqld restart

4、建立rsyslog的库,并设置用户权限
# 编辑rsyslog数据库的sql脚本,使其默认字符集为utf8。
cd /usr/share/doc/rsyslog-mysql-5.8.10/
vi createDB.sql #第一行前面添加如下一行
SET NAMES ‘utf8’;
# 导入日志文件的sql脚本,生成日志文件的数据库
mysql -u root -p < createDB.sql
# 设置数据库权限
mysql> use Syslog; #Syslog即是记录日志文件的数据库
mysql> show tables; #查看Syslog的表
mysql> GRANT ALL ON Syslog.* TO sysloguser@localhost IDENTIFIED BY ‘syslogpass’; #设置用户访问的数据
mysql> FLUSH PRIVILEGES; #重读授权表,及时生效
mysql> \q #退出

三、安装配置loganalyzer日志分析工具的环境
1、安装httpd用来提供web服务,php使apache支持php,因为loganalyzer是用php编写,php-mysql用于loganalyzer连接数据库,php-gd用于绘图
yum install httpd php php-mysql php-gd

2、下载最新版loganalyzer
http://loganalyzer.adiscon.com
mkdir -pv /web/loganalyzer
cd ~
tar xvzf loganalyzer-4.1.5.tar.gz
cd loganalyzer-4.1.5
mv src/* /web/loganalyzer/
cd contrib/
mv ./*.sh /web/loganalyzer/

3、执行loganalyzer脚本
cd /web/loganalyzer/
bash configure.sh

4、修改apache配置文件
vi /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1:80
DirectoryIndex index.php index.html index.html.var
#DocumentRoot “/var/www/html" #注释掉默认存放网页文件的路径
DocumentRoot /web/loganalyzer #指定存放loganalyzer网页文件的路径

5、重启生效
chkconfig –level 35 httpd on
service httpd restart

6、创建loganalyzer的数据库,并授权
mysql> create database loganalyzer;
mysql> grant all on loganalyzer.* to lyzeruser@localhost identified by ‘lyzerpass’;
mysql> flush privileges;

四、WEB安装loganalyzer
1、打开浏览器:http://localhost

2、配置页面step3的时候
”Enable User Database”选择“Yes”
user database options里面配
database host localhost
database port 3306
database name loganalyzer
table prefix logcon_
database user lyzeruser
database password lyzerpass

3、配置页面step7的时候
”Source Type” 选择 “MYSQL Native”并在下载配置数据库信息
database type options里面配
database host localhost
database name Syslog
database tablename SystemEvents
database user sysloguser
database password syslogpass

4、添加显示IP功能
# 修改配置文件
vi /etc/rsyslog.conf
$template InsertIP,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID,SysLogTag, processid) values (‘%msg%’, %syslogfacility%, ‘%HOSTNAME%’, %syslogpriority%, ‘%timereported:::date-mysql%’, ‘%timegenerated:::date-mysql%’, %iut%, ‘%syslogtag%’, ‘%fromhost-ip%’)",SQL
#$template insertpl,"insert into SystemEvents (Message, Facility, FromHost, FromIP,Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (‘%msg%‘, %syslogfacility%,‘%HOSTNAME%‘, ‘%fromhost-ip%‘, %syslogpriority%, ‘%timereported:::date-mysql%‘, ‘%timegenerated:::date-mysql%‘, %iut%, ‘%syslogtag%‘)",SQL
*.* :ommysql:localhost,Syslog,sysloguser,syslogpass;InsertIP #sql语句一定要添加到此行之前
# 重启服务生效
service rsyslog restart
# 添加数据库表字段
mysql> USE Syslog;
mysql> ALTER TABLE SystemEvents ADD FromIP VARCHAR(60) DEFAULT NULL AFTER FromHost;

5、解决中文显示乱码
# 编辑网站里的include/functions_common.php文件,找到含有return htmlentities字段的行;
return htmlentities($myStr, ENT_NOQUOTES, $content[‘HeaderDefaultEncoding‘]);// “UTF-8″);
修改为:
return htmlentities($myStr, ENT_NOQUOTES, $content[‘HeaderDefaultEncoding‘], “UTF-8″);
注意小括号有去除,分号改逗号。
# 网页视图首选项改为utf8
admin center –>preference–>global options only 设置默认字符为utf-8

6、用processid 显示ip
然后再Admin center->FIELD—>processid->displayname 修改为IP

7、汉化界面
拷贝zh/目录到/web/loganalyzer/lang/下面

====================================
PS:
/etc/rsyslog.conf
#### GLOBAL DIRECTIVES ####定义全局日志格式的指令
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义日志格式默认模板
$IncludeConfig /etc/rsyslog.d/*.conf #载入rsyslog.d文件中所有以conf结尾的文件
#### RULES ####
*.info;mail.none;authpriv.none;cron.none /var/log/messages
#####记录所有日志类型的info级别以及大于info级别的信息到/var/log/messages,但是mail邮件信息,authpriv验证方面的信息和cron时间#任务相关的信息除外
authpriv.* /var/log/secure
#####authpriv验证相关的所有信息存放在/var/log/secure
mail.* -/var/log/maillog
#####邮件的所有信息存放在/var/log/maillog; 这里有一个-符号, 表示是使用异步的方式记录, 因为日志一般会比较大
cron.* /var/log/cron
####计划任务有关的信息存放在/var/log/cron
*.emerg * (*表示所有用户)
###记录所有的大于等于emerg级别信息, 以wall方式发送给每个登录到系统的人
uucp,news.crit /var/log/spooler
####记录uucp,news.crit等存放在/var/log/spooler
local7.* /var/log/boot.log
####本地服务器的启动的所有日志存放在/var/log/boot.log中

——————–
rsyslog有三部分组成:facility(设施),priority(级别),Target(路径)
facility: 设施,从功能或程序上对日志进行分类,并由专门的工具(facility)负责记录相应的日志信息;
###rsyslog.conf中日志规则的定义的格式
facitlity.priority Target
#facility: 日志设备(可以理解为日志类型):
auth #pam产生的日志,认证日志
authpriv #ssh,ftp等登录信息的验证信息,认证授权认证
cron #时间任务相关
daemon:守护进程相关
kern #内核
lpr #打印
mail #邮件
mark(syslog) #rsyslog服务内部的信息,时间标识
news #新闻组
user #用户程序产生的相关信息
uucp #unix to unix copy, unix主机之间相关的通讯
local 1~7 #用户自定义facility

——————–
#priority: 级别日志级别:

debug #7有调式信息的,日志信息最多
info #6一般信息的日志,最常用
notice #5最具有重要性的普通条件的信息
warning, warn #4警告级别
err, error #3错误级别,阻止某个功能或者模块不能正常工作的信息
crit #2严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert #1需要立刻修改的信息
emerg, panic #0内核崩溃等严重信息
###从上到下,级别从低到高,记录的信息越来越少,如果设置的日志内性为err,则日志不会记录比err级别低的日志,只会记录比err更高级别的日志,也包括err本身的日志。
指定级别的方式:
*: 所有级别
none: 没有级别
priority: 比此级别高的(包含)所有级别的日志信息都会记录
=priority: 仅记录指定级别
——————————
Target:
#文件, 如/var/log/messages
#用户, root,*(表示所有用户)
#日志服务器,@x.x.x.x
#管道 | COMMAND

# 示例
*.info;mail.none;authpriv.none;cron.none;local0.none;local1.none;local2.none;local3.none;local4.none;local5.none;local6.none;local7.none /var/log/messages
=================================
#修改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;

===============================
# vim /etc/rsyslog.conf
$ModLoad imfile
$InputFileName /var/log/httpd/access_log
$InputFileTag packetfence:
$InputFileStateFile stat-packetfence

$InputFileSeverity info
$InputFileFacility local5
$InputFilePollInterval 1
$InputFilePersistStateInterval 1
$InputRunFileMonitor
local5.* @192.168.1.106:514

File [/path/to/file]
被监控的文件必须是一个绝对路径

Tag [tag:]
用于文件消息标记会记录到日志标签上

Facility [facility]
设施:比如local1,local2,localN;默认是local0

Severity [syslogSeverity]
级别:比如info,warning…默认是notice

PersistStateInterval [lines]
被用来控制状态文件的持久化频率,测试阶段,可以把它设置的小点儿,正式阶段,出于效率的考虑,可以把它调大点儿,但是相应的也会出现丢失数据的潜在风险,
具体设置多少合适需要结合自己的情况来斟酌

===================================
在Client上执行以下操作,会记录用户在命令行执行的所有命令记录
# vim /etc/bashrc
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger “[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }’
# source /etc/bashrc

=============================
vim /etc/rsyslog.conf
$ModLoad ommysql
*.info;mail.none;authpriv.none;cron.none :ommysql:192.168.1.102,Syslog,rsysloguser,rsyslogpass
以上操作即可
说明
除mail、authpriv和cron之外的日志并且级别为info或者比info更高的都会被发送到远程192.168.1.102的数据库当中,后面是数据库的用户名和密码。
=======================================
grant all on Syslog.* to ‘syslogroot’@’10.141.133.44’ identified by ‘syslogpass’;

grant all on loganalyzer.* to lyzeruser@’10.141.133.44′ identified by ‘lyzeruser’;
$template insertpl,"insert into SystemEvents (Message, Facility, FromHost, FromIP, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (‘%msg%’, %syslogfacility%, ‘%HOSTNAME%’, ‘%fromhost-ip%’, %syslogpriority%, ‘%timereported:::date-mysql%’, ‘%timegenerated:::date-mysql%’, %iut%, ‘%syslogtag%’)",SQL
client端添加

/etc/rsyslog.conf
*.* @10.141.133.44
*.* :ommysql:10.141.133.44,Syslog,syslogroot,syslogpass
$template insertpl,"insert into SystemEvents (Message, Facility, FromHost, FromIP,Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (‘%msg%’, %syslogfacility%,’%HOSTNAME%’, ‘%fromhost-ip%’, %syslogpriority%, ‘%timereported:::date-mysql%’, ‘%timegenerated:::date-mysql%’, %iut%, ‘%syslogtag%’)",SQL

========================
去掉(Donate)按钮

vim /var/www/html/loganalyzer/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";
mysql> USE Syslog;
mysql> ALTER TABLE SystemEvents ADD FromIP VARCHAR(60) DEFAULT NULL AFTER FromHost;

uID => id, Date => devicereportedtime, Host => fromhost, Messagetype => infounitid, Message => message, Facility => facility, Severity => priority, Syslogtag => syslogtag, ProcessID => processid, Event ID => eventid, Eventlog Type => eventlogtype, Event Source => eventsource, Event Category => eventcategory, Event User => eventuser, SystemID => systemid, Checksum => checksum

在交换机上的配置:
华为的:
info-center loghost 1.1.1.1 facility local4 //local4要和rsyslog.conf 里配置的一致,1.1.1.1为你的syslog服务器地址记得要改啊
info-center loghost source Vlan-interface 100//你的网管VLAN接口,要改的
info-center source SHELL channel loghost log level notifications//我只想要操作日志,其他的不关心,如果你想要更多,请更改
思科的:
logging 1.1.1.1(配置 syslog服务器地址,可以定义多个)
service timestamps debug datetime localtime show-timezone msec
service timestamps log datetime localtime show-timezone msec (syslog 信息包含时间戳)
logging facility local4 (定义 facility 级别,缺省为local7,可以设置从 local0 到 local7)
logging trap warning (定义severity 级别缺省为 infor 级别)