系统环境

标题 版本 备注
系统版本 ubuntu 22.04.3 LTS (Jammy Jellyfish) -
内核版本 5.15.0-91-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux -
Tengine v3.1.0 -
PHP v7.4.30 -
MariaDB v10.11.7 -
Cacti v1.2.26 -

Cacti 简介

Cacti 官方网址: https://www.cacti.net/

Cacti 官方文档: https://docs.cacti.net/Install-Under-CentOS_LEMP.md

Cacti 是一款基于 PHP、RRDTool、SNMPv1/v2/v3 协议的开源网络监控图形化工具。它可以通过定期采集服务器或网络设备的数据,并将这些数据绘制成直观的图表形式,帮助管理员更好地监控和了解网络/系统的运行状态。

Cacti 的主要特点包括:

  1. 数据采集

    • 支持通过 SNMP 从网络设备(如路由器、交换机)采集数据
    • 支持通过命令或脚本从本地主机采集数据
    • 支持多种数据采集方式,包括 CPU 负载、内存利用率、磁盘空间、网络流量等
  2. 数据存储

    • 使用高性能的 RRDTool 存储数据
    • 支持自动创建 RRD 文件,无需手动干预
  3. 数据展示

    • 提供基于 Web 的友好图形界面
    • 可自定义色彩、大小和布局
    • 支持水平和垂直图表模式
  4. 用户管理

    • 支持创建多个用户账户
    • 每个用户有自己的图表权限和配置
  5. 插件支持

    • 官方和社区提供了许多插件,扩展了 Cacti 的功能
    • 如预定义的模板、特定设备支持等
  6. 报警提醒

    • 支持基于阈值的报警提醒
    • 可通过邮件、命令等形式接收报警通知

总的来说,Cacti 提供了一个易于使用、功能丰富的网络监控解决方案,适合中小型企业和网络运维团队使用。它可以帮助用户随时掌握网络/系统的状态,提高运维效率。

LTMP 环境部署

关于 LTMP 环境中的 Tengine 安装,请参考:在 ubuntu 22.04 中,通过源码编译安装 LTMP 中的 Tengine 服务(不支持 Lua 脚本语言)

官方给出的配置文档案例:Install-Under-CentOS_LEMP

关于 cacti 虚拟主机的配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
server {
listen 80;
server_name _;
root /data/website/cacti;
index index.php;

location / {
try_files $uri $uri/ /index.php$query_string;
}

#error_page 404 /404.html;
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /usr/share/nginx/html/;
#}

location ~ \.php$ {
alias /data/website/cacti;
index index.php
try_files $uri $uri/ =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# you may have to change the path here for your OS
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location /cacti {
root /data/website/;
index index.php index.html index.htm;
location ~ ^/cacti/(.+\.php)$ {
try_files $uri =404;
root /data/website;

# you may have to change the path here for your OS
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~* ^/cacti/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
expires max;
log_not_found off;
}
}

location /doc/ {
alias /data/website/cacti/doc/;
location ~* ^/docs/(.+\.(html|md|txt))$ {
root /data/website/cacti/;
autoindex on;
allow 127.0.0.1; # Change this to allow your local networks
allow ::1;
deny all;
}
}

location /cacti/rra/ {
deny all;
}
}

关于 LTMP 环境中的 MariaDB 安装,请参考:在 ubuntu 22.04 中,通过二进制安装 MariaDB 服务

关于 cacti 数据库的创建及授权如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
-- 登陆数据库
root@instance-2UkeKOzr:~# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2274
Server version: 10.11.7-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

-- 创建 cacti 数据库
MariaDB [(none)]> create database if not exists cacti;;
Query OK, 1 row affected (0.001 sec)

-- 授权:
MariaDB [(none)]> grant all privileges on cacti.* to 'cacti'@'127.0.0.1' identified by 'cacti2024';
Query OK, 0 rows affected (0.003 sec)

-- 授权时区查询
MariaDB [(none)]> grant select on mysql.time_zone_name to 'cacti'@'127.0.0.1' identified by 'cacti
2024';
Query OK, 0 rows affected (0.003 sec)

-- 设置默认的字符集
MariaDB [(none)]> alter database cacti character set utf8mb4 collate utf8mb4_unicode_ci;
Query OK, 1 row affected (0.001 sec)

-- 使授权立即生效
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.002 sec)

