cacti中syslog插件,是通过rsyslog或syslog-ng与mysql的交互,将日志存放到mysql数据库中,cacti中的syslog插件从mysql中检索查看日志数据。因此,首先要配置一台rsyslog与mysql的日志中心服务器来接收客户机的日志;其次,配置cacti的syslog插件,通过该插件检索与查询mysql中的日志。可以收集来自linux、windows等服务器和交换机路由器的日志。做到集中和分类查看。
一、设置接收日志
要想接收日志信息,并在cacti的syslog插件中显示接收到的日志,首先是接收日志,有二种办法:
1.使用syslog-ng,在centos5.5及以下系统上,系统默认有syslog,可以发送日志,但不能接受日志,因此要借助于syslog-ng,来接收发送过来的日志,并规范成一个模版,再通过自己写的脚本,插入到mysql数据库里
2.使用rsyslog,rsyslog是在centos6以上系统自带的,rsyslog不仅能接收日志,还可以发送日志,因此要是在centos6以上系统就不需要额外安装syslog-ng接收日志了,用自带的rsylog就可以接收日志,再用rsyslog-mysql就可以把接收到的日志写入mysql数据库
二、安装syslog插件
cd /usr/local/nginx/html/cacti/plugins/ wget http://docs.cacti.net/_media/plugin:syslog-v1.22-2.tgz -O syslog.tgz tar xvf syslog.tgz chown -R www:www syslog cd syslog /usr/local/mysql/bin/mysql -e "create database syslog" /usr/local/mysql/bin/mysql syslog < syslog.sql /usr/local/mysql/bin/mysql -e "grant all privileges on syslog.* to cacti@'localhosst' Identified by 'cacti'" |
修改配置文件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 = 'cacti';
- $syslogdb_password = 'cacti';
- $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往往比较多,日志比较多,为了便于备份和使用,还是选择用一个独立的数据库。因此要在下面设置连接数据库的用户名,密码,数据库名等
三、配置rsyslog或syslog-ng
rsyslog:
yum install -y rsyslog rsyslog-mysql |
编辑/etc/rsyslog.conf
- $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,并设置开机启动
chkconfig rsyslog on service rsyslog restart |
syslog-ng:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm yum install -y syslog-ng |
编辑/etc/syslog-ng/syslog-ng.conf
- 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
新建bash /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
保存退出,
chmod +x /sbin/syslogtomysql nohup /sbin/syslogtomysql & echo "nohup /sbin/syslogtomysql &" >> /etc/rc.local /etc/init.d/syslog-ng start chkconfig syslog-ng on |
四、cacti主页启动syslog
点syslog前面的那个先下箭头的小原点,会出现如下图:
这里是对syslog数据的一些设置第分别为Database Storage Engine(数据库存储引擎)、Database Architecutre(数据库架构)这二项在一般默认,如果你的mysql数据库为5.1.6后者以上可以选择InnoDB Storage 和Partitioned Table,可以提高syslog的性能最后一项是Retention Policy(保留策略)就是要在syslog存储多长的时间,这个可以根据自己的需求设定,最后我们点install
就可以看到syslog已经安装,但是还没有启用,我们点那个绿色箭头就可以启用syslog
启用后我们可以看到syslog了
五、被监控端设置
linux服务器设置:
编辑/etc/syslog.conf
- *.* @192.168.1.100
添加以上配置,然后重启syslog服务,并打开upd 514端口
监控主机就会自动接收被监控端传过来的日志数据!