如何在Debian 9上安裝Cacti SNMP監控工具

 

本教程將向您展示如何從源代碼安裝和配置Cacti網絡監視工具,以確保您獲得Debian 9的最新版本,代號為Stretch。

Cacti是基於Web的網絡監視工具,完全開源,旨在通過RRDtool顯示網絡和系統圖形。 它使用SNMP(簡單網絡管理協議)協議來收集和監視來自網絡設備(如交換機,路由器,Linux,Unix和Windows Server)的網絡流量。 Windows 服務器或支持SNMP的其他類型的基於網絡的設備。

要求

  • Debian 9最小安裝 在裸機或虛擬專用服務器上。
  • 為您的某個系統網絡接口卡配置的靜態IP地址。
  • 通過sudo訪問root帳戶或具有root帳戶權限的用戶。

初始配置

在我們開始從源代碼安裝Cacti之前,首先要確保您的系統滿足編譯和安裝Cacti的所有軟件要求。 在第一步中,打開Debian源列表文件以使用root權限進行編輯,並附加contrib和非自由存儲庫,如下面的文件摘錄所示。

nano /etc/apt/sources.list

sources.list文件示例:

deb http://ftp.ro.debian.org/debian/ stretch main 貢獻非自由
deb-src http://ftp.ro.debian.org/debian/ stretch main
 
deb http://security.debian.org/debian-security stretch / updates main 貢獻非自由
deb-src http://security.debian.org/debian-security stretch / updates main

sources.list文件

完成編輯文件後,通過發出以下命令,保存並關閉文件並更新系統存儲庫和軟件包以合併新軟件包。

apt更新

升級

更新Debian軟件包

接下來,啟動一個新命令,以便安裝一些必要的實用程序,這些實用程序將用於從命令行進一步管理系統。

apt install wget patch unzip zip bash-completion

Cacti是一個基於Web的監控工具,主要使用PHP服務器端編程語言編寫。 為了運行Cacti php文件腳本,必須在系統中安裝Web服務器,例如Apache HTTP服務器和PHP解釋器。 為了安裝Apache Web服務器和PHP解釋器以及Cacti正常運行所需的所有必需PHP模塊,請在服務器控制台中發出以下命令。

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-snmp php7.0-xml php7.0-mbstring php7.0-json php7.0-gd php7.0-gmp php7.0-zip php7.0-ldap php7.0-mcrypt

安裝PHP

安裝Apache和PHP後,測試Web服務器是否已啟動並正在運行,並通過以root權限發出以下命令來偵聽端口80上的網絡連接。

netstat -tlpn

以防萬一 netstat命令 默認情況下,在Debian系統上沒有安裝網絡實用程序,請執行以下命令進行安裝。

apt安裝網絡工具

通過檢查 netstat命令 在命令輸出中,您可以看到apache守護程序正在偵聽端口80上的傳入網絡連接。

Netstat命令輸出

如果您的系統上啟用了防火牆,例如UFW防火牆應用程序,則應添加新規則以允許HTTP流量通過發出以下命令來通過防火牆。

ufw允許WWW

or

ufw允許80 / tcp

最後,通過HTTP協議訪問Debian計算機IP地址,測試Apache Web服務器默認網頁是否可以顯示在客戶端瀏覽器中,如下圖所示。 如果您不知道您的機器IP地址,請執行'使用ifconfig“ 要么 'ip a' 命令。 我在此設置中的IP是:http:// 192.168.1.14

 

Debian默認網頁

在下一步中,我們需要對PHP默認配置文件進行一些進一步的更改,以確保 file_uploads 變量啟用和PHP 時區 設置已正確配置並與您的系統物理位置匹配。 打開 /etc/php/7.0/apache2/php.ini 用於編輯的文件,並確保以下行設置如下。

file_uploads =開
date.timezone =歐洲/倫敦

通過查看PHP文檔在以下鏈接提供的時區列表,將時區變量相應地替換為您的物理時區 http://php.net/manual/en/timezones.php

完成所需的更改後,創建一個php信息文件並重新啟動apache守護程序以通過發出以下命令來應用更改。

迴聲'| 發球區/var/www/html/info.php