-- 退出数据库
MariaDB [(none)]> exit
Bye

关于 LTMP 环境中的 PHP 安装,请参考:在 ubuntu 22.04 中,通过源码编译安装 LNMP 中的 PHP 环境

Cacti 安装

1.添加运行 cacti 的用户:

1
useradd -s /sbin/nologin cacti

2.点击这里下载 cacti 到服务器的 /usr/local/src/ 目录下:

1
wget -O /usr/local/src/cacti-1.2.26.tar.gz https://files.cacti.net/cacti/linux/cacti-1.2.26.tar.gz

3.将下载的源码文件解压到下载目录:

1
tar -zxf /usr/local/src/cacti-1.2.26.tar.gz -C /usr/local/src/

4.将解压目录移动到 nginx web 目录 /data/website/ 下并重命名为 cacti

1
mv /usr/local/src/cacti-1.2.26 /data/website/cacti

5.在 /data/website/cacti/log/ 目录创建2个日志文件,分别为:

1
touch /data/website/cacti/log/{cacti.log,cacti_stderr.log}

6.编辑重命名后的 cacti 目录 /data/website/cacti/include 下的 config.php 文件,找到数据库配置端,配成上上面创建的 cacti 库信息,如下:

1
2
3
4
5
6
7
8
9
10
11
12
$database_type     = 'mysql';
$database_default = 'cacti';
$database_hostname = '127.0.0.1';
$database_username = 'cacti';
$database_password = 'cacti2024';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = '';
$database_ssl_cert = '';
$database_ssl_ca = '';
$database_persist = false;

7.导入 cacti 目录 /data/website/cacti/ 下的 cacti.sql 到数据库 cacti 中:

1
mysql -ucacti -p -h 127.0.0.1 cacti < /data/website/cacti/cacti.sql

8.将重命名后的 cacti 目录所属主和组都修改为 php 运行用户 php-fpm:

1
chown -R php-fpm:php-fpm /data/website/cacti

9.打开浏览器,输入服务器IP,开始安装,如图:

注意: 这里报错

1
2
3
4
5
FATAL: Connection to Cacti database failed. Please ensure:

the PHP MySQL module is installed and enabled.
the database is running.
the credentials in config.php are valid.

查看系统日志输出:

1
2
May 10 09:09:51 instance-2UkeKOzr mariadbd[563398]: 2024-05-10  9:09:51 3206 [Warning] Access denied for user 'cactir'@'localhost' (using password: YES)
May 10 09:09:52 instance-2UkeKOzr mariadbd[563398]: 2024-05-10 9:09:52 3207 [Warning] Access denied for user 'cactir'@'localhost' (using password: YES)

检查下上面配置的 cacti 连接数据库配置是否有误,创建的 cacti 数据库信息根 include/config.php 配置的是否一致!

10.刷新下浏览器,如下图:

11.使用默认账号(admin)密码(admin)登陆,然后要求修改密码,新密码要求(大小写子字母+数字+特殊字符)如图:

12.密码修改成功后,正式进入安装页面。首先,第一步:切换语言和接受 GPL 许可协议:

13.第二步:预安装检查,需要保证所有条件满足,如下图:

预安装检查:PHP - Recommendations (web)

1.编辑 php 安装目录 /usr/local/php/etc/ 下的 php.ini 文件,将 memory_limit = 128M 调整成 memory_limit = 400M, 同时,启用 ;date.timezone = ,将其值设置为 date.timezone = Asia/Shanghai

1
2
sed -i 's@memory_limit = 128M@memory_limit = 400M@' /usr/local/php/etc/php.ini
sed -i 's@;date.timezone [email protected] = Asia/Shanghai@' /usr/local/php/etc/php.ini

2.然后重启下 php 服务:

1
systemctl restart php-fpm.service

预安装检查:PHP - Recommendations (cli)

