3月 122012
 

     cacti中syslog插件,是通过rsyslog或syslog-ng与mysql的交互,将日志存放到mysql数据库中,cacti中的syslog插件从mysql中检索查看日志数据。因此,首先要配置一台rsyslog与mysql的日志中心服务器来接收客户机的日志;其次,配置cacti的syslog插件,通过该插件检索与查询mysql中的日志。可以收集来自linux、windows等服务器和交换机路由器的日志。做到集中和分类查看。

说下软件环境
os:centos6.2×86
cacti-0.8.7i-PIA-3.1.tar.gz
syslog-v1.22-2.tgz
settings-v0.71-1.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数据库里 
yum install -y rsyslog rsyslog-mysql
下面我们要对rsyslog进行设置
vi /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,并设置rsyslog开机启动

chkconfig rsyslog on
service rsyslog restart

B.使用syslog-ng

syslog-ng在默认的源里没有,可以编译安装,在这里我用yum安装syslog-ng
首先添加一个第三方源

rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
yum install -y syslog-ng



安装好后我们配置syslog-ng

vi /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数据库里
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
保存退出,我们赋予执行权限
chmod +x /sbin/syslogtomysql
上面的mysql -u syslog (syslog为用户名 密码为syslogpwd,数据库名为syslog)
我们执行
/sbin/syslogtomysql &
再启动syslog-ng
/etc/init.d/syslog-ng start
写好后我们把这个脚本写到开机启动里
vi /etc/rc.local
添加如下
/sbin/syslogtomysql &
设置syslog-ng开机启动
chkconfig syslog-ng on

至此syslog的设置完成

syslog-ng和rsyslog的设置就说到这里,基本都是差不多,不过rsyslog好设置一点不用独立写脚本就成。在centos6以上版本中也可以用syslog-ng来接收日志。以下的安装步骤就一样了。

2.配置syslog的数据库

 
mysql -uroot -p
create database syslog;
GRANT ALL ON syslog.* TO cactiuser@localhost IDENTIFIED BY 'cactifans.org; quit;
设置的数据库名:syslog 用户名:cactiuser 密码:cactifans.org 可以自行设定
 

3.安装syslog插件

由于syslog依赖settings插件,所以安装syslog插件之前先安装settings插件

先安装settings插件

wget http://docs.cacti.net/_media/plugin:settings-v0.71-1.tgz -O settings.tgz 
tar zxvf settings.tgz -C /var/www/html/plugins 
chown -R apache:apache /var/www/html/plugins/settings

再安装syslog插件

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
接下来我们进行一下配置
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;
}
.......
可以看到以上设置$use_cacti_db = false;这个是设置syslog是否要使用cacti的数据库,我在这里不使用cacti的数据,因为syslog往往比较多,日志比较多,为了便于备份和使用,还是选择用一个独立的数据库。因此要在下面设置连接数据库的用户名,密码,数据库名等。设置好后我们打开cacti,点console——Plugin Management,可以看到syslog还没有被启用,先启用settings插件,再启用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(具体位置可能有所不同)
*.*     @192.168.0.111
 @后面为你的cacti服务器IP地址
 设置完毕后重启syslog或者sysklog服务,并在防火墙上允许upd 514端口
 
 如果用的是rsyslog可以在rsylog的配置文件里添加如下(配置文件一般为rsyslog.conf)
 *.*       @@192.168.0.111:514
 @@后面为你的cacti服务器IP地址一般端口为514
 
设置完毕后重启rsyslog服务,并在防火墙上允许upd 514端口
 
通过以上设置就可以把服务器的所有日志发送到cacti服务器
 
B.网络设备
logging 192.168.0.111
在设备上指定logging 为cacti的服务器就成了。(设备不通设置方法可能有所不同,可以参考设备说明书)
 
网络设备包括路由器,防火墙交换机。这样就可以在cacti里看到接受到的日志
 
