在Ubuntu 20.04系统上安装和配置Cacti的方法

本文介绍在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

在Ubuntu 20.04系统上安装和配置Cacti的方法

或:

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

在Ubuntu 20.04系统上安装和配置Cacti的方法

为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登录:

在Ubuntu 20.04系统上安装和配置Cacti的方法

重置管理员密码:

在Ubuntu 20.04系统上安装和配置Cacti的方法

勾选接受GPL许可协议,然后单击开始按钮继续:

在Ubuntu 20.04系统上安装和配置Cacti的方法

Cacti将检查是否满足所有要求。您可能需要根据警告级别进行一些更改:

在Ubuntu 20.04系统上安装和配置Cacti的方法

单击下一步按钮进入下一阶段。系统将要求您选择服务器安装类型:

New Primary Server–为主站点选择此选项。

New Remote Poller–远程轮询器用于访问主站点不易访问的网络。

由于这是我们的第一台服务器,请选择“New  Primary Server”,然后单击下一步:

在Ubuntu 20.04系统上安装和配置Cacti的方法

确认所有二进制文件都已找到,然后单击下一步:

在Ubuntu 20.04系统上安装和配置Cacti的方法

请注意安装后需要具有只读权限的目录,然后单击下一步。完成所有其他步骤,包括模板设置,就可以进入到最后阶段了,再单击finish按钮以获取登录页面,完成安装。这里提醒一下,默认登录名为:

用户名:admin

密码:updated_Password

当提示更改管理员用户的密码时,请提供新密码并确认。然后,您将访问如下所示的Cacti界面:

在Ubuntu 20.04系统上安装和配置Cacti的方法

9、监视本地Cacti服务器

添加本地Cacti服务器进行监控。以管理员身份登录Cacti,然后转到:控制台>设备>+(添加设备),英文路径为Console > Devices > + (Add device)。

填写服务器详细信息,然后向下滚动并单击保存按钮即可。

到这里,配置Cacti就算全面完成了。当然,用户也可以选择使用Cacti Spine poller等方案。

栏目相关文章