这一步不满足,是因为在安装 php 时没有将 php 可执行文件写入系统环境变量。所以在这里我们只需要将 php 安装目录 /usr/local/php/bin/ 下的 php 可执行文件软链接到 /usr/sbin/ 目录下:

1
ln -s /usr/local/php/bin/php /usr/sbin/

预安装检查:PHP - Module Support (Required)
由于在安装 php 时没有器用 ladp 模块,所以这里只能手动安装下了,具体过程如下:

1.安装 libldap-dev 包:

1
apt install -y libldap-dev

2.进入到 php 源码目录 /usr/local/src/php-7.4.30/ 下的 ext/ldap/ 目录里:

1
cd /usr/local/src/php-7.4.30/ext/ldap/

3.在该目录中执行 phpize

1
/usr/local/php/bin/phpize

4.执行 ./configure

1
./configure --with-php-config=/usr/local/php/bin/php-config

5.执行 make && make install 进行安装

1
make && make install

6.编辑 php 安装目录 /usr/local/php/etc/ 下的 php.ini 文件,找到 ;extension=ldap 将其启用:

1
sed -i 's@;extension=ldap@extension=ldap@' /usr/local/php/etc/php.ini

7.然后重启下 php-fpm 服务:

1
systemctl restart php-fpm.service

预安装检查:PHP - Module Support (Optional)

由于在安装 php 时没有器用 snmp 模块,所以这里只能手动安装下了,具体过程如下:

1.安装 libsnmp-dev 包:

1
apt install -y libsnmp-dev

2.进入到 php 源码目录 /usr/local/src/php-7.4.30/ 下的 ext/snmp/ 目录里:

1
cd /usr/local/src/php-7.4.30/ext/snmp/

3.在该目录中执行 phpize

1
/usr/local/php/bin/phpize

4.执行 ./configure

1
./configure --with-php-config=/usr/local/php/bin/php-config

5.执行 make && make install 进行安装

1
make && make install

6.编辑 php 安装目录 /usr/local/php/etc/ 下的 php.ini 文件,找到 ;extension=snmp 将其启用:

1
sed -i 's@;extension=snmp@extension=snmp@' /usr/local/php/etc/php.ini

7.然后重启下 php-fpm 服务:

1
systemctl restart php-fpm.service

预安装检查:MySQL - TimeZone Support

加载时区到 mariadb 数据库:

1
2
root@instance-2UkeKOzr:~# /usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo/ |mysql -uroot -p mysql
Enter password:

预安装检查:MySQL - Settings

1.编辑 /etc/my.cnf 文件,在 [mysqld] 添加如下参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[mysqld]
# 监听地址
bind-address = 0.0.0.0
# 监听端口
port = 3306
# pid 文件
pid-file = /data/mariadb/mysql.pid
# 程序安装目录
basedir = /usr/local/mysql/
# 数据存放目录
datadir = /data/mariadb
# 该条配置需在[client]段同时配置
socket=/tmp/mysql.sock
# 设定默认字符为utf8mb4
character-set-server=utf8mb4

innodb_force_recovery = 1
collation-server=utf8mb4_unicode_ci
max_allowed_packet=36M
max_heap_table_size=98M
tmp_table_size=128M
join_buffer_size=8M
innodb_buffer_pool_size=1024M
innodb_doublewrite=OFF
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16
log-error = /var/log/mysql/mysql-error.log
log-queries-not-using-indexes = 1
slow-query-log = 1
slow-query-log-file = /var/log/mysql/mysql-slow.log
sort_buffer_size = 2M

2.重启下 maraidb 服务:

1
systemctl restart mariadb.service

14.进入 安装类型 页面后,我哦门在选择 安装类型新的主要服务器, 如图:

15.在 目录权限检查 页面,要确保所有条件都满足,如图:

16.在 关键的可执行程序位置和版本 页面,要确保所有的二进制路径都配置正确,如图:

关键的可执行程序位置和版本:RRDtool

执行命令安装 rrdtool:

1
apt install -y rrdtool

关键的可执行程序位置和版本:snmpwalk、snmpget、snmpbulkwalk、snmpgetnext、snmptrap
执行命令安装 snmp:

