2023-3-CentOS9Stream:通过Cacti实现网络监控系统

33 阅读4分钟

任务目标:

  1. 实现LAMP:Apache + PHP + MySQL + HTTP
  2. 部署Cacti
  3. 实现网络监控系统

任务平台:

  1. 私有云:VM-CentOS9-10.10.3.221-Cacti
  2. 操作系统:CentOS 9 Stream X86_64(2023-6-23,release)

部署指南:

系统基本配置
hostnamectl set-hostname VM-CentOS9-Cacti
网络配置
#查看网卡信息
nmcli device
#配置IPv4地址(请根据实际情况调整网络链接的名称ens33)
nmcli connection modify ens192 ipv4.addresses "10.10.3.221/24" ipv4.gateway 10.10.3.1
#重新载入网络链接的配置信息
nmcli connection reload
nmcli connection up ens192
系统升级、关闭防火墙和SELinux等配置
#配置防火墙,允许443/tcp端口访问
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
#重新启动服务器
reboot
安装Apache
#安装Apache HTTP Server
yum install -y httpd
#启动httpd服务,并设置为自动启动
systemctl start httpd
systemctl enable httpd
#查看httpd服务状态
systemctl status httpd
安装MySQL
#安装MySQL Community
yum install -y mysql-server
#修改MySQL Server的服务器参数,满足Cacti运行需要
cp /etc/my.cnf.d/mysql-server.cnf /etc/my.cnf.d/mysql-server.cnf.bak
cat >> /etc/my.cnf.d/mysql-server.cnf << EOF
# New Config
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake=true
join_buffer_size=64M
max_heap_table_size=32M
tmp_table_size=32M
sort_buffer_size=3000000
innodb_buffer_pool_size=640M
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
EOF

#启动MySQL服务,并设置位自动启动
systemctl start mysqld
systemctl enable mysqld
#查看MySQL服务状态
systemctl status mysqld
安装PHP
#安装php及相关模块
yum module list php
yum install -y php
#修改PHP的配置参数,满足Cacti运行需要
cp /etc/php.ini /etc/php.ini.bak
vi /etc/php.ini
#修改3个配置项目,满足Cacti运行需要
max_execution_time = 60
memory_limit = 1024M
date.timezone = "Asia/Shanghai"

#启动PHP
systemctl start php-fpm
#查看PHP的服务状态
systemctl status php-fpm
安装系统部署的基本平台和工具软件
#安装EPEL仓库
yum install -y epel-release
#安装部署Cacti的基本工具
yum install -y wget patch tar
#安装SNMP、RRDTool基本工具,实现SNMP和监控数据存储服务
yum install -y rrdtool net-snmp*
#安装PHP Module以支持Cacti
yum install -y php php-common php-bcmath php-cli \
    php-mysqlnd php-gd php-gmp php-intl \
    php-json php-ldap php-mbstring \
    php-pdo php-pear php-snmp php-process \
    php-xml php-zip fping
获取Cacti程序
#方法1:获取Cacti程序并进行部署和发布,最新版本请查看官网cacti.net
wget https://www.cacti.net/downloads/cacti-1.2.24.tar.gz
tar -xzvf cacti-1.2.24.tar.gz -C /var/www/
mv /var/www/cacti-1.2.24 /var/www/cacti

#方法2:如Cacti官网服务访问,可以通过Github获取
wget https://github.com/Cacti/cacti/archive/refs/heads/develop.zip
unzip -d /var/www develop.zip
mv /var/www/cacti-develop /var/www/cacti

#配置Cacti程序目录的文件读写权限
chown -R apache.apache /var/www/cacti
chmod -R 755 /var/www/cacti

#配置Cacti程序目录的SeLinux权限
setsebool -P mysql_connect_http on
setsebool -P httpd_sys_script_anon_write on
setsebool -P httpd_anon_write on
semanage fcontext -a -t public_content_rw_t "/var/www/cacti/log(/.*)?"
semanage fcontext -a -t public_content_rw_t "/var/www/cacti/cache(/.*)?"
restorecon -R -v /var/www/cacti/

#修改Cacti的配置文件
cp /var/www/cacti/include/config.php.dist /var/www/cacti/include/config.php
vi /var/www/cacti/include/config.php
#配置文件的内容修改为:
/*
 * Make sure these values reflect your actual database/host/user/password
 */
$database_type     = 'mysql';
$database_default  = 'cactiDB';
$database_hostname = 'localhost';
$database_username = 'cactiUser';
$database_password = 'cactiUser#PWD2023';
$database_port     = '3306';
$database_retries  = 5;
$database_ssl      = false;
$database_ssl_key  = '';
$database_ssl_cert = '';
$database_ssl_ca   = '';
$database_persist  = false;
/*
 * Set the $url_path to point to the default URL of your cacti install.
 * For example if your cacti install as at `https://serverip/cacti/` this
 * would be set to `/cacti/`.
 */
$url_path = '/';
配置数据库服务
#初始化MySQL Server的权限
mysql -uroot -p
#首次登录使用空密码
#输入root设置的密码,本例的mysql root密码为:ruan#labs313mysql
#在mysql工具内进行数据库操作
mysql> use mysql;
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'ruan#labs313mysql';
mysql> flush privileges;
mysql> exit;

#设置MySQL Server的时区,注意下方密码
mysql_tzinfo_to_sql /usr/share/zoneinfo/Asia/Shanghai Shanghai | mysql -u root -p mysql
#重新启动MySQL Server,使配置生效
systemctl restart mysqld

#为Cacti创建数据库和权限,注意下方密码
mysql -uroot -pruan#labs313mysql
#在mysql工具内进行数据库操作
#创建数据库,本例数据库名为:cactiDB
mysql> create database cactiDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
#导入Cacti的默认数据库,完成数据库记录的初始化
mysql> use cactiDB;
mysql> source /var/www/cacti/cacti.sql;
#为Cacti创建读写数据库的权限
#本例的Cacti数据库读写用户为:cactiUser,密码为:cactiUser#PWD2023
mysql> create user 'cactiUser'@'localhost' identified by "cactiUser#PWD2023";
mysql> grant all privileges on cactiDB.* to  'cactiUser'@'localhost' with grant option;
#为Cacti账号创建访问时区数据权限
mysql> use mysql;
mysql> grant select on mysql.time_zone_name to 'cactiUser'@'localhost' with grant option;
mysql> flush privileges;
mysql> exit;
配置Apache Httpd,发布业务
#修改HTTPD配置文件,内容默认配置基本一致
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
vi /etc/httpd/conf/httpd.conf
#修改后的内容如下:
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />
    AllowOverride none
    Require all denied
</Directory>
#修改网站目录
DocumentRoot "/var/www/cacti"
<Directory "/var/www/cacti">
    AllowOverride All
    Require all granted
</Directory>

#重新启动Apache Httpd Server
systemctl restart httpd

#临时关闭SELinux,进行部署
setenforce 0

#在本地主机中使用浏览器访问:http://10.10.3.221,按照向导执行Cacti的初始化部署
#Cacti的默认用户名为admin,密码首次为admi,需要设置新密码(密码规则:大小写+数字+字符)。

#初始化完成后,配置Cacti自动进行监控数据采集
echo '*/5 * * * * root php /var/www/cacti/poller.php > /dev/null 2>&1' >> /etc/crontab
systemctl restart crond