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