本教程将向您展示如何从源代码安装和配置Cacti网络监控工具,以确保您获得Debian 9上的最新版本,代号Stretch。
Cacti是一个基于web的网络监控工具,完全开源,旨在通过RRDtool显示网络和系统图形。它使用SNMP(简单网络管理协议)协议来收集和监控来自网络设备的网络流量,如交换机、路由器、Linux、Unix和Windows服务器或支持SNMP的其他类型的基于网络的设备。
必要条件
Debian 9在裸机或虚拟专用服务器上的最低安装配置。
为系统网络接口卡之一配置的静态IP地址。
通过sudo访问root帐户或具有root帐户权限的用户。
初始配置
在我们开始从源代码安装Cacti之前,首先要确保您的系统满足编译和安装Cacti的所有软件要求。第一步,以root权限打开Debian源代码列表文件进行编辑,并附加contrib和非自由存储库,如下面的文件摘录所示。
nano /etc/apt/sources.list
sources.list文件示例:
deb http://ftp.ro.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.ro.debian.org/debian/ stretch main
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main

编辑完文件后,通过发出以下命令保存并关闭文件,并更新系统存储库和软件包以包含新包。
apt update
apt upgrade

接下来,启动一个新命令,以安装一些必要的实用程序,这些实用程序将用于从命令行进一步管理您的系统。
apt install wget patch unzip zip bash-completion
Cacti是一个基于web的监控工具,主要用PHP服务器端编程语言编写。为了运行Cacti php文件脚本,必须在系统中安装并运行一个web服务器(如Apache HTTP服务器)和一个php解释器。为了安装Apache web服务器和PHP解释器以及Cacti正常运行所需的所有PHP模块,请在服务器控制台中发出以下命令。
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-snmp php7.0-xml php7.0-mbstring php7.0-json php7.0-gd php7.0-gmp php7.0-zip php7.0-ldap php7.0-mcrypt

安装Apache和PHP后,使用root权限发出以下命令,测试web服务器是否已启动并运行,并在端口80上侦听网络连接。
netstat –tlpn
如果您的Debian系统上默认未安装netstat网络实用程序,请执行以下命令进行安装。
apt install net-tools
通过检查netstat命令输出,您可以看到apache守护进程正在侦听端口80上的传入网络连接。

如果您的系统上启用了防火墙,例如UFW防火墙应用程序,您应该通过发出以下命令添加一条新规则,允许HTTP流量通过防火墙。
ufw allow WWW
或者
ufw allow 80/tcp
最后,通过HTTP协议访问Debian机器IP地址,测试Apache web服务器默认网页是否可以在客户端浏览器中显示,如下图所示。如果您不知道您的机器IP地址,请执行“ifconfig”或“IP a”命令。此设置中的我的IP是:http://192.168.1.14

在下一步中,我们需要对PHP默认配置文件进行一些进一步的更改,以确保file_uploads变量已启用,PHP时区设置已正确配置并与您的系统物理位置匹配。打开/etc/php/7.0/apache2/php.ini文件进行编辑,并确保以下行设置如下。
file_uploads = On
date.timezone = Europe/London
通过以下链接查阅PHP文档提供的时区列表,将时区变量相应地替换为您的物理时区http://php.net/manual/en/timezones.php
完成所需更改后,创建一个php信息文件,并通过发出以下命令重新启动apache守护进程以应用更改。
echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php
systemctl restart apache2
通过以下URL(如下图所示)从浏览器访问PHP-info脚本,检查PHP时区是否已正确配置。向下滚动到日期设置以检查php时区设置。
http://192.168.1.14/info.php

Cacti监控工具将配置和收集的数据存储在RDBMS数据库中。在本教程中,我们将使用MariaDB数据库后端配置Cacti。发出以下命令安装MariaDB数据库和访问mysql数据库所需的PHP模块。
apt install mariadb-server php7.0-mysql

