更新时间:2022-12-20 16:11:32浏览次数:534+次
本文介绍在Ubuntu 20.04 Linux系统上安装和配置Cacti的方法。当前Cacti提供了一个直观且易于使用的web界面,可用于小型LAN安装,也可用于具有数千台服务器和网络设备的复杂网络。
安装和配置Cacti服务器
在部署Cacti服务器之前,需要安装和配置Cacti的许多依赖项。本文将逐一介绍这些依赖项的安装:
1、更新系统并升级所有软件包
我们总是从服务器包升级开始,以避免任何依赖性问题:
sudo apt update
sudo apt upgrade -y
您可以在升级后重新启动服务器:
sudo reboot
2、安装php和所需模块
我们现在需要安装php和cacti所需的一些php模块。运行以下命令获取并安装所有内容:
sudo apt -y install apache2 php php-{mysql,curl,net-socket,gd,intl,pear,imap,memcache,pspell,tidy,xmlrpc,snmp,mbstring,gmp,json,xml,common,ldap}
sudo apt install libapache2-mod-php
最重要的模块是php-snmp和php-mysql。确保已安装。您可以使用以下命令检查php版本:
$ php -v
PHP 7.4.3 (cli)
更新PHP参数:
sudo vim /etc/php/*/apache2/php.ini
设置正确的时区:
date.timezone = "Asia/Shanghai"
更新内存限制:
memory_limit = 512M
还要调整每个脚本的最大执行时间:
max_execution_time = 300
配置完成最好重启一下。
3、配置Apache Web服务器
确保已安装Apache web服务器:
sudo apt install apache2
安装Apache后,只允许ProdServerTokens来配置基本安全性:
sudo vim /etc/apache2/conf-enabled/security.conf
更改第25行:
ServerTokens Prod
此指令将您返回的内容配置为服务器HTTP响应。有效选项为Full | OS | Minimal | Minor | Major | Prod。
设置服务器名称:
$ sudo vim /etc/apache2/apache2.conf
ServerName cacti.example.com
设置服务器管理员以在出现问题时接收电子邮件:
$ sudo vim /etc/apache2/apache2.conf
ServerAdmin adminuser@example.com
如果启用了ufw,请打开防火墙上的http和https端口:
$ sudo ufw allow http
Rule added
Rule added (v6)
$ sudo ufw allow https
Rule added
Rule added (v6)
进行这些更改后,需要重新启动apache web服务:
sudo systemctl restart apache2
4、安装和配置MariaDB数据库
运行以下命令在Ubuntu上安装MariaDB服务器:
sudo apt install mariadb-server -y
为Cacti调整MariaDB数据库。
在[mysqld]下添加以下设置:
$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
innodb_file_format=Barracuda
innodb_large_prefix=1
collation-server=utf8mb4_unicode_ci
character-set-server=utf8mb4
innodb_doublewrite=OFF
max_heap_table_size=128M
tmp_table_size=128M
join_buffer_size=128M
innodb_buffer_pool_size=1G
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16
innodb_io_capacity=5000
innodb_io_capacity_max=10000
innodb_buffer_pool_instances=9
注释掉本地上的其他设置:
#around line 116
#character-set-server = utf8mb4
#collation-server = utf8mb4_general_ci
重新启动mariadb服务:
sudo systemctl restart mariadb
要检查这些设置,请使用mysqlselect语句,例如:
$ sudo mysql -u root
MariaDB [(none)]> select @@tmp_table_size;
MariaDB [(none)]> exit
或:
MariaDB [(none)]> show variables like 'join_buffer_size';
数据库服务器安装完成后,您需要为Cacti创建一个数据库:
$ sudo mysql -u root -p
CREATE DATABASE cacti DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
GRANT ALL PRIVILEGES ON cacti.* TO 'cacti_user'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT SELECT ON mysql.time_zone_name TO cacti_user@localhost;
ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
FLUSH PRIVILEGES;
EXIT;
测试数据库连接:
$ mysql -u cacti_user -p
MariaDB [(none)]> show databases;
MariaDB [(none)]> \q
为cacti数据库用户设置mysql时区:
$ sudo su -
$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Enter password:
Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
5、在Ubuntu 20.04上安装SNMP和Cacti
最后一个软件包安装步骤是Cacti和snmp软件包。Cacti的功能依赖于Snmp和rrdtool工具。使用以下命令安装这些软件包:
sudo apt install snmp snmpd snmp-mibs-downloader rrdtool
当要求选择web服务器时,请选择Apache。
从github克隆项目:
$ sudo apt install git
$ git clone -b 1.2.x https://github.com/Cacti/cacti.git
Cloning into 'cacti'...
remote: Enumerating objects: 75698, done.
remote: Counting objects: 100% (1608/1608), done.
remote: Compressing objects: 100% (496/496), done.
remote: Total 75698 (delta 1155), reused 1536 (delta 1105), pack-reused 74090
Receiving objects: 100% (75698/75698), 127.92 MiB | 7.02 MiB/s, done.
Resolving deltas: 100% (56327/56327), done.
Updating files: 100% (3621/3621), done.
克隆Cacti存储库后,将文件移动到/var/www/html目录中:
sudo mv cacti /var/www/html
现在让我们预先填充cacti使用的数据库:
sudo mysql -u root cacti < /var/www/html/cacti/cacti.sql
填充数据库后,我们可以继续创建配置config.php文件,位于/var/www/html/cacti/include中:
sudo mv /var/www/html/cacti/include/config.php.dist /var/www/html/cacti/include/config.php
修改Cacti配置文件,并确保根据需要更改数据库设置:
$ sudo vim /var/www/html/cacti/include/config.php
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cacti_user';
$database_password = 'strongpassword';
6、配置SNMP
首先,通过注释/etc/snmp/snmp.conf上的以下行来启用MIB的加载:
sudo vim /etc/snmp/snmp.conf
改变:
mibs :
到:
# mibs :
通过编辑/etc/SNMP/snmpd.conf配置SNMP团体名称:
sudo vim /etc/snmp/snmpd.conf
启用本地主机的完全访问:
rocommunity MyCacti localhost
通过以下行注释禁用公共访问:
rocommunity public default -V systemonly
rocommunity6 public default -V systemonly
到:
# rocommunity public default -V systemonly
# rocommunity6 public default -V systemonly
重新启动snmpd服务:
sudo systemctl restart snmpd
使用snmpwalk命令行工具验证snmp配置:
$ sudo snmpwalk -v 2c -c MyCacti localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux ubuntu 5.4.0-73-generic
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1964) 0:00:19.64
SNMPv2-MIB::sysContact.0 = STRING: Me <me@example.org>
SNMPv2-MIB::sysName.0 = STRING: ubuntu
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.6 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.7 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.8 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
SNMPv2-MIB::sysORDescr.1 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.3 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (6) 0:00:00.06
记住用社区字符串的名称替换MyCacti。
7、在Ubuntu 20.04上配置Cacti服务器
设置Cacti目录权限:
sudo chown -R www-data:www-data /var/www/html/cacti
为Cacti创建systemd单位文件:
sudo tee /etc/systemd/system/cactid.service<<EOF
[Unit]
Description=Cacti Daemon Main Poller Service
After=network.target
[Service]
Type=forking
User=www-data
Group=www-data
EnvironmentFile=/etc/default/cactid
ExecStart=/var/www/html/cacti/cactid.php
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
触摸环境文件:
sudo touch /etc/default/cactid
现在启动并启用cacti服务:
sudo systemctl daemon-reload
sudo systemctl enable cactid
sudo systemctl restart cactid
检查cactid服务的状态:
$ systemctl status cactid
cactid.service - Cacti Daemon Main Poller Service
Loaded: loaded (/etc/systemd/system/cactid.service; enabled; vendor preset: enabled)
Active: active (running)
8、在web界面上启动初始Cacti设置
打开您最喜爱的web浏览器,从Cacti服务器上授权的客户端系统导航到“http://(Cacti server’s hostname or IP address)/cacti/”。
使用用户名admin和密码admin登录:
重置管理员密码:
勾选接受GPL许可协议,然后单击开始按钮继续:
Cacti将检查是否满足所有要求。您可能需要根据警告级别进行一些更改:
单击下一步按钮进入下一阶段。系统将要求您选择服务器安装类型:
New Primary Server–为主站点选择此选项。
New Remote Poller–远程轮询器用于访问主站点不易访问的网络。
由于这是我们的第一台服务器,请选择“New Primary Server”,然后单击下一步:
确认所有二进制文件都已找到,然后单击下一步:
请注意安装后需要具有只读权限的目录,然后单击下一步。完成所有其他步骤,包括模板设置,就可以进入到最后阶段了,再单击finish按钮以获取登录页面,完成安装。这里提醒一下,默认登录名为:
用户名:admin
密码:updated_Password
当提示更改管理员用户的密码时,请提供新密码并确认。然后,您将访问如下所示的Cacti界面:
9、监视本地Cacti服务器
添加本地Cacti服务器进行监控。以管理员身份登录Cacti,然后转到:控制台>设备>+(添加设备),英文路径为Console > Devices > + (Add device)。
填写服务器详细信息,然后向下滚动并单击保存按钮即可。
到这里,配置Cacti就算全面完成了。当然,用户也可以选择使用Cacti Spine poller等方案。