CACTI - 简明教程 - 插件

Cacti 插件
最近更新: Mar 19 2008


Tool
Install
Ergonomy
Forum



详情 什么是 Cacti?
屏幕截图
必要条件
安装
插件
SNMP 客户端

Chinese translation by Tao Wei (韦涛).



⚠️⚠️⚠️
Please check our page about COVID-19!!
100 Questions and answers about Coronavirus.

⚠️⚠️⚠️
Merci de consulter notre page sur la COVID-19 !!
227 questions et réponses sur le Coronavirus.



Cacti 的一个很大的优势是它可以使用其它工具作为插件到它的网页界面上。这些插件将非常有用如果你想把一些软件相关的网络分组到一个界面上。
cactiusers.org 网页上,你可以找到并可以下载所有可用的插件。我们在这里介绍三个非常有用的插件: NTOP, syslog-ng 和 PHP Weathermap。


首先要做的是安装一个 mandatory 插件,它必须在安装其它插件前被安装,它被称为 "基础" 插件。

- 对于 Cacti 0.8.6i & j,它可以在 cactiusers.org 网页上被 下载 (1.1)。
- 对于 Cacti 0.8.6h, 它可以在我们的网页上被 下载 (1.0)。

如果你使用 apt (软件包安装) 安装 cacti,你可能知道你的 cacti 版本通过 "apt-cache policy cacti" 命令。

解压你刚刚下载的文件。

#tar -xvf /home/user/Desktop/cacti-plugin-arch.tar.gz
移动在这个你刚刚下载的 architecture 插件目录里的文件到包含 cacti 网站的目录去。

#cp /home/user/Desktop/cacti-plugin-arch/* /usr/share/cacti/site/ -R
#cd /usr/share/cacti/site/
然后运行下面的命令:
小心运行这个补丁来适合你的 cacti 版本。

对于 cacti-0.8.6h:

#patch -p1 -N < cacti-plugin-0.8.6h.diff
对于 cacti-0.8.6i:

#patch -p1 -N < cacti-plugin-0.8.6i.diff
对于 cacti-0.8.6j:

#patch -p1 -N < cacti-plugin-0.8.6j.diff


CACTI 插件:

1. NTOP (v 0.1) 2. PHP WEATHERMAP (v 0.82) 3. SYSLOG-NG (v 0.4)


1. NTop 插件

NTop 是一个提供网络使用的统计资料的工具。

cacti ntop plugin ip summary traffic    cacti ntop plugin all protocols throughput

#apt-get install ntop
下载这个插件 然后解压到 ntop 目录。

#tar -xvf /home/user/Desktop/ntop-0.1.tar.gz
复制这个 ntop 目录到 /usr/share/cacti/site/plugins/ 目录

#cp /home/user/Desktop/ntop /usr/share/cacti/site/plugins/ -R
我们必须编辑这个 /usr/share/cacti/site/include/config.php 文件并且在行头添加 "$plugins = array();":

$plugins[] = ‘ntop’;
运行 ntop

ntop -u user -w 3000
在 cacti 网页界面下,不要忘记启用 NTOP 插件:

登录到你的 cacti 界面 -> 在控制标签页上点击 -> 在 "Utilities" 选项上 点击 "User Management" -> 点击一个用户 -> 启用这个 "View NTop" 复选框。
cacti ntop plugin user management view ntop



2. PHP WEATHERMAP 插件

更多关于 PHP Weathermap 的信息,参考 PHP Weathermap 手册

下载这个插件 并解压到 weathermap 目录。在你下载的 Weathermap 的位置输入下列命令:

#tar -xvf /home/user/Desktop/php-weathermap-0.82.zip
复制 weathermap 目录到 /usr/share/cacti/site/plugins/ 目录

#cp /home/user/Desktop/weathermap/ /usr/share/cacti/site/plugins -R
我们必须编辑 /usr/share/cacti/site/include/config.php 文件并在行开头添加 "$plugins = array();":

$plugins[] = ‘weathermap’;
在 cacti 网页界面下,不要忘记启用这个 weathermap 插件:

登录到你的 cacti 界面 -> 点击 console 标签页 -> 在 "Utilities" 选项上点击 "User Management" -> 点击一个用户 -> 启用 "View Weathermaps" 复选框。
cacti php weathermap plugin user management configure weathermap

参阅 weathermap 手册 来获得配置这个工具的帮助。



3. SYSLOG-NG 插件 (0.4)

一个印象深刻的插件用于读取 syslog-ng 信息

cacti plugin php syslog-ng

你可以从界面上启动警报或是移除日志。

cacti plugin php syslog-ng alerts    cacti plugin php syslog-ng removal

关于 syslog-ng 的更多信息,阅读 php-syslog-ng 手册

下载这个插件 并解压到 haloe 目录。从你下载的 haloe 里输入下列命令:

#tar -xvf /home/user/Desktop/haloe-0.4.tar.gz
复制这个 haloe 目录到 /usr/share/cacti/site/plugins/ 目录

#cp /home/user/Desktop/haloe /usr/share/cacti/site/plugins/ -R
我们必须编辑 /usr/share/cacti/site/include/config.php 文件并在行开始处添加 "$plugins = array();":