systemctl重啟apache2

通過從以下URL的瀏覽器訪問php info腳本來檢查PHP時區是否已正確配置(如下圖所示)。 向下滾動到日期設置以檢查php時區設置。

http://192.168.1.14/info.php

PHP信息輸出

Cacti監控工具將配置和收集的數據存儲在RDBMS數據庫中。 在本教程中,我們將使用MariaDB數據庫後端配置Cacti。 發出以下命令來安裝MariaDB數據庫和訪問mysql數據庫所需的PHP模塊。

apt install mariadb-server php7.0-mysql

安裝MariaDB

安裝MariaDB後,驗證守護程序是否正在運行並通過運行偵聽localhost,端口3306上的網絡連接 netstat命令 命令。

netstat -tlpn | grep mysql

然後登錄MySQL控制台並保護MariaDB 帳戶發出以下命令。

mysql -h localhost

使用mysql; update user set plugin =''where user ='root'; 沖洗特權; 出口

設置MySQL root密碼

在下一步中,通過執行腳本來保護MariaDB mysql_secure_installation 由Debian Stretch存儲庫的安裝包提供。 在運行時,腳本將詢問一系列問題以保護MariaDB數據庫,例如:更改MySQL root密碼,刪除匿名用戶,禁用遠程root登錄以及刪除測試數據庫。 通過發出以下命令來執行腳本,並確保為所有問題鍵入yes以完全保護MySQL守護程序。 除了作為指南之外,請使用以下腳本輸出。

sudo mysql_secure_installation

注意:建議對所有MariaDB運行此腳本的所有部分

服務器在生產中使用! 請仔細閱讀每一步!

為了登錄MariaDB以保護它,我們需要當前的

root用戶的密碼。 如果你剛剛安裝了MariaDB,那麼

你還沒有設置root密碼,密碼是空白的,

所以你應該在這裡按回車。

輸入root的當前密碼(不輸入):

好的,成功使用密碼,繼續...

設置root密碼確保沒有人可以登錄MariaDB

沒有適當授權的root用戶。

您已經設置了root密碼,因此您可以安全地回答'n'。

更改root密碼? [Y / N] y

新密碼:

重新輸入新的密碼:

密碼更新成功!

重新加載特權表

...成功!

默認情況下,MariaDB安裝有一個匿名用戶,允許任何人

登錄到MariaDB而無需創建用戶帳戶

他們。 這僅用於測試並進行安裝

走得更順暢。 你應該在移動到一個之前刪除它們

生產環境。

刪除匿名用戶? [Y / N] y

...成功!

通常,只允許root用戶從'localhost'連接。 這個

確保有人不能從網絡猜測根密碼。

禁止遠程root登錄? [Y / N] y

...成功!

默認情況下,MariaDB附帶一個名為“test”的數據庫,任何人都可以

訪問。 這也僅用於測試,應該刪除

在進入生產環境之前。

刪除測試數據庫並訪問它? [Y / N] y

- 刪除測試數據庫......

...成功!

- 刪除測試數據庫的權限...

...成功!

重新加載特權表將確保到目前為止所做的所有更改

將立即生效。

現在重新加載特權表? [Y / n] y

...成功!

打掃乾淨…

全部完成! 如果您已完成上述所有步驟,請使用MariaDB

安裝現在應該是安全的。

感謝您使用MariaDB!

為了測試MariaDB安全性,請嘗試從控制台登錄數據庫 密碼。 如果沒有提供密碼,則應拒絕訪問數據庫 帳戶。 如果提供了密碼,則應該將登錄過程授予MySQL控制台,如下面的屏幕截圖所示。

mysql -h localhost -u root

mysql -h localhost -u root -p

測試MySQL登錄

登錄MariaDB數據庫後,繼續為Cacti安裝創建數據庫,並創建將用於管理的用戶 仙人掌 數據庫,通過發出以下命令。 更換 仙人掌 數據庫用戶和密碼相應。

創建數據庫仙人掌; 在cacti。*上授予所有'cacti_user'的'cacti_user'@'localhost'; 沖洗特權; 出口

