[Cacti]CentOS 8 安裝 Cacti 1.2.23 完整教學:LAMP 環境建置、SNMP 設定與資料庫優化

延伸閱讀猜你對這些文章也有興趣:
Cacti Logo

Cacti 是一款免費的開源前端網路監控工具,用於監控和繪製 LAN 中各種 IT 資源的時間序列指標。它使用 RRDtool 以指定的時間間隔輪詢服務,然後在直觀的圖形上表示它們。

Cacti 監控各種指標,例如 CPU、記憶體和頻寬利用率、磁碟空間、文件系統和正在運行的進程等等。您可以監控伺服器、路由器、交換機甚至防火牆等設備。此外,您可以配置警報,以便在系統停機時,您可以通過電子郵件接收通知。本文,我們使用 CentOS 8 / RHEL 8 上安裝 cacti 監控工具的過程。
安裝測試時 Cacti 版本是 1.2.23 版本。

Cacti Preview

Linux 其他版本測試過目前僅有 Centos 系統為正常。
測試使用 Ubuntu 20 以上版本可以安裝但是安裝所要使用的 Weathermap 插件會不定時的出現錯誤且圖片會破圖。
最後還是跳回 Centos 後續裝完後才發現 Centos 有其他 Linux 可以替代例如 AlmaLinux ,Rocky Linux 系統有興趣的人再測試看看吧!!
寫完後也有測試 Centos 可以順利移轉至 AlmaLinux ,Rocky Linux 系統也是相當簡單!!
以下為安裝過程可能會不盡相同,目前測試是可以正常運行且 LOG 部分還沒有出現錯誤!!

1. Install the LAMP Stack

環境準備安裝最新 EPEL 庫

sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

[CentOS 8] 無法使用: No URLs in mirrorlist error

2. 安裝 Apache

sudo yum install -y httpd httpd-devel
Install Apache

Configuring Firewall for Cacti

sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload sudo systemctl restart httpd
Firewall Config Systemctl Status Httpd

3. 安裝 PHP 7.4

sudo dnf module list php
PHP Module List
sudo dnf module reset php sudo dnf module enable php:remi-7.4
Enable Remi
sudo dnf install php php-opcache php-gd php-curl php-mysqlnd
Install PHP
php -v
PHP Version
sudo systemctl enable php-fpm
Enable PHP FPM
sudo systemctl start php-fpm sudo systemctl status php-fpm
PHP FPM Status

3.1 安裝 php 擴展

sudo yum install -y php php-xml php-session php-sockets php-ldap php-gd php-json php-mysqlnd php-gmp php-mbstring php-posix php-snmp php-intl
Install Extensions

3.2 測試 PHP

sudo vim /var/www/html/info.php
<?php phpinfo(); ?>

打開瀏覽器輸入 http://localhost/info.php 確認運作正常

PHP Info

3.3 設置 php,設定時區

sudo vim /etc/php.ini

調整每個批次檔最大執行時間

max_execution_time = 60
php.ini 1

更新暫存記憶體大小

memory_limit = 512M
php.ini 2

設定時區

date.timezone = Asia/Taipei
php.ini 3

4. 安裝 Snmp RRDTool,RRDTool 為 Cacti 數據輪詢工具

sudo yum install -y net-snmp net-snmp-utils net-snmp-libs net-snmp-devel net-snmp-perl rrdtool git
Install SNMP

Config Snmp.conf

sudo vim /etc/snmp/snmpd.conf
SNMP Conf 1

//修改 default 爲本機(cacti 服務器)的 ip,修改 public 爲自己的團體名(一般不改),42 行

com2sec notConfigUser 192.168.2.186 public
SNMP Conf 2

//把 systemview 改成 all ,供所有 snmp 訪問權限 64 行

SNMP Conf 3
access notConfigGroup "" any noauth exact all none none
SNMP Conf 4

view all included .1 80 // 去掉#號 85行

SNMP Conf 5 SNMP Conf 6

5. 安裝 MariaDB 資料庫

sudo yum install -y mariadb-server mariadb mariadb-devel
Install MariaDB

5.1_ 初始化資料庫

設定 MariaDB,初始化資料庫,設定密碼,除了開始直接 Enter,其他的選擇都輸入 Y

sudo systemctl restart mariadb sudo mysql_secure_installation
Secure Install

Enter current password for root (enter for none): Enter

Set root password? [Y/n]: Y // 輸入 root 管理員密碼

New password: (password)

Re-enter new password: (password)

Password updated successfully!

Remove anonymous users? [Y/n]: Y // 刪除匿名賬號

Disallow root login remotely? [Y/n]: Y / 禁止 root 管理員從遠程登錄

Remove test database and access to it? [Y/n]: Y // 刪除 test 資料庫及讀取權限

Reload privilege tables now? [Y/n]: Y // 更新設定立即生效

5.2_ 資料庫參數設定 Configure MariaDB

sudo vim /etc/my.cnf.d/mariadb-server.cnf

在 [mysqld] 部分增加以下設定:

collation-server=utf8mb4_unicode_ci character-set-server=utf8mb4 innodb_file_format=Barracuda innodb_large_prefix=1 innodb_doublewrite=OFF max_heap_table_size=256M tmp_table_size=256M join_buffer_size=20M sort_buffer_size=2M innodb_buffer_pool_size=4096M 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
MariaDB Config

5.3_ MariaDB 時區設定檔

為 cacti 資料庫用戶設置 MariaDB 時區表。

sudo mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Import Timezone
sudo systemctl restart mariadb sudo mysql -u root -p

select timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00'));

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;

SHOW GLOBAL VARIABLES LIKE '%time_zone';

show databases;

select @@tmp_table_size;

show variables like 'join_buffer_size';

Verify DB

6. 開啟相關服務

sudo systemctl start httpd snmpd mariadb php-fpm sudo systemctl restart httpd snmpd mariadb php-fpm sudo systemctl enable httpd snmpd mariadb php-fpm
Service 1
sudo systemctl status httpd
Status httpd
sudo systemctl status mariadb
Status mariadb
sudo systemctl status snmpd
Status snmpd
sudo systemctl status php-fpm
Status php-fpm

驗證 snmp 是否有數據

netstat -alun | grep 161
Verify SNMP 1
snmpwalk -v 2c -c public localhost
Verify SNMP 2

7. Download and cacti configure

ll /var/www/html/ sudo rm -r /var/www/html/*.* git clone -b 1.2.x https://github.com/Cacti/cacti.git cd cacti sudo mv * /var/www/html/ ll /var/www/html/
Download Cacti

7.1 創建 cacti 數據庫,創建數據庫用戶 cactiuser,設定相關授權

sudo mysql -u root -p
Create DB 1
CREATE DATABASE cacti DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ; GRANT ALL PRIVILEGES ON cacti.* TO 'cactiuser'@'localhost' IDENTIFIED BY 'cactiuser'; GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost; ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; FLUSH PRIVILEGES;
Create DB 2

7.2 導入 Cacti 預設資料庫

use cacti source /var/www/html/cacti.sql; flush privileges; exit
Import SQL 1 Import SQL 2

7.3 設定 cacti config

sudo cp /var/www/html/include/config.php.dist /var/www/html/include/config.php
Copy Config
sudo vim /var/www/html/include/config.php
Edit Config

7.4 設定 cacti 資料夾權限

sudo touch /var/www/html/log/cacti.log sudo touch /var/www/html/log/cacti_stderr.log sudo chown apache:apache /var/www/html/ -R sudo chown cacti:cacti /var/www/html/{rra,log}/ -R sudo chmod 777 /var/www/html/{rra,log}/ -R
Permission

7.5 重啟相關服務

sudo systemctl restart httpd snmpd mariadb php-fpm

8. Add alias path to apache

sudo vim /etc/httpd/conf.d/cacti.conf

設定內容:

Alias /cacti /var/www/html <Directory /var/www/html> <IfModule mod_authz_core.c> # httpd 2.4 Require all granted </IfModule> <IfModule !mod_authz_core.c> # httpd 2.2 Order deny,allow Deny from all Allow from 192.168.0.12/24 </IfModule> </Directory>

9. Setup crontab poller

方法有三種目前我使用9.1-9.2建立只需要使用一組設定就可以

Configure a cron job to run poller.php script in every 5 minutes. This script will collect and update the system metrics in /rra directory.

echo "*/5 * * * * apache /usr/bin/php /var/www/html/poller.php > /dev/null 2>&1" | sudo tee /etc/crontab
Crontab 1
sudo tail -f /var/log/cron
Tail Cron
sudo cat /var/log/cron
Cat Cron
sudo systemctl enable crond sudo systemctl status crond
Status Crond

9.2 使用 crontab 命令添加任務

# crontab -e

我這裏配置成每 1 分鐘運行一次

*/1 * * * * /usr/bin/php /var/www/html/poller.php > /dev/null 2>&1 sudo /usr/bin/php /var/www/html/poller.php crontab -l ll /etc/cron.d/

9.3

Set up the poller to collect data every 5 minutes. Create file cactipoller in

echo "*/1 * * * *apache /usr/bin/php /var/www/html/poller.php > /dev/null 2>&1" | sudo tee /etc/cron.d/cactipoller

添加好 crontab 計劃任務後,驗證下 crond 服務是否已經啓動,並設置開機自動啓動

10. install Cacti

Install 1 Install 2 Install 3 Install 4 Install 5 Install 6 Install 7 Install 8 Install 9 Install 10 Install 11 Install 12 Install 13 Install 14 Install 15 Install 16 Install 17

📚 參考資源與文獻

Cacti SSL Configuration
LAMP & Cacti Official Guide
Cacti Installation Tutorials
Apache Configuration
Crontab & Logs
Cacti Troubleshooting & SELinux

🏷️ 文章標籤 (Tags)

留言

自訂樣式 ~ CSS -- 簡約相簿

© Copyright 2021 Design By 灰鴿 | Modified by Sungshu ( Powered by Blogger )