1
apt install -y snmp

关键的可执行程序位置和版本:Sendmail
执行命令安装 sendmail:

1
apt install -y sendmail

关键的可执行程序位置和版本:spine

1.安装必要的依赖包:

1
apt install -y libtool autoconf automake dos2unix help2man

2.从 cacti 官方站点下载 spine 源码包到服务器的 /usr/local/src/ 目录下:

1
wget -O /usr/local/src/cacti-spine-1.2.26.tar.gz https://files.cacti.net/spine/cacti-spine-1.2.26.tar.gz

3.解压到下载目录:

1
tar -zxf /usr/local/src/cacti-spine-1.2.26.tar.gz -C /usr/local/src/

4.进入解压目录:

1
cd /usr/local/src/cacti-spine-1.2.26/

5.执行 ./bootstrap

1
./bootstrap

6.执行 ./configure

1
./configure --prefix=/usr/local/cacti_spine --with-reentrant

7.执行 make && make install:

1
make && make install

8.复制 cacti_spine 安装目录 /usr/local/cacti_spine/etc/ 下的 spine.conf.dist 文件为 spine.conf:

1
cp /usr/local/cacti_spine/etc/spine.conf.dist /usr/local/cacti_spine/etc/spine.conf

9.编辑 /usr/local/cacti_spine/etc/spine.conf ,找到连接数据库段落配置,将其配置为 cacti 数据库链接信息,如下:

1
2
3
4
5
DB_Host       127.0.0.1
DB_Database cacti
DB_User cacti
DB_Pass cacti2024
DB_Port 3306

17.进入 Input Validation Whitelist Protection 页面后,我们勾选 I hava read this statement, 如下图:

18.进入 默认配置文件页面后,我们只需要配置 默认自动化网络 下的 网络范围,至于最下面的 其他SNMP选项 则根据自身需求开启。如下图

19.进入 模板设置 页面后,我们保持默认即可,如图:

20.进入 服务器排序 页面后,保持默认,如图:

21.进入 确认安装 页面后,勾选 确认安装 ,如下图:

安装过程(根据服务器的配置,需要时间等待安装):

22.安装完成,如下图:

点击左下角的开始使用,就进入了 Cacti 界面了,如下图:

不出图报 the cacti poller has not run yet 的解决方法

1.安装 snmpd 包:

1
apt install -y snmpd

2.登陆 cacti web 端,点击左侧导航栏中的 系统配置 —> 设置, 确保右侧菜单栏 路径下的 备用poller 路径 下的 Spine 二进制文件位置 配置正确:

同时确保右侧菜单栏 Poller下的 基本 配置项下的 采集类型spine,如下图:

接下来,根据设置的 poller 采集周期,我们还需要在服务器上设置一个计划任务,如:

1
*/1 * * * *   /usr/local/php/bin/php /data/website/cacti/poller.php > /dev/null 2>&1