此外,通過發出以下命令,為MySQL時區授予對cacti數據庫用戶的選擇權限。 這是安裝和運行最新版Cacti的新要求。

mysql -u root -p mysql </usr/share/mysql/mysql_test_data_timezone.sql

mysql -u root -p -e'將mysql.time_zone_name上的select選擇為[email protected]'

導入MySQL時區數據庫

在下一步中,打開MySQL服務器默認配置文件並附加以下行,如下面的示例所示。

nano /etc/mysql/mariadb.conf.d/50-server.cnf

在底部添加以下行 50-server.cnf 文件:

max_heap_table_size = 98M tmp_table_size = 64M join_buffer_size = 64M innodb_buffer_pool_size = 485M innodb_doublewrite = off innodb_additional_mem_pool_size = 80M innodb_flush_log_at_timeout = 3 innodb_read_io_threads = 32 innodb_write_io_threads = 16

配置MariaDB服務器

為了應用我們目前所做的所有更改,請重新啟動MySQL和Apache守護程序,並通過發出以下命令來驗證守護程序是否正在運行。

systemctl重啟mysql apache2

systemctl status mysql apache2

配置SNMP服務

Cacti Web監控服務使用SNMP協議來收集設備數據和統計信息。 要在本地Debian 9系統中安裝SNMP程序,SNMP守護程序服務和SNMP MIBS,請使用root權限發出以下命令。

apt install snmp snmpd snmp-mibs-downloader

安裝snmp

此外,安裝行業標準數據記錄工具RRDtool,Cacti使用該工具顯示圖形功能。

apt安裝rrdtool

安裝rrdtool

接下來,編輯SNMP配置文件 /etc/snmp/snmp.conf 並評論“MIB的“ 如下圖所示,在行前面添加一個#標籤(#)。

配置snmp.conf文件

還可以通過打開來配置SNMP守護程序遠程和本地主機訪問 的snmpd.conf filefor編輯和搜索並更新以下行,如下所示:

nano /etc/snmp/snmpd.conf

取消註釋該行以偵聽所有接口上的連接

agentAddress udp:161,udp6:[:: 1]:161

編輯snmpd.conf文件

添加以下行以允許通過以下方式對本地網絡進行SNMP查詢 snmp_string 密碼。 替換snmp社區字符串 snmp_string 密碼和您的網絡CIDR地址。

rocommunity snmp_string localhost rocommunity snmp_string 192.168.1.0 / 25

設置snmp_string

或者,您也可以修改聯繫人和位置變量,以提供有關服務器的信息。 檢查服務器詳細信息時,此信息顯示在Cacti通知區域中。 此外,您的系統主機名,內核版本和系統正常運行時間將顯示在仙人掌通知區域中。

要修改此信息,請編輯 SNMP位置SNMP聯繫人 系統信息部分下的行並添加您自己的值。 默認情況下,為其配置以下值 SNMP位置SNMP聯繫人.

設置sysLocation和sysContact

sysLocation坐在海灣碼頭上sysContact Me <[電子郵件保護]>

在你做了適當的改變之後 的snmpd.conf 文件,保存並關閉文件並重新啟動snmp守護程序以通過發出以下命令來反映更改。 然後檢查snmpd守護程序狀態和處於偵聽狀態的擁有端口。

systemctl重啟snmpd.service

systemctl status snmpd.service

netstat -tulpn | grep snmp

重啟snmp服務

打開SNMP的防火牆端口:

ufw允許161 / udp

為了驗證SNMP守護程序是否按預期工作並檢索localhost的內存樹下的所有SNMP值,請運行以下命令。

snmpwalk -v 2c -c snmp_string localhost memory

使用snmpwalk測試snmp服務器

安裝Cacti-Spine

Cacti-Spine是默認cmd.php輪詢器的替代品,用C語言編寫,以縮短執行時間。 為了從Debian 9中的源代碼編譯和安裝Cacti-Spine pooler,首先執行以下命令,以便將所有必需的依賴項安裝到系統中。

apt install build-essential dos2unix dh-autoreconf help2man libssl-dev libmysql ++ - dev libmariadb-dev libmariadbclient-dev librrds-perl libsnmp-dev

