编者按:笔者在利用CentOS 7部署MRTG软件时,遇到显示中文乱码问题,本文针对这两个问题及解决方法依次展示给大家,当然其中也有部分问题并未得到彻底解决,也希望在这里能与读者分享探讨。
MRTG是一个监控网络链路流量负载的工具软件,原理是用SNMP协议得到设备的流量信息,并将流量信息按天、月或年的时间段绘制成PNG图片,最终通过浏览器访问HTML网页的方式展现给用户,以非常直观的形式显示流量信息。
物理机:CPU为Silver 4114,内存为256 GB、系统为ESXI 6.5。
虚拟机:CPU为2核,内存为2 GB,硬盘:50 GB、系统为CentOS 7.X。
如下所示:
保存退出并重启网卡,更新系统,更新后显示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
创建测试页面查看Apache搭建是否成功:
安装SNMP工具及MRTG:
yum -y install netsnmp net-snmp-utils mrtg
修改SNMP配置文件用于为后续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
第一次执行可能出现如图1所示信息,再执行一次就正常了。
通过MRTG工具生成HTML到index.html上,指令无报错即说明成功了:
打开浏览器可以查看到MRTG主页。此时打开http://192.168.1.100/mrtg时是Forbidden状态,此时设置MRTG站点的访问权限。将需要访问MRTG流量监控的客户端添加到网站权限中,保存后退出:
重启httpd服务。然后再次打开http://192.168.1.100/mrtg,访问正常。
此时整体页面不会自动刷新,可以通过增加定时任务刷新MRTG监控流量,设置5分钟刷新一次:
图2 详情页面出现乱码
保存后退出,开启crond服务并开机运行。
整体界面都是英文,用户希望得到汉化,笔者通过查询资料,了解到需要修改配置文件:
vi/etc/mrtg/mrtg.cfg
# 新增
Language:chinese
重新生成MRTG索引页及详情页:
但打开网页后会发现详情页面变成了乱码,如图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协议获取设备OID信息,那么我们也可以加以推广,将部分重要设备CPU、内存及硬盘等信息加入MRTG的监控选项中。
在搭建MRTG系统时,笔者遇到了中文显示问题,在解决问题过程中,了解到文件编码、网页代码中编码申明及容器编码等各类网页前端编码问题,也学习到编辑器相关编码知识,但其中有两方面内容并未解决:
图3 重启httpd服务并查看详细页面显示正常
图4 查看网页代码及设置成UTF-8后仍显示乱码
图5 成功解决乱码问题
1.将MRTG所生成的图片及网页文件存放到其他目录,比如/data/mrtg中,此时会出现手动输入生成文件指令能正常输出,但通过crond定时任务执行相同指令时出现了问题,经过日志查询显示无权限,之后尝试过将/data/mrtg文件夹权限设置成777,但无效。
2.在SecureCRT软件显示中文正常后,通过虚拟机本地tty连接发现中文变成了小方块,尝试修改locale配置文件,但是没有成功。上述两个问题将进一步查找相关资料。