Cacti插件详解——Syslog
cacti中syslog插件,是通过rsyslog或syslog-ng与mysql的交互,将日志存放到mysql数据库中,cacti中的syslog插件从mysql中检索查看日志数据。因此,首先要配置一台rsyslog与mysql的日志中心服务器来接收客户机的日志;其次,配置cacti的syslog插件,通过该插件检索与查询mysql中的日志。可以收集来自linux、windows等服务器和交换机路由器的日志。做到集中和分类查看。
Cacti 0.8.7g在CentOS5.5上的安装(1)
Cacti 0.8.7g在CentOS5.5上的安装(2)
由于我们此次安装的是集成PIA的cacti,因此不用单独安装PIA,安装好cacti以后要启用Plugin Management,然后我们下载syslog插件
1.设置接收日志
要想接收日志信息,并在cacti的syslog插件中显示接收到的日志,首先是接收日志,有二种办法:
1.使用syslog-ng,在centos5.5及以下系统上,系统默认有syslog,可以发送日志,但不能接受日志,因此要借助于syslog-ng,来接收发送过来的日志,并规范成一个模版,再通过自己写的脚本,插入到mysql数据库里
2.使用rsyslog,rsyslog是在centos6以上系统自带的,rsyslog不仅能接收日志,还可以发送日志,因此要是在centos6以上系统就不需要额外安装syslog-ng接收日志了,用自带的rsylog就可以接收日志,再用rsyslog-mysql就可以把接收到的日志写入mysql数据库
下面我分别说明:
A.使用rsyslog
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
|
B.使用syslog-ng
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来接收日志。以下的安装步骤就一样了。
2.配置syslog的数据库
1
2
3
|
mysql -uroot -p
create database syslog;
GRANT ALL ON syslog.* TO cactiuser@localhost IDENTIFIED BY 'cactifans.org; quit;
|
3.安装syslog插件
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了
4.被监控端设置
1
|
*.* @192.168.0.111
|
1
|
*.* @@192.168.0.111:514
|
1
|
logging 192.168.0.111
|