接下來,下載最新版本的Cacti-Spine tar壓縮存檔 wget的 實用程序,提取tarball存檔並通過發出以下命令進入cacti-spine提取的目錄。

wget https://www.cacti.net/downloads/spine/cacti-spine-latest.tar.gz

tar xfz cacti-spine-latest.tar.gz

cd cacti-spine-1.1.24 /

現在,通過發出以下命令從源代碼編譯和安裝Cacti-Spine實用程序。

./bootstrap

/配置

使

使安裝

Cacti-Spine將安裝在 在/ usr /本地/脊椎/ 系統路徑。 Spine建議您為spine二進製文件設置SUID位以支持ICMP ping請求。

chown root:root / usr / local / spine / bin / spine

chmod + s / usr / local / spine / bin / spine

您還必須通過編輯配置文件將Spine連接到cacti數據庫,如下面的文件摘錄所示。

nano /usr/local/spine/etc/spine.conf

spine.conf 文件樣本。 相應地替換憑證。 使用與Cacti配置相同的數據庫憑據。

DB_Host localhost DB_Database cacti DB_User user_cacti DB_Pass pass_cacti DB_Port 3306 DB_PreG 0

編輯spine.conf文件

安裝仙人掌

為了從Debian 9中的源安裝Cacti,首先,下載並解壓縮最新版本的Cacti tarball壓縮存檔,然後通過發出以下命令將所有解壓縮的文件複製到apache web根路徑。

wget https://www.cacti.net/downloads/cacti-latest.tar.gz

tar xfz cacti-latest.tar.gz

cp -rf cacti-1.1.24 / * / var / www / html /

安裝仙人掌

在下一步中,打開cacti配置文件並更新以下行以相應地反映MySQL cacti數據庫用戶名,密碼,主機和URL路徑,如下面的示例所示。

nano /var/www/html/include/config.php

仙人掌 config.php文件 文件示例:

$ database_type ='mysql';
$ database_default ='cacti';
$ database_hostname ='localhost';
$ database_username ='cacti_user';
$ database_password ='cacti_pass';
$ database_port ='3306';
$ database_ssl = false;

向下滾動並更改路徑變量 “/仙人掌“要”/

$ url_path ='/';

cacti配置文件

cacti ULR路徑

接下來,您需要通過加載來填充cacti數據庫 cacti.sql 腳本位於您的Web服務器文檔根位置,並通過發出以下命令來驗證cacti mysql表。

mysql -u cacti_user cacti -p </var/www/html/cacti.sql
mysql -u cacti_user cacti -p -e'show tables'

最後,在開始從Web界面安裝Cacti之前,執行以下命令以刪除Apache Web服務器安裝的默認index.html文件,為Cacti創建日誌文件,並允許Apache運行時用戶對cacti安裝路徑具有完全寫入權限。

rm /var/www/html/index.html

觸摸/var/www/html/log/cacti.log

chown -R www-data:www-data / var / www / html /

通過Web界面開始安裝Cacti,方法是從瀏覽器訪問系統IP地址或域名,然後打開以下URL。

http://192.168.1.14/install

在第一個屏幕上,選中Accept GPL License Agreement並點擊Next按鈕繼續,如下面的屏幕截圖所示。

接受仙人掌許可協議

在下一個屏幕上,向下滾動並驗證安裝程序是否已通過所有系統要求,然後單擊“下一步”按鈕繼續安裝過程。

檢查系統要求

仙人掌設置

仙人掌設置部分2

接下來,選擇 新的主服務器 作為安裝類型,然後單擊“下一步”按鈕繼續。

安裝主服務器

現在驗證cacti安裝程序是否正確檢測到所有關鍵二進制位置和版本。 此外,您應該將Spine二進制路徑更新為 在/ usr /本地/脊椎/斌/脊椎。 您可以選擇古典主題,然後單擊下一步按鈕繼續。

二進制位置和版本

在下一個屏幕上,安裝程序將驗證Apache Web根目錄權限,以檢查是否允許Web服務器執行對cacti安裝路徑的寫入。 如果所有必需的路徑都是可寫的,請單擊“下一步”按鈕繼續。

檢查路徑是否可寫

