編者按:筆者在利用CentOS 7部署MRTG軟件時,遇到顯示中文亂碼問題,本文針對這兩個問題及解決方法依次展示給大家,當然其中也有部分問題并未得到徹底解決,也希望在這里能與讀者分享探討。
MRTG是一個監(jiān)控網絡鏈路流量負載的工具軟件,原理是用SNMP協(xié)議得到設備的流量信息,并將流量信息按天、月或年的時間段繪制成PNG圖片,最終通過瀏覽器訪問HTML網頁的方式展現給用戶,以非常直觀的形式顯示流量信息。
物理機:CPU為Silver 4114,內存為256 GB、系統(tǒng)為ESXI 6.5。
虛擬機:CPU為2核,內存為2 GB,硬盤:50 GB、系統(tǒng)為CentOS 7.X。
如下所示:
保存退出并重啟網卡,更新系統(tǒng),更新后顯示CentOS Linux release 7.8.2003(Core):
yum -y install httpd
安裝完成后刪除默認歡迎頁面:
rm -f/etc/httpd/conf.d/welcome.conf
修改默認配置文件:
vi/etc/httpd/conf/httpd.conf
# 行 95:變更
ServerName mrtg.abc.com:80
# 行 151:變更
AllowOverride All
# 新增
ServerTokens Prod
KeepAlive On
保存退出,重啟服務,并將服務設置成開機運行:
systemctl start httpd
systemctl enable httpd
將HTTP服務加入防火墻:
firewall-cmd --addservice=http --permanent
重啟防火墻配置:
firewall-cmd --reload
創(chuàng)建測試頁面查看Apache搭建是否成功:
安裝SNMP工具及MRTG:
yum -y install netsnmp net-snmp-utils mrtg
修改SNMP配置文件用于為后續(xù)MRTG提供準備:
vi/etc/SNMP/snmpd.conf
取消默認的public團體名:
# 行 41:增加注釋
#com2sec not Config User default public
設置本地團體名和允許被SNMP客戶端訪問的網段團體名為HelloWorld:
# 行 74,75:取消注釋及變更
# 將需要訪問的網絡命名為mynetwork
# 更新團體名,為了安全期間建議不使用public和private
圖1 第一次生成MRTG詳細流量文件可能出現的部分信息
com2sec local localhost HelloWorld
com2sec mynetwork 192.168.1.0/24 HelloWorld
# 行 78,79:取消注釋及變更
group MyRWGroup v2c local
group MyROGroup v2c mynetwork
# 行 85:取消注釋
view all included .1 80
# 行 93,94:取消注釋及變更
access MyROGroup ""v2c noauth exact all none none
access MyRWGroup ""v2c noauth exact all all all
保存退出,重啟SNMP服務并設置開機啟動:
systemctl start snmp
systemctl enable snmp
將SNMP添加到防火墻,重新加載防火墻配置:
firewall-cmd --addservice=snmp --permanent
firewall-cmd --reload
測試SNMP是否正常。
通過指令生成MRTG配置文件。
修改MRTG配置文件,保存退出:
vi/etc/mrtg/mrtg.cfg
# 行 8:取消注釋及變更
WorkDir:/var/www/html/mrtg
# 行 16:取消注釋
Options[_]:grow right,bits
在/var/www/html下新增MRTG文件夾:
mkdir/var/www/html/mrtg
通過指令來生成MRTG詳細流量文件:
for ((i=1 ; i <=3 ;i++)); do env LANG=C mrtg/etc/mrtg/mrtg.cfg; done
第一次執(zhí)行可能出現如圖1所示信息,再執(zhí)行一次就正常了。
通過MRTG工具生成HTML到index.html上,指令無報錯即說明成功了:
打開瀏覽器可以查看到MRTG主頁。此時打開http://192.168.1.100/mrtg時是Forbidden狀態(tài),此時設置MRTG站點的訪問權限。將需要訪問MRTG流量監(jiān)控的客戶端添加到網站權限中,保存后退出:
重啟httpd服務。然后再次打開http://192.168.1.100/mrtg,訪問正常。
此時整體頁面不會自動刷新,可以通過增加定時任務刷新MRTG監(jiān)控流量,設置5分鐘刷新一次:
圖2 詳情頁面出現亂碼
保存后退出,開啟crond服務并開機運行。
整體界面都是英文,用戶希望得到漢化,筆者通過查詢資料,了解到需要修改配置文件:
vi/etc/mrtg/mrtg.cfg
# 新增
Language:chinese
重新生成MRTG索引頁及詳情頁:
但打開網頁后會發(fā)現詳情頁面變成了亂碼,如圖2所示。
查看該詳細頁面文件編碼,顯示ISO-8859,屬于中文正常文件編碼。再查看該HTML中meta標簽,顯示charset=“gb2312”也正常。
筆者進一步想到Web容器Apache編碼設置:
vi/etc/httpd/conf/httpd.conf
# 行 316:變更
AddDefaultCharset OFF
默認編碼是UTF-8,此時將其改成OFF,讓Apache以網頁源代碼中聲明的編碼格式顯示。
保存并退出后,重啟httpd服務,查看詳細頁面,顯示正常。如圖3所示。
網頁已正常訪問,通過SecureCRT查看網頁代碼以及將軟件編碼設置成UTF-8仍是亂碼,如圖4所示。
設置vi和vim配置文件追加編碼utf-8及gbk:
最后終于成功解決了在secureCRT下使用vi和vim網頁源文件亂碼問題,如圖5所示。
通過MRTG來查看出口核心交換機流量是十分有必要的,它能直觀地反映出當前流量狀況,為排摸流量異常提供了有效的數據支撐。不僅如此,MRTG還可以通過SNMP協(xié)議獲取設備OID信息,那么我們也可以加以推廣,將部分重要設備CPU、內存及硬盤等信息加入MRTG的監(jiān)控選項中。
在搭建MRTG系統(tǒng)時,筆者遇到了中文顯示問題,在解決問題過程中,了解到文件編碼、網頁代碼中編碼申明及容器編碼等各類網頁前端編碼問題,也學習到編輯器相關編碼知識,但其中有兩方面內容并未解決:
圖3 重啟httpd服務并查看詳細頁面顯示正常
圖4 查看網頁代碼及設置成UTF-8后仍顯示亂碼
圖5 成功解決亂碼問題
1.將MRTG所生成的圖片及網頁文件存放到其他目錄,比如/data/mrtg中,此時會出現手動輸入生成文件指令能正常輸出,但通過crond定時任務執(zhí)行相同指令時出現了問題,經過日志查詢顯示無權限,之后嘗試過將/data/mrtg文件夾權限設置成777,但無效。
2.在SecureCRT軟件顯示中文正常后,通過虛擬機本地tty連接發(fā)現中文變成了小方塊,嘗試修改locale配置文件,但是沒有成功。上述兩個問題將進一步查找相關資料。