上文书《MRTG一款小白最爱的系统网络监控神器一(初级篇)》,我们初步介绍了 MRTG
以及它的安装使用方法。
但是这些方法只能简单地监控网络流量,要想应用于更复杂一些的场景,就需要我们定制高级配置了。
本章会涉及到如下配置设定的说明,内容比较多,先来个概览:
- 监控CPU、内存和硬盘
- 监控交换机、打印机等网络设备
- 自动化抓取流量数据
MRTG
自动配置生成及多设备自定义页面模板制作
其中,自动配置生成是我通过收集整理各个命令步骤后做成的自动批处理程序,文中有下载。
自定义页面模板也是一样,方便以后添加各项设备,下载链接也放在文章中间。
好,闲言碎语不要讲,先表一表如何监控三大金刚:CPU、内存和硬盘。
在说这三大金刚之前,我们先来简单介绍一款工具 iReasoning MIB Browser
。
这款工具是用来查询 snmp
信息的,非常方便,因此我们可以用它来精确定位设备的 OID
。
这里插句嘴,Windows和Linux的OID定义不同不能混用,所以才要用这款工具精准定位。
按照老习惯,省得你找了,给出它的下载链接:iReasoning MIB Browser 密码:y03i
有了 iReasoning MIB Browser
,我们就可以开始了。
一、设置监控CPU的配置
1、安装打开 iReasoning MIB Browser
,我们先来查找CPU的 OID
。
第一次使用,可能要先点击
File
>Load MIBs
> 选择HOST-RESOURCES-MIB
加载一下MIB库。
- 如图,在
Address
中输入设备的IP地址,点击右边的Go
。 - 在左侧依次展开
host
>hrDevice
>hrProcessorTable
>hrProcessorLoad
。 - 双击
hrProcessorLoad
,右侧表格中相应CPU核数的信息,Value
为 当前负载。
从下图中可以得出我们想要的结果,即两个CPU内核的 OID
分别为 .1.3.6.1.2.1.25.3.3.1.2.4
和 .1.3.6.1.2.1.25.3.3.1.2.5
,当前负载均为4。
2、配置文件参考。
这里设定显示两个CPU内核的负载情况。
如果你想要取平均值或更多内核时,可以修改 Target
参数。
平均值可以这样设定:
(.1.3.6.1.2.1.25.3.3.1.2.4:
# CPU监控配置
# mrtg_cpu.cfg
RunAsDaemon: yes
Interval: 5
WorkDir: c:\wamp64\www\mrtg
Target[cpu]:.1.3.6.1.2.1.25.3.3.1.2.4&.1.3.6.1.2.1.25.3.3.1.2.5:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。
MaxBytes[cpu]: 100
Options[cpu]: gauge, absolute, growright, noinfo, nopercent
YLegend[cpu]: CPU Load (%)
ShortLegend[cpu]: %
Legend1[cpu]: CPU core1 use in percent
Legend2[cpu]: CPU core2 use in percent
LegendI[cpu]: CPU core1 use in percent
LegendO[cpu]: CPU core2 use in percent
Title[cpu]: CPU Load Performance
PageTop[cpu]: <H1>CPU Load Performance</H1>
3、运行测试命令。
cd c:\mrtg\bin
perl mrtg c:\wamp64\www\mrtg\mrtg_cpu.cfg
4、打开测试网页。
http://localhost/mrtg/cpu.html
如果命令控制台上没有特别的错误,可能需要观察等待5分钟以上图形才可能有变化。
二、设置监控内存和硬盘的配置
内存和硬盘为啥要放一起讲呢?因为它们是一伙儿的,往下看~
1、和CPU配置一样,先查查OID。
依次展开
iReasoning MIB Browser
的host
>hrStorage
>hrStorageTable
>hrStorageEntry
。分别双击
hrStorageAllocationUnit
、hrStorageSize
和hrStorageUsed
三项。它们分别表示:分配单元(簇)、总容量和已使用容量。
以上这三项在右侧表格信息中,第一项为C盘、第二项为D盘,以此类推。
最后第二项为虚拟内存,最后一项为物理内存。
这三项它们之间的关系是:
实际总容量 = 分配单元(hrStorageAllocationUnit) * 总容量(hrStorageSize)
实际已使用容量 = 分配单元(hrStorageAllocationUnit) * 已使用容量(hrStorageUsed)
占用率
=实际已使用容量
/实际总容量
内存的OID信息:
硬盘的OID信息:
2、配置文件参考。
# 内存监控配置
# mrtg_memory.cfg
RunAsDaemon: yes
Interval: 5
WorkDir: c:\wamp64\www\mrtg
# 内存的分配单元为65536,所以要先乘以65536,然后除以两次1024转换为M单位。
Target[memory]:1.3.6.1.2.1.25.2.3.1.6.4&1.3.6.1.2.1.25.2.3.1.5.4:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。 * 65536 / 1024 / 1024
MaxBytes[memory]: 2048
Title[memory]: Memory usage (RigolBuckUp)
PageTop[memory]: <H1>Memory (RigolBuckUp)</H1>
kMG[memory]: M,G,T,P,X
YLegend[memory]: Memory
ShortLegend[memory]: bytes
Legend1[memory]: Commited Memory
Legend2[memory]: Total Memory
LegendI[memory]: Memory Used
LegendO[memory]: Memory Total
Options[memory]: growright,nopercent,gauge
# 硬盘监控配置
# mrtg_disk.cfg
RunAsDaemon: yes
Interval: 5
workdir: c:\wamp64\www\mrtg
# 磁盘的分配单元为4096,所以要先乘以4096,然后除以两次1024转换为M单位。
Target[disk]:1.3.6.1.2.1.25.2.3.1.6.1&1.3.6.1.2.1.25.2.3.1.5.1:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。 * 4096 / 1024 / 1024
MaxBytes[disk]: 50633
Title[disk]: DISK C:
PageTop[disk]: <H1>DISK C:</H1>
kMG[disk]: M,G,T,P,X
YLegend[disk]: hdd
ShortLegend[disk]: bytes
Legend1[disk]: Used Disk
Legend2[disk]: Total Disk
LegendI[disk]: Disk Used
LegendO[disk]: Disk Total
Options[disk]: growright,nopercent,gauge
3、运行测试命令。
cd c:\mrtg\bin
perl mrtg c:\wamp64\www\mrtg\mrtg_memory.cfg
perl mrtg c:\wamp64\www\mrtg\mrtg_disk.cfg
4、打开测试网页。
http://localhost/mrtg/memory.html
http://localhost/mrtg/disk.html
如果命令控制台上没有特别的错误,可能需要观察等待5分钟以上图形才可能有变化。
三、监控交换机、打印机等网络设备
这里我们只拿打印机做试验,其他设备大同小异。
1、首先开启设备的SNMP。
可以通过图形设定界面,也可以通过CLI命令控制台,需要参考具体设备的设置方法。
图形界面参考:
CLI命令控制台参考:
snmp-servercommunity public RO
snmp-serverhost x.x.x.x public
snmp-serverenable traps
snmp-servertrap-source Vlan1
2、生成配置文件
md c:\wamp64\www\device
perl cfgmaker public@x.x.x.x --global "workdir: c:\wamp64\www\device" --output c:\wamp64\www\device\device.cfg
3、修改配置文件
把上述 device.cfg
用文本编辑器打开,在最开头添加以下几行内容。
RunAsDaemon: yes
Interval: 5
Options[_]: growright, bits
然后,把删除包含 Loopback
和 USB
等内容的部分,只保留主网卡(通常是第一项)的那部分内容,保存后关闭文件。
4、开始监控测试
cd c:\mrtg\bin
perl mrtg c:\wamp64\www\device\device.cfg
打开网页 http://127.0.0.1/device/xxxxxx.html
,xxxxxx
通常是Target后面方括号中的内容。
按照配置文件的设定,每间隔5分钟页面会自动刷新流量监控。
四、自动化抓取流量数据
一般情况下,我们在配置文件中添加 RunAsDaemon: yes
参数,然后执行监控命令后就会自动抓取数据而不会停止。
但这种情况有一些不足,比如窗口不能关闭,否则程序就退出了,比如需要用户事先登录到系统后还需要手动执行。
综上所述,为了实现自动化管理,我们最好把它做成服务程序。
我们要用到一个工具:srvany.zip 密码:ty82
下载解压后可以看到有两个文件,分别是 instsrv.exe
和 srvany.exe
。
第一个是安装服务用的,第二个是运行服务用的。
把它们复制到 c:\mrtg\bin
下。
1、安装服务项,可以这样:
# 需要管理员权限
instsrv MRTG c:\mrtg\bin\srvany.exe
2、导入注册表(注意其中的路径):
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG\Parameters]
"Application"="c:\\perl64\\bin\\wperl.exe"
"AppParameters"="c:\\mrtg\\bin\\mrtg --logging=eventlog c:\\mrtg\\bin\\mrtg.cfg"
"AppDirectory"="c:\\mrtg\\bin\\"
就这样,服务安装好了。
到 计算机管理
> 服务
中查看,会看到有新的名称为 MRTG
的服务生成。
当然了,服务名称是可以修改的,只要把导入的注册表项 MRTG
改成你想要的(比如:MRTG_192_168_1_99)就行了,比如:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG_192_168_1_99\Parameters]
五、MRTG
自动配置生成及多设备自定义页面模板制作
1、自动配置程序
手动配置总归有些累,时间管理大师是我们的目标,如果有很多很多的设备需要添加设置呢,想想都累人啊!
OK,我总结整理了一些批处理程序,用于减轻手工劳动(后面有下载)。
请注意,我没有采用命令输入参数的形式,而是在文件中直接修改参数,而后执行。
1-1、配置生成
:: 生成mrtg配置文件
set strIP=x.x.x.x
:: 下面这个团体一般是public
set strComminuty=public
set strPath=x_x_x_x
set strCfgFilename=mrtg_x_x_x_x.cfg
mkdir c:\wamp\www\%strPath%
start /b /w perl cfgmaker %strComminuty%@%strIP% --global "WorkDir: c:\wamp\www\%strPath%" --output %strCfgFilename%
:: 别忘记添加 RunAsDaemon: yes
echo Options[_]: growright, bits>> %CD%\tmp1.txt
echo RunAsDaemon: yes>> %CD%\tmp1.txt
type %strCfgFilename% >> %CD%\tmp1.txt
del /f /q %CD%\%strCfgFilename%
rename %CD%\tmp1.txt %strCfgFilename%
pause
1-2、生成页面文件
:: 注意,output后面接路径。index.html的文件名可以是其他名字(例如设备的名字)
:: mrtg.cfg文件名可修改为实际对应设备的配置文件名
set strPath=x_x_x_x
set strCfgFilename=mrtg_x_x_x_x.cfg
del /F /S /Q c:\wamp64\www\%strPath%\*.*
perl indexmaker --output=c:\wamp64\www\%strPath%\index.html %strCfgFilename% --columns=1
:: start /Dc:\mrtg\bin wperl mrtg --logging=eventlog %strCfgFilename%
pause
1-3、安装服务
:: 安装服务(需要管理员权限)
set strServiceName=MRTG_x_x_x_x
set strSrvanyPath=c:\mrtg\bin
set strSrvanyPathReg=c:\\mrtg\\bin
%strSrvanyPath%\instsrv %strServiceName% %strSrvanyPath%\srvany.exe
:: 手动导入以下注册表内容
:: ============================================
:: Windows Registry Editor Version 5.00
::
:: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG_x_x_x_x\Parameters]
:: "Application"="c:\\perl64\\bin\\wperl.exe"
:: "AppParameters"="c:\\mrtg\\bin\\mrtg --logging=eventlog c:\\mrtg\\bin\\mrtg_x_x_x_x.cfg"
:: "AppDirectory"="c:\\mrtg\\bin\\"
:: ============================================
echo Windows Registry Editor Version 5.00>>%strSrvanyPath%\%strServiceName%.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%strServiceName%\Parameters]>>%strSrvanyPath%\%strServiceName%.reg
echo "Application"="c:\\perl64\\bin\\wperl.exe">>%strSrvanyPath%\%strServiceName%.reg
echo "AppParameters"="%strSrvanyPathReg%\\mrtg --logging=eventlog %strSrvanyPathReg%\\%strServiceName%.cfg">>%strSrvanyPath%\%strServiceName%.reg
echo "AppDirectory"="%strSrvanyPathReg%\\">>%strSrvanyPath%\%strServiceName%.reg
reg import %strSrvanyPath%\%strServiceName%.reg /reg:64
pause
总结如下,直接点击下载。
- cfgMaker.bat 密码:65o5 ------------ 生成配置文件
- indexMaker.bat 密码:u2s6 ---------- 生成页面文件
- instsrv.bat 密码:3uhh ------------- 安装服务
- doAll.bat 密码:bwxs ------------- 整合以上三项一次搞定
注意,安装服务需要管理员权限,所以第3项和第4项应该以管理员权限方式运行。
2、PERL脚本的修改
由于使用官方的PERL脚本生成的配置标题会产生网络适配器名称加数字这样的内容。
如:192_168_1_99_1
。
我虽然不是强迫症,但看着挺难受的,于是帮它改成直接是网络适配器的详细名称。
# MRTG的PERL脚本部分修改
# ------ 1.cfgmaker ------
# 修改标题内容为包含网络适配器的名称,而不是单纯的数字
# 大概第749行:
"PageTop[$target_name]: <h1>$html_desc_prefix$html_if_title_desc -- $sysname</h1>
# 修改为:
"PageTop[$target_name]: <h1>$html_desc_prefix$html_if_description -- $sysname</h1>
# ------ 2.indexmaker ------
# 另外,从大概562行开始,可以修改页面底部的相关信息(如网站链接或联系邮箱等)
3、自定义页面模板
如图,你可以在模板的基础上随意添加或修改设备项,统一、直观、有范!
Logo、顶部标题和底部信息均可自由定制。
下载链接:MRTG自定义页面模板.7z
密码:
★扫码关注公众号, 发送【000737】获取阅读密码
好了,本章内容介绍完了,东西很多很乱,仓促之间定有不足之处,还望各位小伙伴海涵见谅!
我也在学习中,文中如有错误,请务必批评指正!
以后还有什么好玩的,再回来和大家分享。
嗯,就到这里吧,还是要吃饭的,回去搬砖了,拜拜~
WeChat @网管小贾 | www.sysadm.cc