從提供的列表中選擇所有模板,然後單擊“完成”按鈕以完成安裝。

完成仙人掌安裝

完成安裝過程後,使用以下默認憑據登錄Cacti Web界面,並使用新的強密碼替換admin默認密碼,如以下屏幕截圖所示。

用戶名: 管理員
密碼: 管理員

登錄仙人掌

更改cacti管理員密碼

登錄Cacti Web界面後,導航至 控制台->配置->設置-> 輪詢 並將輪詢器類型從cmd.php更改為 脊柱 二進制,如下圖所示。 向下滾動並點擊 慳了 按鈕以應用更改。

將輪詢器更改為脊椎

然後導航到 控制台->配置->設置->路徑並更新Cacti-Spine 並將配置文件路徑設置為以下路徑 /usr/local/spine/etc/spine.conf 並點擊“保存”按鈕以應用配置,如下圖所示。

設置spine.conf路徑

要通過SNMP添加要監視的新設備,請轉到 控制台->管理->設備 並且打了 + 圖標,如下圖所示。 出於演示目的,我們將通過SNMP協議添加要由Cacti監控的localhost計算機。

添加新的受監控設備

對於將通過SNMP監控的新添加的Linux設備,添加設備的描述,主機名,FQDN或受監控設備的IP地址,然後選擇 本地Linux機器 作為設備模板。 在SNMP選項中,選擇正確的SNMP版本(在本例中我們將使用版本2)並編寫設備SNMP社區字符串,如下圖所示。 如果尚未更改SNMP端口,請將端口值保留為默認值,完成後,向下滾動並單擊“創建”按鈕將設備添加到Cacti數據庫以進行監視。

配置設備設置

配置設備設置 - 部分2

將設備添加到Cacti數據庫後,將在設備頁面頂部顯示SNMP摘要,以防設備被正確檢測和查詢。 要為此設備創建RRDTool SNMP圖,請單擊 為此設備創建圖表 鏈接,檢查要進一步檢查的圖形模板,然後點擊“創建”按鈕移動到下一個屏幕,然後再次點擊“創建”按鈕完成,如下圖所示。

創建圖表

創建圖表2

創建圖表3

為了使圖形可視化,請導航至控制台->管理->設備,檢查要進一步執行操作的設備,然後從操作菜單中選擇放置在樹上(默認樹)。

將設備放在默認樹上

在新屏幕上,將“目標分支”保留為默認值,然後單擊“繼續”按鈕以完成該過程,如下圖所示。

點擊繼續

最後,為了讓Cacti poller開始收集有關受監視設備的數據,您需要添加一個新的cron作業,該作業將每隔5分鐘通過SNMP查詢設備。 通過發出以下命令,添加Apache運行時用戶擁有和執行的預定作業。

crontab -u www-data -e

Crontab工作線:

* / 5 * * * * / usr / bin / php /var/www/html/poller.php> /var/www/html/log/cron.log 2>&1

添加cacti cronjob

添加了pooler cronjob後,請等待大約半小時,以便Cacti有時間收集數據,然後導航到Cacti Web界面中的Graphs選項卡。 展開默認樹,應顯示從受監控計算機收集的圖表,如下面的屏幕截圖所示。

仙人掌監測

目前,可以通過HTTP協議以不安全的方式從客戶端的瀏覽器訪問Cacti界面。 有關您的設備的所有敏感信息以及cacti登錄憑據都以純文本形式發送。 為了加密客戶端瀏覽器和Cacti Web界面之間的流量,請使用root權限發出以下命令以啟用Apache SSL配置。

a2enmod ssl

a2ensite default-ssl.conf

systemctl重啟apache2

然後,通過HTTPS協議導航到Cacti Web界面。 由於Apache Web服務器使用自簽名證書來加密連接,因此應在瀏覽器中顯示錯誤消息。 接受錯誤,您現在可以安全地訪問Cacti Web界面,如以下屏幕截圖所示。

Cacti接口使用SSL保護

就這樣! 您已經從Debian 9中的源代碼成功安裝和配置了Cacti。 有關Cacti的其他自定義設置,請訪問以下鏈接的文檔頁面 https://docs.cacti.net/manual:100

資源