cacti中syslog插件,是通过rsyslog或syslog-ng与mysql的交互,将日志存放到mysql数据库中,cacti中的syslog插件从mysql中检索查看日志数据。因此,首先要配置一台rsyslog与mysql的日志中心服务器来接收客户机的日志;其次,配置cacti的syslog插件,通过该插件检索与查询mysql中的日志。可以收集来自linux、windows等服务器和交换机路由器的日志。做到集中和分类查看。
由于我们此次安装的是集成PIA的cacti,因此不用单独安装PIA,安装好cacti以后要启用Plugin Management,然后我们下载syslog插件
1.使用syslog-ng,在centos5.5及以下系统上,系统默认有syslog,可以发送日志,但不能接受日志,因此要借助于syslog-ng,来接收发送过来的日志,并规范成一个模版,再通过自己写的脚本,插入到mysql数据库里
2.使用rsyslog,rsyslog是在centos6以上系统自带的,rsyslog不仅能接收日志,还可以发送日志,因此要是在centos6以上系统就不需要额外安装syslog-ng接收日志了,用自带的rsylog就可以接收日志,再用rsyslog-mysql就可以把接收到的日志写入mysql数据库
下面我分别说明:
1
|
yum
install
-y rsyslog rsyslog-mysql
|
1
|
vi
/etc/rsyslog
.conf
|
1
2
3
4
5
|
$ModLoad imudp.so
$UDPServerRun 514
$ModLoad ommysql
$template cacti_syslog,
"INSERT INTO syslog_incoming(facility, priority, date, time, host, message) values (%syslogfacility%, %syslogpriority%, '%timereported:::date-mysql%', '%timereported:::date-mysql%', '%HOSTNAME%', '%msg%')"
, SQL
*.* >localhost,syslog,cactiuser,cactifans.org;cacti_syslog
|
然后保存,重新启动rsyslog,并设置rsyslog开机启动
1
2
|
chkconfig rsyslog on
service rsyslog restart
|
syslog-ng在默认的源里没有,可以编译安装,在这里我用yum安装syslog-ng
首先添加一个第三方源
1
2
|
rpm -Uvh http:
//dl
.fedoraproject.org
/pub/epel/5/i386/epel-release-5-4
.noarch.rpm
yum
install
-y syslog-ng
|
安装好后我们配置syslog-ng
1
|
vi
/etc/syslog-ng/syslog-ng
.conf
|
在文件最后加入如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
source
net {
udp();
};
destination d_mysql {
pipe(
"/tmp/mysql.pipe"
template(
"INSERT INTO syslog_incoming (host, facility, priority, date, time, message) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$MSG' );\n"
)
template-escape(
yes
)
);
};
log {
source
(net); destination(d_mysql); };
log {
source
(s_sys); destination(d_mysql); };
|
加入后保存,退出。
1
2
3
4
5
6
7
8
9
10
|
vi
/sbin/syslogtomysql
#!/bin/bash
if
[ ! -e
/tmp/mysql
.pipe ];
then
mkfifo
/tmp/mysql
.pipe
fi
while
[ -e
/tmp/mysql
.pipe ]
do
mysql -u cactiuser --password=cactifans.org syslog <
/tmp/mysql
.pipe
done
|
1
|
chmod
+x
/sbin/syslogtomysql
|
1
|
/sbin/syslogtomysql
&
|
1
|
/etc/init
.d
/syslog-ng
start
|
1
|
vi
/etc/rc
.
local
|
1
|
/sbin/syslogtomysql
&
|
1
|
chkconfig syslog-ng on
|
至此syslog的设置完成
syslog-ng和rsyslog的设置就说到这里,基本都是差不多,不过rsyslog好设置一点不用独立写脚本就成。在centos6以上版本中也可以用syslog-ng来接收日志。以下的安装步骤就一样了。
1
2
3
|
mysql -uroot -p
create database syslog;
GRANT ALL ON syslog.* TO cactiuser@localhost IDENTIFIED BY 'cactifans.org; quit;
|
1
2
3
|
wget http:
//docs
.cacti.net
/_media/plugin
:syslog-v1.22-2.tgz -O syslog.tgz
tar
zxvf syslog*.tgz -C
/var/www/html/plugins
chown
-R apache:apache
/var/www/html/plugins/syslog
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
vi
/var/www/html/plugins/syslog/config
.php
......
global $config, $database_type, $database_default, $database_hostname;
global $database_username, $database_password, $database_port;
/* revert
if
you dont use the Cacti database */
$use_cacti_db =
false
;
if
(!$use_cacti_db) {
$syslogdb_type =
'mysql'
;
$syslogdb_default =
'syslog'
;
$syslogdb_hostname =
'localhost'
;
$syslogdb_username =
'cactiuser'
;
$syslogdb_password =
'cactifans.org'
;
$syslogdb_port = 3306;
}
else
{
$syslogdb_type = $database_type;
$syslogdb_default = $database_default;
$syslogdb_hostname = $database_hostname;
$syslogdb_username = $database_username;
$syslogdb_password = $database_password;
$syslogdb_port = $database_port;
}
.......
|
就可以看到syslog已经安装,但是还没有启用,我们点那个绿色箭头就可以启用syslog
启用后我们可以看到syslog了
1
|
*.* @192.168.0.111
|
1
|
*.* @@192.168.0.111:514
|
1
|
logging 192.168.0.111
|