2

Cacti - 网络图形化解决方案 Ubuntu 下安装指南

 2 years ago
source link: https://os.51cto.com/article/702957.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Cacti - 网络图形化解决方案 Ubuntu 下安装指南
作者:聆听世界的鱼 2022-03-02 10:58:06
Cacti 有许多依赖项需要安装和配置,然后才能部署 Cacti 服务器本身。本指南将一一介绍这些依赖项的安装 。

Linux迷(www.linuxmi.com)喜欢探索各种网络和系统监控工具。Zabbix 的功能类似于 Cacti,但是 Cacti 更适合网络绘图。在本指南中,我们将了解如何在 Ubuntu 20.04/18.04 Linux 服务器上安装和配置 Cacti。

什么是Cacti?

Cacti 是一个完全开源的网络监控和绘图工具,被设计为行业标准数据记录工具 RRDtool 的前端应用程序。Cacti 利用 RRDTool 的数据存储和图形功能的强大功能。Cacti 的一些优秀功能包括:

  • 快速轮询指标
  • 支持多种数据采集方式
  • 支持高级图形模板
  • 使用 ACL 的用户管理功能
  • Cacti 提供直观且易于使用的 Web 界面,可用于小型 LAN 安装到具有数千台服务器和网络设备的复杂网络。

在 Ubuntu 20.04/18.04 上安装 Cacti 服务器

Cacti 有许多依赖项需要安装和配置,然后才能部署 Cacti 服务器本身。本指南将一一介绍这些依赖项的安装:

步骤 1:更新系统并升级所有软件包

我们总是从服务器包升级开始,以避免任何依赖问题:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt update
linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt upgrade -y

您可以在升级后重新启动服务器:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo reboot

第 2 步:安装 php 和所需的模块

我们现在需要安装 php 和 cacti 所需的一些 php 模块。运行以下命令以获取并安装所有内容。

linuxmi@linuxmi:~/www.linuxmi.com$ 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}

d9b579614c6d28880512176daa37a4e65f6237.jpg

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install libapache2-mod-php

b7ec5496413a661dda3818821ce17bf7ebdeb8.jpg

本文长期更新链接:https://www.linuxmi.com/ubuntu-20-04-cacti.html

最重要的模块是 php-snmp 和 php-mysql。确保它们已安装。您可以使用以下命令检查您的 php 版本:

linuxmi@linuxmi:~/www.linuxmi.com$ php -v
PHP 7.4.3 (cli) (built: Nov 25 2021 23:16:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

c96fc6305fb25690ea51008ec6263ca1b4e8e2.jpg

更新 PHP 参数:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/php/*/apache2/php.ini

63f8974303edb32c036106daed97cd80bc2d41.jpg

设置正确的时区:

date.timezone = Asia/Shanghai

更新内存限制:

memory_limit = 512M

还要调整每个脚本的最大执行时间:

max_execution_time = 300

重新启动 Apache Web 服务器

步骤 3:配置 Apache Web 服务器

确保已安装 Apache Web 服务器:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install apache2

安装 Apache 后,通过仅允许 Prod ServerTokens 来配置基本安全性。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/apache2/conf-enabled/security.conf

更改第 25行

ServerTokens Prod

该指令将您返回的内容配置为服务器 HTTP 响应。有效选项为 Full | OS | Minimal | Minor | Major | Prod。

184551816aa0a7243803697812b1969b7b41e1.jpg

设置服务器名称:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/apache2/apache2.conf
ServerName cacti.example.com

设置服务器管理员以在出现问题时接收电子邮件。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/apache2/apache2.conf
ServerAdmin [email protected]

如果您启用了 ufw,请在防火墙上打开 http 和 https 端口。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo ufw allow http
Rule added
Rule added (v6
linuxmi@linuxmi:~/www.linuxmi.com$ sudo ufw allow https
Rule added
Rule added (v6)

进行这些更改后,您需要重新启动 apache Web 服务:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl restart apache2

第 4 步:安装和配置 MariaDB 数据库

运行以下命令在 Ubuntu 上安装 MariaDB 服务器:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install mariadb-server -y

3648d3830b7d0bb7ff40688a7932c71677bd3e.jpg

为 Cacti 调整 MariaDB 数据库

在[mysqld]下添加以下设置:

linuxmi@linuxmi:~/www.linuxmi.com$ 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

b24364e67ed733160f1843c8afe5f95bc72a98.jpg

注释掉本地的其他设置

#character-set-server  = utf8mb4
#collation-server      = utf8mb4_general_ci

重启 mariadb 服务

linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl restart mariadb

要检查这些设置中的任何一个,请使用 mysql select 语句,例如

linuxmi@linuxmi:~/www.linuxmi.com$ sudo mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g
Your MariaDB connection id is 31
Server version: 10.7.3-MariaDB-1:10.7.3+maria~focal mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> select @@tmp_table_size;
+------------------+
| @@tmp_table_size |
+------------------+
|        134217728 
+------------------+
1 row in set (0.000 sec)
MariaDB [(none)]> 
Bye

5410e9265ac7842429b91352c8253bc9638ac6.jpg

MariaDB [(none)]> show variables like 'join_buffer_size';

本文长期更新链接:https://www.linuxmi.com/ubuntu-20-04-cacti.html

数据库服务器安装完成后,您需要为 Cacti 创建一个数据库:

linuxmi@linuxmi:~/www.linuxmi.com$ 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;

11148d2995c42339af59237d2802e9fbc8396d.jpg

测试数据库连接:

linuxmi@linuxmi:~/www.linuxmi.com$ mysql -u cacti_user -p
Enter password:  
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 34
Server version: 10.7.3-MariaDB-1:10.7.3+maria~focal mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| cacti              |
| information_schema |
| mysql              |
+--------------------+
3 rows in set (0.001 sec)
MariaDB [(none)]>

为 cacti 数据库用户设置 mysql 时区

linuxmi@linuxmi:~/www.linuxmi.com$ sudo su -
root@linuxmi:~# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Enter password:

第 5 步:在 Ubuntu 20.04/18.04 上安装 SNMP 和 Cacti

最后一个包安装步骤适用于 Cacti 和 snmp 包。Cacti 的功能依赖于 Snmp 和 rrdtool 工具。使用以下命令安装这些软件包:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install snmp snmpd snmp-mibs-downloader rrdtool

6762b9378869ef545d9177c442bea51be3cc38.jpg

当要求选择 Web 服务器时,选择 Apache。

从 github 克隆项目:

linuxmi@linuxmi:~/www.linuxmi.com$ git clone -b 1.2.x https://github.com/Cacti/cacti.git
正克隆到 'cacti'...
remote: Enumerating objects: 79755, done.
remote: Counting objects: 100% (5684/5684), done.
remote: Compressing objects: 100% (1850/1850), done.
remote: Total 79755 (delta 4481), reused 4928 (delta 3814), pack-reused 74071
接收对象中: 100% (79755/79755), 146.12 MiB | 908.00 KiB/s, 完成.
处理 delta 中: 100% (59642/59642), 完成.
正在更新文件: 100% (3638/3638), 完成.

e2e66ee957972fc25e515882357c64f56ec391.jpg

克隆 Cacti 存储库后,将文件移动到/var/www/html目录:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo mv cacti /var/www/html

现在让我们预先填充 cacti 使用的数据库:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo mysql -u root cacti < /var/www/html/cacti/cacti.sql

填充数据库后,我们可以继续在/var/www/html/cacti/include中创建config.php文件:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo mv /var/www/html/cacti/include/config.php.dist /var/www/html/cacti/include/config.php

32c8ca0833285d976ec897166b95e268319989.jpg

修改 Cacti 配置文件并确保根据需要更改数据库设置:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /var/www/html/cacti/include/config.php

48ece6e2455c91b81463846015576839a34540.jpg

本文长期更新链接:https://www.linuxmi.com/ubuntu-20-04-cacti.html

第 6 步:配置 SNMP

首先通过在 /etc/snmp/snmp.conf 上注释掉以下行来启用 MIB 的加载

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/snmp/snmp.conf

把 mibs 注释掉,如下图:

4319a21945dfa6b5343862074e0bef59b824c4.jpg

通过编辑 /etc/snmp/snmpd.conf 配置 SNMP community 名称

linuxmi@linuxmi:~/www.linuxmi.com$ sudo vim /etc/snmp/snmpd.conf

从 localhost 启用完全访问权限:

rocommunity MyCacti localhost

通过以下行评论禁用公共访问:

rocommunity public default -V systemonly
rocommunity6 public default -V systemonly
# rocommunity public default -V systemonly
# rocommunity6 public default -V systemonly

f95851032b45484b91e605f57e877203d1117d.jpg

重启 snmpd 服务:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl restart snmpd

使用 snmpwalk 命令行工具验证 snmp 配置:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo snmpwalk -v 2c -c MyCacti localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux linuxmi 5.16.0-051600-generic #202201092355 SMP PREEMPT Sun Jan 9 23:59:37 UTC 2022 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (2321) 0:00:23.21
SNMPv2-MIB::sysContact.0 = STRING: Me <[email protected]>
SNMPv2-MIB::sysName.0 = STRING: linuxmi
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (2) 0:00:00.02
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: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (2) 0:00:00.02

请记住将 MyCacti 替换为您的rocommunity字符串的名称。

a783f3824e0ad7ac7e229478447df5a73ddf2e.jpg

第 7 步:在 Ubuntu 20.04/18.04 上配置 Cacti 服务器

设置 Cacti 目录权限:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo chown -R www-data:www-data /var/www/html/cacti

为 Cacti 创建 systemd Unit单元文件:

a751849494a9a84a203067a6899ff2145cbc60.jpg

创建环境文件:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo touch /etc/default/cactid

现在启动并启用 cacti 服务:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl daemon-reload
linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl enable cactid
Created symlink /etc/systemd/system/multi-user.target.wants/cactid.service → /etc/systemd/system/cactid.service.
linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl restart cactid

检查cactid服务的状态:

linuxmi@linuxmi:~/www.linuxmi.com$ systemctl status cactid
● cactid.service - Cacti Daemon Main Poller Service
     Loaded: loaded (/etc/systemd/system/cactid.service; enabled; vendor preset>
     Active: active (running) since Sun 2022-02-27 17:18:35 CST; 1min 56s ago
    Process: 69143 ExecStart=/var/www/html/cacti/cactid.php (code=exited, statu>
   Main PID: 69148 (php)
      Tasks: 1 (limit: 4575)
     Memory: 17.4M
     CGroup: /system.slice/cactid.service
             └─69148 php /var/www/html/cacti/cactid.php
2月 27 17:18:35 linuxmi systemd[1]: Starting Cacti Daemon Main Poller Service...
2月 27 17:18:35 linuxmi cactid.php[69143]: Starting Cacti Daemon ... [OK]
2月 27 17:18:35 linuxmi systemd[1]: Started Cacti Daemon Main Poller Service.

336ee59842abf2ed6476907eae347b3f6f11f3.jpg

第 8 步:在 Web 界面上启动初始 Cacti 设置

打开 Web 浏览器并从 Cacti 服务器上授权的客户端系统导航到“ http://(Cacti 服务器的主机名或 IP 地址)/cacti/ ”。

586e3fe40762fffd4f8553427f239a3e43c07b.jpg

使用用户名admin和密码admin登录

035c57295116ba9b392009f6a7c7569b13dae0.jpg

重置管理员密码(修改为Admin@123)

222520957e0e5e72fd430761567e4acb91e6aa.jpg

Cacti 版本 1.2.20 - 许可协议,勾选 接受 GPL 许可协议 ,然后单击“开始”按钮继续。

36af57b65fa60058799803cee38aca6a1fc312.jpg

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

91cff6474fae90d5192780eddb652a0370d478.jpg

单击 下一步 按钮进入下一阶段。

您将被要求选择服务器安装类型:

安装选项:

  • 新的主要服务器 - 为主站点选择此项.
  • 新的远程poller - 远程poller 用于访问主站点无法访问的网络.

由于这是我们的第一台服务器,请选择“新的主要服务器”,然后单击 下一步

e82429912058394b9fd5614b7aa8faca29b206.jpg

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

b4c13df2690653d25f5386804cacd4490b07a0.jpg

记下安装后需要 只读 权限的目录,点击 下一步。

55d2af70595c0d00620049ab466124ed16da06.jpg

c1a27da44ed44a25e709772c404a673d3ff41a.jpg

49493c064545da4ef4b859cb67b60f6ef47eb8.jpg

完成所有其他步骤,包括模板设置:

d68040376f0df825b2b084ce0dbc13cbd7356e.jpg

7627a6d422435644e4d692d21fef5f8e7bab17.jpg

然后确认安装:

056e8e797630a2522ef40229ca72d7ab7f5340.jpg

您现在处于最后阶段,通过单击“ 完成 ”按钮完成安装以获取登录页面。

默认登录名是:

用户名:admin

密码:updated_password

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

f2395ba53ecd87a6f17597e381f05291460a36.jpg

53b98ea33efd0e6c2da945ad660a3de6db18b9.jpg

第 9 步:监控本地 Cacti 服务器

添加本地 Cacti 服务器进行监控。以管理员用户身份登录 Cacti 并转到:

控制台 > 设备 > +(添加设备)

填写服务器详细信息并向下滚动并单击“保存”按钮。

第 10 步:使用 Cacti Spine Poller

Spine 是一个多线程、高速数据收集工具,可替代 Cacti 的 cmd.php。您可以按照这篇《如何在 Ubuntu 20.04/18.04 上安装 Cacti Spine 轮询器》安装使用它:https://www.linuxmi.com/ubuntu-20-04-cacti-spine-poller.html

责任编辑:庞桂玉 来源: Linux公社
zanpc.bd208a1.pngzanpchover.fdd60ba.png
weixin.23cd8b3.png 分享到微信
weibo.16d6b4f.png 分享到微博

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK