編者按:筆者在利用CentOS 7部署MRTG軟件時(shí),遇到顯示中文亂碼問(wèn)題,本文針對(duì)這兩個(gè)問(wèn)題及解決方法依次展示給大家,當(dāng)然其中也有部分問(wèn)題并未得到徹底解決,也希望在這里能與讀者分享探討。
MRTG是一個(gè)監(jiān)控網(wǎng)絡(luò)鏈路流量負(fù)載的工具軟件,原理是用SNMP協(xié)議得到設(shè)備的流量信息,并將流量信息按天、月或年的時(shí)間段繪制成PNG圖片,最終通過(guò)瀏覽器訪問(wèn)HTML網(wǎng)頁(yè)的方式展現(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)歡迎頁(yè)面:
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)建測(cè)試頁(yè)面查看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èn)的網(wǎng)段團(tuán)體名為HelloWorld:
# 行 74,75:取消注釋及變更
# 將需要訪問(wèn)的網(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
測(cè)試SNMP是否正常。
通過(guò)指令生成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
通過(guò)指令來(lái)生成MRTG詳細(xì)流量文件:
for ((i=1 ; i <=3 ;i++)); do env LANG=C mrtg/etc/mrtg/mrtg.cfg; done
第一次執(zhí)行可能出現(xiàn)如圖1所示信息,再執(zhí)行一次就正常了。
通過(guò)MRTG工具生成HTML到index.html上,指令無(wú)報(bào)錯(cuò)即說(shuō)明成功了:
打開瀏覽器可以查看到MRTG主頁(yè)。此時(shí)打開http://192.168.1.100/mrtg時(shí)是Forbidden狀態(tài),此時(shí)設(shè)置MRTG站點(diǎn)的訪問(wèn)權(quán)限。將需要訪問(wèn)MRTG流量監(jiān)控的客戶端添加到網(wǎng)站權(quán)限中,保存后退出:
重啟httpd服務(wù)。然后再次打開http://192.168.1.100/mrtg,訪問(wèn)正常。
此時(shí)整體頁(yè)面不會(huì)自動(dòng)刷新,可以通過(guò)增加定時(shí)任務(wù)刷新MRTG監(jiān)控流量,設(shè)置5分鐘刷新一次:
圖2 詳情頁(yè)面出現(xiàn)亂碼
保存后退出,開啟crond服務(wù)并開機(jī)運(yùn)行。
整體界面都是英文,用戶希望得到漢化,筆者通過(guò)查詢資料,了解到需要修改配置文件:
vi/etc/mrtg/mrtg.cfg
# 新增
Language:chinese
重新生成MRTG索引頁(yè)及詳情頁(yè):
但打開網(wǎng)頁(yè)后會(huì)發(fā)現(xiàn)詳情頁(yè)面變成了亂碼,如圖2所示。
查看該詳細(xì)頁(yè)面文件編碼,顯示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)頁(yè)源代碼中聲明的編碼格式顯示。
保存并退出后,重啟httpd服務(wù),查看詳細(xì)頁(yè)面,顯示正常。如圖3所示。
網(wǎng)頁(yè)已正常訪問(wèn),通過(guò)SecureCRT查看網(wǎng)頁(yè)代碼以及將軟件編碼設(shè)置成UTF-8仍是亂碼,如圖4所示。
設(shè)置vi和vim配置文件追加編碼utf-8及gbk:
最后終于成功解決了在secureCRT下使用vi和vim網(wǎng)頁(yè)源文件亂碼問(wèn)題,如圖5所示。
通過(guò)MRTG來(lái)查看出口核心交換機(jī)流量是十分有必要的,它能直觀地反映出當(dāng)前流量狀況,為排摸流量異常提供了有效的數(shù)據(jù)支撐。不僅如此,MRTG還可以通過(guò)SNMP協(xié)議獲取設(shè)備OID信息,那么我們也可以加以推廣,將部分重要設(shè)備CPU、內(nèi)存及硬盤等信息加入MRTG的監(jiān)控選項(xiàng)中。
在搭建MRTG系統(tǒng)時(shí),筆者遇到了中文顯示問(wèn)題,在解決問(wèn)題過(guò)程中,了解到文件編碼、網(wǎng)頁(yè)代碼中編碼申明及容器編碼等各類網(wǎng)頁(yè)前端編碼問(wèn)題,也學(xué)習(xí)到編輯器相關(guān)編碼知識(shí),但其中有兩方面內(nèi)容并未解決:
圖3 重啟httpd服務(wù)并查看詳細(xì)頁(yè)面顯示正常
圖4 查看網(wǎng)頁(yè)代碼及設(shè)置成UTF-8后仍顯示亂碼
圖5 成功解決亂碼問(wèn)題
1.將MRTG所生成的圖片及網(wǎng)頁(yè)文件存放到其他目錄,比如/data/mrtg中,此時(shí)會(huì)出現(xiàn)手動(dòng)輸入生成文件指令能正常輸出,但通過(guò)crond定時(shí)任務(wù)執(zhí)行相同指令時(shí)出現(xiàn)了問(wèn)題,經(jīng)過(guò)日志查詢顯示無(wú)權(quán)限,之后嘗試過(guò)將/data/mrtg文件夾權(quán)限設(shè)置成777,但無(wú)效。
2.在SecureCRT軟件顯示中文正常后,通過(guò)虛擬機(jī)本地tty連接發(fā)現(xiàn)中文變成了小方塊,嘗試修改locale配置文件,但是沒(méi)有成功。上述兩個(gè)問(wèn)題將進(jìn)一步查找相關(guān)資料。