安装MariaDB后,通过运行netstat命令验证守护进程是否正在运行,并监听localhost端口3306上的网络连接。
netstat –tlpn | grep mysql
然后登录MySQL控制台,通过发出以下命令保护MariaDB根帐户。
mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit

下一步,通过执行Debian Stretch存储库中的安装包提供的脚本mysql_secure_installation来保护MariaDB。运行时,该脚本将询问一系列问题以保护MariaDB数据库,例如:更改MySQL根密码、删除匿名用户、禁用远程根登录和删除测试数据库。通过发出以下命令执行脚本,并确保您对所有问题都键入yes,以完全保护MySQL守护进程。除作为指南外,请使用以下脚本输出。
sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
为了测试MariaDB的安全性,请尝试在没有root密码的情况下从控制台登录数据库。如果没有为root帐户提供密码,则应拒绝访问数据库。如果提供了密码,则登录过程应授予MySQL控制台,如下图所示。
mysql -h localhost -u root
mysql -h localhost -u root –p

登录MariaDB数据库后,继续创建一个用于Cacti安装的数据库,并通过发出以下命令创建用于管理Cacti数据库的用户。相应地替换仙人掌数据库用户和密码。
create database cacti;
grant all on cacti.* to 'cacti_user'@'localhost' identified by 'cacti_pass';
flush privileges;
exit
此外,通过发出以下命令,为MySQL时区的cacti数据库用户授予选择权限。这是安装和运行Cacti最新版本的新要求。
mysql -u root -p mysql < /usr/share/mysql/mysql_test_data_timezone.sql
mysql -u root -p -e 'grant select on mysql.time_zone_name to cacti_user@localhost'

在下一步中,打开MySQL服务器默认配置文件,并附加以下行,如下面的示例所示。
nano /etc/mysql/mariadb.conf.d/50-server.cnf
在50-server.cnf文件的底部添加以下行:
max_heap_table_size = 98M
tmp_table_size = 64M
join_buffer_size = 64M
innodb_buffer_pool_size = 485M
innodb_doublewrite = off
innodb_additional_mem_pool_size = 80M
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16

为了应用我们迄今为止所做的所有更改,请重新启动MySQL和Apache守护进程,并通过发出以下命令验证守护进程是否正在运行。
systemctl restart mysql apache2
systemctl status mysql apache2
配置SNMP服务
Cacti web监控服务使用SNMP协议来收集设备数据和统计数据。为了在本地Debian 9系统中安装SNMP程序、SNMP守护进程服务和SNMP MIBS,请以root权限发出以下命令。
apt install snmp snmpd snmp-mibs-downloader

此外,安装行业标准的数据记录工具RRDtool,Cacti使用该工具显示图形功能。
apt install rrdtool