3.然后,回到服务器的命令行终端,执行命令 snmpwalk -v 2c -c public localhost ,看能否得到数据输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
root@instance-2UkeKOzr:/usr/local/src/cacti-spine-1.2.26# snmpwalk -v 2c -c public localhost
iso.3.6.1.2.1.1.1.0 = STRING: "Linux instance-2UkeKOzr 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (4588) 0:00:45.88
iso.3.6.1.2.1.1.4.0 = STRING: "Me <[email protected]>"
iso.3.6.1.2.1.1.5.0 = STRING: "instance-2UkeKOzr"
iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1
iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.15.2.1.1
iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.1
iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.6.3.16.2.2.1
iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.49
iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.50
iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.2.1.4
iso.3.6.1.2.1.1.9.1.2.9 = OID: iso.3.6.1.6.3.13.3.1.3
iso.3.6.1.2.1.1.9.1.2.10 = OID: iso.3.6.1.2.1.92
iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The SNMP Management Architecture MIB."
iso.3.6.1.2.1.1.9.1.3.2 = STRING: "The MIB for Message Processing and Dispatching."
iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The management information definitions for the SNMP User-based Security Model."
iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB module for SNMPv2 entities"
iso.3.6.1.2.1.1.9.1.3.5 = STRING: "View-based Access Control Model for SNMP."
iso.3.6.1.2.1.1.9.1.3.6 = STRING: "The MIB module for managing TCP implementations"
iso.3.6.1.2.1.1.9.1.3.7 = STRING: "The MIB module for managing UDP implementations"
iso.3.6.1.2.1.1.9.1.3.8 = STRING: "The MIB module for managing IP and ICMP implementations"
iso.3.6.1.2.1.1.9.1.3.9 = STRING: "The MIB modules for managing SNMP Notification, plus filtering."
iso.3.6.1.2.1.1.9.1.3.10 = STRING: "The MIB module for logging SNMP Notifications."
iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.6 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.7 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.8 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.9 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.10 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (78872223) 9 days, 3:05:22.23
iso.3.6.1.2.1.25.1.2.0 = Hex-STRING: 07 E8 05 0A 10 27 1E 00 2B 08 00
iso.3.6.1.2.1.25.1.3.0 = INTEGER: 393216
iso.3.6.1.2.1.25.1.4.0 = STRING: "BOOT_IMAGE=/boot/vmlinuz-5.15.0-46-generic root=UUID=136735fa-5cc1-470f-9359-ee736e42f844 ro console=tty1 console=ttyS0
"
iso.3.6.1.2.1.25.1.5.0 = Gauge32: 3
iso.3.6.1.2.1.25.1.6.0 = Gauge32: 202
iso.3.6.1.2.1.25.1.7.0 = INTEGER: 0
iso.3.6.1.2.1.25.1.7.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

4.回到 cacti web 页面,点击左侧导航栏中的 管理 —> 设备, 点击右侧 设备 配置项下的主机名称,如图:

进入到设备配置页面后,按下图所示进行配置,最后点击保存:

安装报错及解决方法

configure 报错:

make 报错

错误一:cannot find -lmysqlclient_r: No such file or directory

报错详细信息:

1
2
3
4
5
/bin/bash ./libtool  --tag=CC   --mode=link gcc  -I/usr/include/net-snmp -I/usr/include/net-snmp/.. -I/usr/local/mysql/include/mysql -g -O2  -L/usr/lib/x86_64-linux-gnu  -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o  -lmysqlclient_r -lm -ldl -lcrypto -lz -lpthread -ldl -lm -lpthread -lssl 
libtool: link: gcc -I/usr/include/net-snmp -I/usr/include/net-snmp/.. -I/usr/local/mysql/include/mysql -g -O2 -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r -lcrypto -lz -ldl -lm -lpthread -lssl
/usr/bin/ld: cannot find -lmysqlclient_r: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [Makefile:497: spine] Error 1

解决方法:

在编译参数后面添加 LDFLAGS=-L/usr/local/mysql/lib/ FLAGS=-L/usr/local/mysql/include ,重新编译即可!

1
./configure --prefix=/usr/local/cacti_spine --with-reentrant --with-mysql LDFLAGS=-L/usr/local/mysql/lib/ FLAGS=-L/usr/local/mysql/include

错误二:No help2man

报错详细详细:

1
2
false // No help2man // --output=spine.1 --name='Data Collector for Cacti' --no-info --version-option='--version' ./spine
make: *** [Makefile:1005: spine.1] Error 1

解决方法:

安装 help2man

1
apt install -y help2man

然后重新执行 ./configure --prefix=/usr/local/cacti_spine --with-reentrant --with-mysql LDFLAGS=-L/usr/local/mysql/lib/ FLAGS=-L/usr/local/mysql/include

1
./configure --prefix=/usr/local/cacti_spine --with-reentrant --with-mysql LDFLAGS=-L/usr/local/mysql/lib/ FLAGS=-L/usr/local/mysql/include

在执行 make

1
make

参考文档:

Linux-Console.net - 如何在 Ubuntu 22.04 上安装 Cacti 监控工具
博客园 - Cacti1.2.14最新版安装和配置(详细版)
CSDN - 网络监控cacti1.2.12安装部署(一)
CSDN - CACTI的客户端SNMP设置