$plugins[] = ‘haloe’;
如果你并没有它,你必须安装 syslog-ng 来发送它收集到的日志到 MySQL 数据库。

安装 syslog-ng:

#apt-get install syslog-ng
Syslog-ng 将卸载默认的 syslog 服务器。
我们必须配置 /etc/syslog-ng/syslog-ng.conf 文件

Syslog 改变

为了通过网络接收远程机器的日志,取消包含 udp() 的行标志 (也就是移除 #);

# use the following line if you want to receive remote UDP logging messages
# (this is equivalent to the "-r" syslogd flag)
udp();
发送日志到 MySQL 数据库。

在 /etc/syslog-ng/syslog-ng.conf 文件中添加下列内容:

log {
source(s_all);
destination(d_mysql);
};

# pipe messages to /var/log/mysql.pipe to be processed by mysql
destination d_mysql {
pipe("/var/log/mysql.pipe"
template("INSERT INTO syslog_incoming
(facility, priority, date, time, host, message, seq, status)
VALUES ( '$FACILITY', '$PRIORITY', '$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$HOST', '$MSG', '$SEQ', '$STATUS' );\n") template-escape(yes));

};
数据库设置。

我们需要创建这个 MySQL 数据库然后使用 sql 文件导入表。

#mysqladmin -u root -p create haloe
#mysql -u root -p haloe < /home/user/Desktop/haloe/syslog.sql
我们赋予一个叫 haloeuser 的新 MySQL 用户所有在 haloe 数据库上的权力:

#mysql -u root -p haloe
>GRANT ALL ON haloe.* TO haloeuser@localhost IDENTIFIED BY 'haloepassword';
>flush privileges;
在 /usr/share/cacti/site/plugins/haloe/config.php 文件里配置 MySQL 连接设定:

$haloedb_type = "mysql";
$haloedb_default = "haloe";
$haloedb_hostname = "localhost";
$haloedb_username = "haloeuser";
$haloedb_password = "haloepassword";
在同样的文件里,要在你的 syslog 插件里看到彩色行,你需要使用 "$haloe_colors" 改变下列行的行头:

$haloe_colors["emerg"] = "FF0000";
$haloe_colors["crit"] = "FF0000";
$haloe_colors["alert"] = "FF0000";
$haloe_colors["err"] = "FFAB00";
$haloe_colors["warning"] = "FFFF00";
$haloe_colors["notice"] = "FFAB00";
// $haloe_colors["info"] = "FFAB00";
// $haloe_colors["debug"] = "D0D0D0";
MySQL pipe 文件。

现在,我们必须创建临时的 MySQL 插入文件 (pipe 文件):

#mkfifo /var/log/mysql.pipe
我们必须使用一个 bash 脚本把这个日志放到数据库里:

创建一个新的文件并插入下列内容,保存这个文件作为 syslog2mysql.sh 在 /usr/share/cacti/site/plugings/haloe 目录。
不要忘记改变 MySQL 的用户名和密码。

#!/bin/bash

if [ ! -e /var/log/mysql.pipe ]
then
mkfifo /var/log/mysql.pipe
fi
while [ -e /var/log/mysql.pipe ]
do mysql -u haloeuser --password=haloepassword haloe < /var/log/mysql.pipe >/dev/null
done
这个脚本的含义是如果 mysql.pipe 文件不存在就创建它。
然后,既然 mysql.pipe 已存在,打开一个 MySQL 连接,然后发送这个数据库的 "buffered" 数据。

运行 syslog2mysql 脚本来看看是否一切都正常。如果有问题将显示错误。

#/usr/share/cacti/site/plugins/haloe/syslog2mysql.sh
使用 "Ctrl+C" 来停止这个脚本。

最后一步:

要不使用管理员帐户运行 syslog2mysql.sh 脚本,我们需要改变一个文件的拥有人:

#chown user /etc/cacti/debian.php
重要的是, www-data 用户, 换句话说是 apache 网页服务器用户, 有读取这个文件的权限。 通常,它已经有这个权限了:

#ls -l | grep debian.php
-rw-r----- 1 user www-data 557 2006-11-18 14:00 debian.php
在你选择的用户下运行这个 syslog2mysql.sh 脚本:

#su user
user@linux#/usr/share/cacti/site/plugins/haloe/syslog2mysql.sh
最后,我们需要配置两个 cron 工作。

crontab -e -u user
# when the computer boots, it starts automatically the syslog2mysql.sh script.
@reboot /usr/share/cacti/site/plugins/haloe/syslog2mysql.sh
# A command required to transfer the data stored
# into the syslog_incoming table to the syslog table. (every 1 minute)
# For an unknown reason this is not done automatically by the syslog plugin.
*/1 * * * * php5 -q /usr/share/cacti/site/plugins/haloe/syslog_process.php
这个 crontab 命令将更新 /var/spool/cron/crontabs/user 文件。

在 cacti 网页界面下, 不要忘了启用这个 syslog-ng 插件:

登录到你的 cacti 界面 -> 点击 console 标签页 -> 在 "Utilities" 选项上点击 "User Management" -> 点击一个用户 -> 启用 "View Syslog" 复选框。
cacti plugin php syslog-ng user management view syslog configure syslog alerts

页面顶部