接下来,编辑SNMP配置文件/etc/SNMP/SNMP.conf,并在“mibs”行前面添加一个标签(#)来注释该行,如下图所示。

还可以通过打开snmpd.conf文件进行编辑、搜索和更新以下行来配置SNMP守护进程远程和本地主机访问,如下所示:
nano /etc/snmp/snmpd.conf
取消注释线路以监听所有接口上的连接
agentAddress udp:161,udp6:[::1]:161

添加以下行,以允许通过SNMP_string密码对本地网络进行SNMP查询。相应地替换snmp社区字符串snmp_string密码和您的网络CIDR地址。
rocommunity snmp_string localhost
rocommunity snmp_string 192.168.1.0/25

您还可以选择修改联系人和位置变量,以提供有关服务器的信息。当您检查服务器详细信息时,此信息将显示在Cacti通知区域中。此外,您的系统主机名、内核版本和系统正常运行时间也显示在Cacti通知区域中。
要修改此信息,请编辑系统信息部分下的sysLocation和sysContact行,并添加您自己的值。默认情况下,为sysLocation和sysContact配置了以下值。

sysLocation Sitting on the Dock of the Bay
sysContact Me <me@example.org>
对snmpd.conf文件进行适当更改后,保存并关闭该文件,然后通过发出以下命令重新启动snmp守护进程以反映更改。然后检查snmpd守护进程状态和处于侦听状态的拥有端口。
systemctl restart snmpd.service
systemctl status snmpd.service
netstat -tulpn| grep snmp

打开SNMP的防火墙端口:
ufw allow 161/udp
为了验证SNMP守护进程是否按预期工作,并检索localhost内存树下的所有SNMP值,请运行以下命令。
snmpwalk -v 2c -c snmp_string localhost memory

安装Cacti Spine
Cacti Spine是默认cmd.php轮询器的替代品,它是用C编写的,以加快执行时间。为了从Debian 9的源代码编译和安装Cacti Spine pooler,首先,执行以下命令,将所有必需的依赖项安装到系统中。
apt install build-essential dos2unix dh-autoreconf help2man libssl-dev libmysql++-dev libmariadb-dev libmariadbclient-dev librrds-perl libsnmp-dev
接下来,使用wget实用程序下载最新版本的Cacti Spine tar压缩存档,解压缩tarball存档,并通过发出以下命令进入Cacti Spine解压缩目录。
wget https://www.cacti.net/downloads/spine/cacti-spine-latest.tar.gz
tar xfz cacti-spine-latest.tar.gz
cd cacti-spine-1.1.24/
现在,通过发出以下命令从源代码编译并安装Cacti Spine实用程序。
./bootstrap
./configure
make
make install
Cacti Spine将安装在/usr/local/Spine/system路径中。Spine建议您为Spine二进制文件设置SUID位,以支持ICMP ping请求。
chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine
您还必须通过编辑配置文件将Spine连接到Cacti数据库,如下面的文件摘录所示。
nano /usr/local/spine/etc/spine.conf
spine.conf文件示例。相应地替换凭据。使用与Cacti配置相同的数据库凭据。
DB_Host localhost
DB_Database cacti
DB_User user_cacti
DB_Pass pass_cacti
DB_Port 3306
DB_PreG 0

安装Cacti
为了从Debian 9中的源代码安装Cacti,首先,下载并解压缩最新版本的Cacti tarball压缩存档,然后通过发出以下命令将所有解压缩的文件复制到apache web根路径。
wget https://www.cacti.net/downloads/cacti-latest.tar.gz
tar xfz cacti-latest.tar.gz
cp -rf cacti-1.1.24/* /var/www/html/

在下一步中,打开cacti配置文件并更新以下行,以相应地反映MySQL cacti数据库用户名、密码、主机和URL路径,如下例所示。
nano /var/www/html/include/config.php
Cacti config.php文件示例:
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cacti_user';
$database_password = 'cacti_pass';
$database_port = '3306';
$database_ssl = false;
向下滚动并将路径变量从“/cati”更改为“/”
$url_path = '/';


接下来,您需要通过加载位于web服务器文档根位置的cacti.sql脚本来填充cacti数据库,并通过发出以下命令来验证cacti-mysql表。
mysql -u cacti_user cacti -p < /var/www/html/cacti.sql
mysql -u cacti_user cacti -p -e 'show tables'
最后,在开始从web界面安装Cacti之前,执行以下命令以删除Apache web服务器安装的默认index.html文件,为Cacti创建日志文件,并允许具有完全写入权限的Apache运行时用户访问Cacti安装路径。
rm /var/www/html/index.html
touch /var/www/html/log/cacti.log
chown -R www-data:www-data /var/www/html/
通过浏览器访问您的系统IP地址或域名并打开以下URL,开始通过web界面安装Cacti。
http://192.168.1.14/install
在第一个屏幕上选中接受GPL许可协议,然后点击下一步按钮继续,如下图所示。

在下一个屏幕上,向下滚动并验证安装程序是否通过了所有系统要求,然后点击“下一步”按钮继续安装过程。


接下来,选择“新建主服务器”作为安装类型,然后单击“下一步”按钮继续。

现在验证cacti安装程序是否正确检测到所有关键的二进制位置和版本。此外,您应该将Spine二进制路径更新为/usr/local/stree/bin/Spine。您可以选择经典主题,然后点击下一步按钮继续。

在下一个屏幕上,安装程序将验证Apache web根目录权限,以检查是否允许web服务器对cacti安装路径执行写入操作。如果所有必需的路径都是可写的,请点击“下一步”按钮继续。

从提供的列表中选择所有模板,然后点击“完成”按钮以完成安装。

完成安装过程后,使用以下默认凭据登录Cacti web界面,并用新的强密码替换管理员默认密码,如下图所示。
用户名: admin
密码: admin


登录Cacti web界面后,导航到控制台->配置->设置->轮询器,并将轮询器类型从cmd.php更改为spine-binary,如下图所示。向下滚动并点击“保存”按钮以应用更改。

然后导航到控制台->配置->设置->路径,更新Cacti Spine,并将配置文件路径设置为以下路径/usr/local/Spine/etc/Spine.conf,然后点击保存按钮应用配置,如下图所示。

要添加要通过SNMP监视的新设备,请转到控制台->管理->设备,然后点击+图标,如下图所示。出于演示目的,我们将添加由Cacti通过SNMP协议监控的本地主机。

对于将通过SNMP监视的新添加的Linux设备,添加设备的描述、主机名、FQDN或被监视设备的IP地址,并选择本地Linux机器作为设备模板。在SNMP选项中,选择正确的SNMP版本(在这种情况下,我们将使用版本2)并写入您的设备SNMP团体字符串,如下图所示。如果SNMP端口未更改,请将端口值保留为默认值,完成后,向下滚动并点击“创建”按钮,将设备添加到Cacti数据库中以进行监控。


将设备添加到Cacti数据库后,如果设备被正确检测和查询,SNMP摘要将显示在设备页面的顶部。要为此设备创建RRDTool SNMP图,请单击为此设备创建图链接,检查要进一步检查的图模板,然后点击创建按钮移动到下一个屏幕,然后再次点击创建按钮完成,如下图所示。



为了使图形可视化,请导航到控制台->管理->设备,检查要进一步执行操作的设备,然后从操作菜单中选择放置在树上(默认树)。

在新屏幕上,将Destination Branch保留为默认值,然后点击Continue按钮完成该过程,如下图所示。

最后,为了使Cacti poller开始收集有关被监控设备的数据,您需要添加一个新的cron作业,该作业将每5分钟通过SNMP查询一次设备。通过发出以下命令,添加由Apache运行时用户拥有和执行的计划作业。
crontab –u www-data –e
Crontab作业行:
*/5 * * * * /usr/bin/php /var/www/html/poller.php > /var/www/html/log/cron.log 2>&1

添加pooler cronjob后,等待大约半个小时,让Cacti有时间收集数据,然后导航到Cacti web界面中的Graphs选项卡。展开默认树,从您的受监控机器收集的图形应如下图所示显示。

目前,Cacti接口可以通过HTTP协议从客户端的浏览器以不安全的方式访问。有关设备的所有敏感信息以及仙人掌登录凭据都以纯文本形式发送。为了加密客户端浏览器和Cacti web界面之间的流量,请以root权限发出以下命令,以启用Apache SSL配置。
a2enmod ssl
a2ensite default-ssl.conf
systemctl restart apache2
然后,通过HTTPS协议导航到Cacti web界面。由于Apache web服务器使用自签名证书加密连接,因此浏览器中应显示错误消息。接受错误,您现在可以安全地访问Cacti web界面,如下图所示。

就这些!您已从Debian 9中的源代码成功安装并配置了Cacti。有关Cacti的其他自定义设置,请访问以下链接的文档页面https://docs.cacti.net/manual:100
-
扫码下载安卓APP
-
微信扫一扫关注我们
微信扫一扫打开小程序
手Q扫一扫打开小程序
-
返回顶部
发表评论