效果图
 
 
syslog可以接受到防火墙,路由器,交换机,服务器的日志,并自动分为7个等级,并用不通的颜色表示,看起来直观,也做到的日志的集中收集与查看.另外还可以在cacti里对的setting里对syslog插件进行一些设置。
本人菜鸟一个,如有错误之处,欢迎大家指正.
打赏
 Posted by at 下午 8:55

  45 Responses to “Cacti插件详解——Syslog”

  1. 在centos5.5及以下系统上,系统默认有syslog,可以发送日志,但不能接受日志
    博主,这句话有点不妥啊,syslog可以设置接收远端日志的。、
    #vim /etc/sysconfig/syslog
    SYSLOGD_OPTIONS=”-m 1 -r” #接收远端日志写入

  2. 在客户端使用rsyslog,加入*.* @@{server_name}:514时,没有出现日志信息,经查,如果服务器监听使用TCP,那么就使用二个@,UDP则使用一个@即可,测试通过。

  3. syslog 只能显示本机的日志,防火墙,路由器的日志都不能显示

  4. 您好,不知是否有camm套件&snmptt的教學 ,感謝

  5. 按照上面的方法安装后,发现使能syslog后,点击syslog图标会报错:
    You are missing a dependency for Syslog, please install the ‘Settings’ plugin.
    cacti Version 0.8.7h
    插件支持版本:cacti-plugin-0.8.7h-PA-v3.0.tar.gz
    日志版本:syslog-v1.22-2.tgz
    cacti主机(物理机):centos 6.4 X64

  6. 您好!
    参照您的这篇文字,现在我的syslog-ng能够显示本机和交换机的日志了。现在有个问题想请教您,就是在syslog页面左边的主机列表中,本机显示为Linux主机的名字,而交换机则是以管理ip显示的,不是以交换机的名字显示的。我以前用rsyslog的时候,日志主机列表均显示为交换机的名字。这个问题如何解决呢?另外,当我取消交换机的日志发往syslog中时,如何删除syslog页面左边主机列表中的该交换机呢?
    由于不能上传截图,所以只能口述,不知楼主明白没。
    希望能得到你的指点,谢谢!!!

  7. 請問,我執行 (/sbin/syslogtomysql &) 這一行時,會出現很多錯誤 (ERROR 1044 (42000): Access denied for user ‘cacti’@’localhost’ to database ‘syslog’)

    請問問題出在哪??

  8. 您好,請教一個問題,syslog顯示都正常,Send a Test Email可以送出測試信,但是alert的功能無法發出mail,不知是否有遇到這樣的問題

  9. vi /var/www/html/plugins/syslog/config.php
    在这步如果更改$use_cacti_db = true;为false;就会导致syslog插件无法安装
    2 使用系统默认的cacti数据库,其中的syslog表结构和syslog.sql中创建的syslog表结构不同,如果修改就会报错
    3 系统页面查询的是哪个表结构?syslog还是syslog_incoming?

  10. 原來帖子一直有版主回復,辛苦了,那我請教個問題:

    syslog接受日誌成功后,但受到的cisco日誌和linux日誌的priority是以數字1~7等級表達的,請問如何修改才能對應到英文顯示,并讓日誌按顏色區分。

    • 呵呵,这个又个设置,教程上的基本都有错的,rsyslog-mysql
      ### Configuration file for rsyslog-mysql
      ### Changes are preserved

      $ModLoad ommysql
      #*.* :ommysql:localhost,Syslog,rsyslog,
      $template cacti_syslog,”INSERT INTO syslog_incoming(facility, priority, date, time, host, message) values (‘%syslogfacility-text%’, ‘%syslogpriority-text%’, ‘%timereported:::date-mysql%’, ‘%timereported:::date-mysql%’, ‘%HOSTNAME%’, ‘%msg%’)”, SQL
      *.* >localhost,Syslog,rsyslog,
      ;cacti_syslog
      关键位置为%syslogfacility-text%,%syslogpriority-text%,这二个选项对了就可以了

  11. 麻烦问下博主,
    1.rsyslog想过滤本机的log应该怎么弄?
    我看到你的配置里有 *.* @127.0.0.1 514这样的配置
    但是我的配置文件里没有这个 localhost也没有 还是能收到一大堆这样的日志
    2.cacti的页面上能否使用通配符进行日志的匹配?我试过*号,好像不行

  12. 请教一下,我这边被监控端是ubuntu的服务器,只有syslog-ng服务,这个应该怎么配置呢,根据你的 *.* @hostIP 配置文件报错

  13. 请教如何将syslog自动备份到网络中的一台电脑中呢?

  14. centos6.8 设置ryslog后syslog页面可以采集到交换机信息,但是思科7609的采集到的是主机地址,没有主机名描述, h3c2000交换机采集的主机名显示的是2016 我看了下linux日志目录下的记录,应该跟正则或者php数据有关系,请问这个需要怎么改呢

  15. LZ 您好

    目前我遇到了一个非常诡异的问题,就是Cactifans集成的syslog插件收到的日志不全,但是我用基于windowns的syslog server就没有这个问题。 不知道楼主有没有遇到过这种情况

  16. 使用rsyslog 收集日志 在cacti 中 H3C 的设备的名都显示为2016 这个怎么解决

  17. 请问,我syslog安装完成后,没有本地日志??mysql中 syslog 都是空的

  18. 请问syslog 显示的主机名是IP 地址,怎样改成主机名

  19. syslog_incoming; 有数据,单cacti syslog 上没显示日志数据。。。

  20. 我的SYSLOG日志 缺少了 一部分数据,请看:
    正常情况下的日志:
    Aug 9 16:20:20 1.1.63.146 YZ-OA-S01: .Aug 9 16:21:10.002 Beijing: %SYS-5-CONFIG_I: Configured from console by xxxxx on vty0 (1.1.231.162)
    用syslog-ng后日志去掉了 前面一部分数据,如下:
    .Aug 9 16:27:43.652 Beijing: %SEC-6-IPACCESSLOGNP: list ssh_Per…………

    请问cacti的插件对message的数据是怎么处理的? 我改怎么修改?

  21. 补充:
    正常情况下日志:
    Msg: YZ-I-S01: 2017 Aug 9 16:51:51.370 Beijing: last message repeated 1 time
    syslog日志显示结果:
    2017 Aug 9 16:51:51.370 Beijing: last message repeated 1 time

    去掉了主机名。

Leave a Reply to sole Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)