分享

Cacti插件详解——Syslog

 用勿龍潛 2012-11-21

Cacti插件详解——Syslog

说下软件环境
os:centos6.2×86
cacti-0.8.7i-PIA-3.1.tar.gz
syslog-v1.22-2.tgz
rsyslog-4.6.2-12.el6.i686
关于cacti的安装我这里就不详细讲了,可以在我的另外二篇文章

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

我用的是centos6.2使用的是rsyslog,配置下就可以用来接受日志。在centos5.5版本自带syslog,可是要收集日志就还要安装syslog-ng用来接受日志。另外还要安装rsyslog-mysql来把接受到的日志插入到mysql数据库里 
1
yum install -y rsyslog rsyslog-mysql
下面我们要对rsyslog进行设置
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,;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); };

加入后保存,退出。

我们需要写一个脚本把syslog-ng接受到的数据写入到mysql数据库里
1
vi /sbin/syslogtomysql
内容如下
1
2
3
4
5
6
7
8
9
#!/bin/bash
if [ ! -e /tmp/mysql.pipe ]; then
        mkfifo /tmp/mysql.pipe
fi
 
while [ -e /tmp/mysql.pipe ]
do
        mysql -u cactiuser --password= syslog < /tmp/mysql.pipe
done
保存退出,我们赋予执行权限
1
chmod +x /sbin/syslogtomysql
上面的mysql -u syslog (syslog为用户名 密码为syslogpwd,数据库名为syslog)
我们执行
1
/sbin/syslogtomysql &
再启动syslog-ng
1
/etc/init.d/syslog-ng start
写好后我们把这个脚本写到开机启动里
1
vi /etc/rc.local
添加如下
1
/sbin/syslogtomysql &
设置syslog-ng开机启动
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 '; quit;
设置的数据库名:syslog 用户名:cactiuser 密码: 可以自行设定
 

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
vi /var/www/html/plugins/syslog/config.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
......
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 = '';
        $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;
}
.......
可以看到以上设置$use_cacti_db = false;这个是设置syslog是否要使用cacti的数据库,我在这里不使用cacti的数据,因为syslog往往比较多,日志比较多,为了便于备份和使用,还是选择用一个独立的数据库。因此要在下面设置连接数据库的用户名,密码,数据库名等。设置好后我们打开cacti,点console——Plugin Management,可以看到syslog还没有被启用
 
我们点syslog前面的那个先下箭头的小原点,会出现如下图
 

 

这里是对syslog数据的一些设置第分别为Database Storage Engine(数据库存储引擎)、Database Architecutre(数据库架构)这二项在一般默认,如果你的mysql数据库为5.1.6后者以上可以选择InnoDB Storage 和Partitioned Table,可以提高syslog的性能最后一项是Retention Policy(保留策略)就是要在syslog存储多长的时间,这个可以根据自己的需求设定,最后我们点install
 

就可以看到syslog已经安装,但是还没有启用,我们点那个绿色箭头就可以启用syslog

启用后我们可以看到syslog了

 

4.被监控端设置

 
A.Linux服务器设置
 
如果系统用的是syslog或者sysklog可以添加如下到/etc/syslog.conf(具体位置可能有所不同)
1
*.*     @192.168.0.111
 @后面为你的cacti服务器IP地址
 设置完毕后重启syslog或者sysklog服务,并在防火墙上允许upd 514端口
 
 如果用的是rsyslog可以在rsylog的配置文件里添加如下(配置文件一般为rsyslog.conf)
1
 *.*       @@192.168.0.111:514
 @@后面为你的cacti服务器IP地址一般端口为514
 
设置完毕后重启rsyslog服务,并在防火墙上允许upd 514端口
 
通过以上设置就可以把服务器的所有日志发送到cacti服务器
 
B.网络设备
1
logging 192.168.0.111
在设备上指定logging 为cacti的服务器就成了。(设备不通设置方法可能有所不同,可以参考设备说明书)
 
网络设备包括路由器,防火墙交换机。这样就可以在cacti里看到接受到的日志
 
效果图
 
 
syslog可以接受到防火墙,路由器,交换机,服务器的日志,并自动分为7个等级,并用不通的颜色表示,看起来直观,也做到的日志的集中收集与查看.另外还可以在cacti里对的setting里对syslog插件进行一些设置。
本人菜鸟一个,如有错误之处,欢迎大家指正.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多