在 FreeBSD 中安装 MRTG 进行监控

1.安装/设置snmpd服务

使用以下命令安装snmpd:

# cd /usr/ports/net-mgmt/net-snmp
# make install clean

然后开始进行相关的设置工作,首先建立snmpd.conf文件,并设置为可写:

# cd /usr/local/share/snmp
# cp snmpd.conf.example snmpd.conf
# chmod 644 snmpd.conf

然后修改snmpd.conf文件,设置以下内容:

com2sec local     localhost       public
disk /
disk /home

要设置snmpd服务在系统启动后自动执行,需要在"/etc/rc.conf"中添加:

# snmpd server
snmpd_enable="YES"

2.安装/设置MRTG

使用以下命令安装MRTG:

# cd /build/ports/net-mgmt/mrtg
# make install clean

首先建立mrtg.cfg,并设置为可写:

# cd /usr/local/etc/mrtg
# cp mrtg.cfg.sample mrtg.cfg
# chmod 644 mrtg.cfg

将mrtg.cfg文件按以下内容进行设置:

# haijd Server MRTG config
#

### Global Config

EnableIPv6: no
WorkDir: /home/www/mrtg
Language: utf-8
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt,/usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt,/usr/share/snmp/mibs/TCP-MIB.txt

######################################################################
# System: server.haijd.net
# Description: FreeBSD 7.0-RELEASE (haijd_server) #0: Thu Mar  6 11:21:36 CST 2008
# Contact: haijd <haijd.yuyi(AT)gmail.com>
# Location: Unknown (edit /usr/local/share/snmp/snmpd.conf)
######################################################################

#================================================================================
# 监控网卡1
# Descr: 'fxp0' | Name: '' | Ip: '192.168.0.50' | Eth: '00:02:b3:90:6f:a7'
#================================================================================

Target[fxp0_lan]: /192.168.0.50:public@localhost:
Options[fxp0_lan]: growright
Directory[fxp0_lan]: fxp0
MaxBytes[fxp0_lan]: 100000000
Kmg[fxp0_lan]: ,k,M,G,T,P
YLegend[fxp0_lan]: Bytes per Second
ShortLegend[fxp0_lan]: B/s
Legend1[fxp0_lan]: 每秒流入量 (单位 Bytes)
Legend2[fxp0_lan]: 每秒流出量 (单位 Bytes)
LegendI[fxp0_lan]: 流入:
LegendO[fxp0_lan]: 流出:
Title[fxp0_lan]: fxp0网络流量[流入+流出]
PageTop[fxp0_lan]: <H1>fxp0网络流量[流入+流出]</H1>
 <TABLE>
  <TR><TD>系统 :</TD><TD>server.haijd.net</TD></TR>
  <TR><TD>描述 :</TD><TD>网络接口fxp0的网络流量(Bytes/s)</TD></TR>
  <TR><TD>位置 :</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>100 MBytes/s</TD></TR>
  <TR><TD>管理员:</TD><TD>haijd.yuyi(AT)gmail.com</TD></TR>
  <TR><TD>说明 :</TD><TD>fxp0 ip=192.168.0.50</TD></TR>
 </TABLE>


#================================================================================
# 监控网卡2
# Descr: 'rl0' | Name: '' | Ip: '192.168.1.1' | Eth: '00:14:85:95:d3:3e'
#================================================================================

#Target[rl0_lan]: /192.168.1.1:public@localhost:
#Options[rl0_lan]: growright
#Directory[rl0_lan]: rl0
#MaxBytes[rl0_lan]: 2000000
#Kmg[rl0_lan]: ,k,M,G,T,P
#YLegend[rl0_lan]: Bytes per Second
#ShortLegend[rl0_lan]: B/s
#Legend1[rl0_lan]: 每秒流入量 (单位 Bytes)
#Legend2[rl0_lan]: 每秒流出量 (单位 Bytes)
#LegendI[rl0_lan]: 流入:
#LegendO[rl0_lan]: 流出:
#Title[rl0_lan]: fxp0网络流量[流入+流出]
#PageTop[rl0_lan]: <H1>rl0网络流量[流入+流出]</H1>
# <TABLE>
#  <TR><TD>系统 :</TD><TD>server.haijd.net</TD></TR>
#  <TR><TD>描述 :</TD><TD>网络接口rl0的网络流量(Bytes/s)</TD></TR>
#  <TR><TD>位置 :</TD><TD>Shenzhen</TD></TR>
#  <TR><TD>最大值:</TD><TD>2 MBytes/s</TD></TR>
#  <TR><TD>管理员:</TD><TD>haijd.yuyi(AT)gmail.com</TD></TR>
#  <TR><TD>说明 :</TD><TD>rl0 ip=192.168.1.1</TD></TR>
# </TABLE>


#================================================================================
# 监控主机连续运行时间[运行天数]
# 注:不能从SNMP中直接取得数据,使用perl script采集数 (/usr/local/etc/mrtg/mrtg-upday.pl)
#================================================================================

Target[upday]: `/usr/local/etc/mrtg/mrtg-updays.pl`
Options[upday]: gauge,nopercent,growright
Directory[upday]: upday
MaxBytes[upday]: 1000
YLegend[upday]: Up Days
ShortLegend[upday]: 天
Legend1[upday]: 主机连续运行时间(天)
Legend2[upday]:
LegendI[upday]: 运行时间:
LegendO[upday]:
Title[upday]: 主机连续运行时间[运行天数]
PageTop[upday]: <h1>主机连续运行时间[运行天数]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>server.haijd.net</TD></TR>
  <TR><TD>描述:</TD><TD>主机连续运行的时间(天)</TD></TR>
  <TR><TD>位置:</TD><TD>ShenZhen</TD></TR>
  <TR><TD>最大值:</TD><TD>1000天</TD></TR>
  <TR><TD>管理员:</TD><TD>haijd.yuyi(AT)gmail.com</TD></TR>
  <TR><TD>说明:</TD><TD> </TD></TR>
 </TABLE>


#================================================================================
# 监控系统负载[1分钟+15分钟]
# MIB: .iso.org.dod.internet.private.enterprises.ucdavis.laTable.laEntry.laLoadInt
# 注:打开snmpd中的监控功能,在snmpd.conf中加入
# view systemview included .1.3.6.1.4.1.2021.10.1.5
#================================================================================

Target[systemload]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.3:public@localhost:
Options[systemload]: gauge,nopercent,growright
Directory[systemload]: load
MaxBytes[systemload]: 3000
YLegend[systemload]: System Load
ShortLegend[systemload]:
Legend1[systemload]: 最近1分钟系统负载(x 100)
Legend2[systemload]: 最近15分钟系统负载(x 100)
LegendI[systemload]: 1分钟负载:
LegendO[systemload]: 15分钟负载:
Title[systemload]: 系统负载(x100)[1分钟+15分钟]
PageTop[systemload]: <h1>系统负载(x100)[1分钟+15分钟]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>server.haijd.net</TD></TR>
  <TR><TD>描述:</TD><TD>系统负载(x100)[1分钟+15分钟]</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>30 (x 100)</TD></TR>
  <TR><TD>管理员:</TD><TD>haijd.yuyi(AT)gmail.com</TD></TR>
  <TR><TD>说明:</TD><TD> </TD></TR>
 </TABLE>


#================================================================================
# 监控CPU负载[用户+闲置]
# MIB: .iso.org.dod.internet.private.enterprises.ucdavis.systemStats
# 注:打开snmpd中的监控功能,在snmpd.conf中加入
# view systemview included .1.3.6.1.4.1.2021.11
#================================================================================

Target[cpuload]: .1.3.6.1.4.1.2021.11.50.0&1.3.6.1.4.1.2021.11.53.0:public@localhost:
Options[cpuload]: nopercent,growright
Directory[cpuload]: cpu
MaxBytes[cpuload]: 100
Unscaled[cpuload]: dwym
YLegend[cpuload]: CPU Utilization
ShortLegend[cpuload]: %;
Legend1[cpuload]: CPU用户负载(%)
Legend2[cpuload]: CPU闲置(%)
LegendI[cpuload]: 用户:
LegendO[cpuload]: 闲置:
Title[cpuload]: CPU负载[用户+闲置]
PageTop[cpuload]: <h1>CPU负载[用户+闲置]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>server.haijd.net</TD></TR>
  <TR><TD>描述:</TD><TD>CPU负载[用户+闲置]</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>100</TD></TR>
  <TR><TD>管理员:</TD><TD>haijd.yuyi(AT)gmail.com</TD></TR>
  <TR><TD>说明:</TD><TD></TD></TR>
 </TABLE>


#================================================================================
# 监控内存使用量[Mem+Swap]
# MIB: .iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed
# 注:打开snmpd中的监控,在snmpd.conf中加入
# view systemview included .1.3.6.1.2.1.25.2.3.1.6
#================================================================================

Target[memory]: .1.3.6.1.2.1.25.2.3.1.6.2&.1.3.6.1.2.1.25.2.3.1.6.3:public@localhost:
Options[memory]: gauge,growright
Directory[memory]: mem
MaxBytes1[memory]: 975510
MaxBytes2[memory]: 1024000
Kmg[memory]: k,M,G,T,P
Kilo[memory]: 1024
Unscaled[memory]: dwym
YLegend[memory]: Bytes
ShortLegend[memory]: B
Legend1[memory]: 已用Mem (Bytes)
Legend2[memory]: 已用Swap(Bytes)
LegendI[memory]: 已用Mem :
LegendO[memory]: 已用Swap:
Title[memory]: 内存使用量[Mem+Swap]
PageTop[memory]: <h1>内存使用量[Mem+Swap]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>server.haijd.net</TD></TR>
  <TR><TD>描述:</TD><TD>Memory和Swap的使用量(Bytes)</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>Mem=502M,Swap=512M</TD></TR>
  <TR><TD>管理员:</TD><TD>haijd.yuyi(AT)gmail.com</TD></TR>
  <TR><TD>说明:</TD><TD> </TD></TR>
 </TABLE>


#================================================================================
# 监控系统进程数[进程数]
# MIB: .iso.org.dod.internet.mgmt.mib-2.host.hrSystem.hrSystemProcesses
# 注:打开snmpd中的系统进程数监控,在snmpd.conf中加入
# view systemview included .1.3.6.1.2.1.25.1.6
#================================================================================

Target[process]: .1.3.6.1.2.1.25.1.6.0&.1.3.6.1.2.1.25.1.6.0:public@localhost:
Options[process]: gauge,nopercent,growright
Directory[process]: process
MaxBytes[process]: 1000
YLegend[process]: Processes
ShortLegend[process]: 个
Legend1[process]: 系统进程数(个)
Legend2[process]:
LegendI[process]: 进程数:
LegendO[process]:
Title[process]: 系统进程数[进程数]
PageTop[process]: <h1>系统进程数[进程数]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>server.haijd.net</TD></TR>
  <TR><TD>描述:</TD><TD>系统进程数(个)</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>1000个</TD></TR>
  <TR><TD>管理员:</TD><TD><a href='mailto:haijd.yuyi(AT)gmail.com'>haijd.yuyi(AT)gmail.com</a></TD></TR>
  <TR><TD>说明:</TD><TD> </TD></TR>
 </TABLE>


#================================================================================
# 监控硬盘空间[系统盘+数据盘]
# MIB: .iso.org.dod.internet.private.enterprises.ucdavis.dskTable.dskEntry.dskUsed
# 注1:打开snmpd中的监控功能,在snmpd.conf中加入
# view systemview included .1.3.6.1.4.1.2021.9.1.8
# 注2:打开snmpd中的系统盘和数据盘监控功能,在snmpd.conf中加入
# disk /
# disk /home
#================================================================================

Target[disk]: .1.3.6.1.4.1.2021.9.1.8.1&.1.3.6.1.4.1.2021.9.1.8.2:public@localhost:
Options[disk]: gauge,growright
Directory[disk]: disk
MaxBytes1[disk]: 5077038
MaxBytes2[disk]: 61263456
Kmg[disk]: k,M,G,T,P
Kilo[disk]: 1024
Unscaled[disk]: dwym
YLegend[disk]: Bytes
ShortLegend[disk]: B
Legend1[disk]: 系统盘已用空间
Legend2[disk]: 数据盘已用空间
LegendI[disk]: 系统已用:
LegendO[disk]: 数据已用:
Title[disk]: 硬盘空间[系统盘+数据盘]
PageTop[disk]: <h1>硬盘空间[系统盘+数据盘]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>server.haijd.net</TD></TR>
  <TR><TD>描述:</TD><TD>系统盘=/(/dev/ad0s1a); 数据盘=/home(/dev/ad0s1g)</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>系统盘=5GB; 数据盘=60GB</TD></TR>
  <TR><TD>管理员:</TD><TD>haijd.yuyi(AT)gmail.com</TD></TR>
  <TR><TD>说明:</TD><TD> </TD></TR>
 </TABLE>


#================================================================================
# 监控打开的TCP连接数[TCP连接数]
# MIB: .iso.org.dod.internet.mgmt.mib-2.tcp.tcpCurrEstab
# 注:打开snmpd中的监控功能,在snmpd.conf中加入
# view systemview included .1.3.6.1.2.1.6.9
#================================================================================

Target[tcpopen]: .1.3.6.1.2.1.6.9.0&.1.3.6.1.2.1.6.9.0:public@localhost:
Options[tcpopen]: gauge,nopercent,growright
Directory[tcpopen]: tcpopen
MaxBytes[tcpopen]: 1000
YLegend[tcpopen]: Tcp Connections
ShortLegend[tcpopen]: 个
Legend1[tcpopen]: 打开的TCP连接数(个)
Legend2[tcpopen]:
LegendI[tcpopen]: TCP连接数:
LegendO[tcpopen]:
Title[tcpopen]: TCP连接数[TCP连接数]
PageTop[tcpopen]: <h1>TCP连接数[TCP连接数]</h1>
 <TABLE>
  <TR><TD>系统:</TD><TD>server.haijd.net</TD></TR>
  <TR><TD>描述:</TD><TD>打开的TCP连接数(个)</TD></TR>
  <TR><TD>位置:</TD><TD>Shenzhen</TD></TR>
  <TR><TD>最大值:</TD><TD>1000个</TD></TR>
  <TR><TD>管理员:</TD><TD>haijd.yuyi(AT)gmail.com</TD></TR>
  <TR><TD>说明:</TD><TD> </TD></TR>
 </TABLE>

然后根据设置建立工作目录:

# mkdir /home/www/mrtg

建立"mrtg-updays.pl"文件,并设置权限为可运行:

# touch mrtg-updays.pl
# chmod 755 mrtg-updays.pl

"mrtg-updays.pl"文件的内容如下:

#!/usr/bin/perl

$machine = `/bin/hostname`;
$uptime1 = `/usr/bin/uptime`;
$uptime2 = $uptime1;

$uptime1 =~ /up (.*?) day/;
$upday = int($1);

$uptime2 =~ /up (.*?) load/;
$uptime = $1;

print "$upday\n";
print "$upday\n";
print "$uptime\n";
print $machine."\n";

按照mrtg.cfg的设置生成相关文件和数据:

# env LANG=C /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

要想让数据定时更新,还需要在"/etc/crontab"文件中添加如下内容:

*/5     *       *       *       *       root    env LANG=C /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

最后生成MRTG的首页:

# indexmaker --output /home/www/mrtg/index.html --title="server.haijd.net" /usr/local/etc/mrtg/mrtg.cfg

由于生成的首页默认是"iso-8859-15"编码,而我们的mrtg.cfg中设置的是"utf-8",所以还要修改首页文件,将里面的:

<meta http-equiv="content-type" content="text/html; charset=iso-8859-15" >

修改为:

<meta http-equiv="content-type" content="text/html; charset=utf-8" >

3.设置Apache

虽然现在数据以及首页都已经生成了,但还没有办法查看。需要在Apache的配置文件中添加如下内容:

Alias /mrtg "/home/www/mrtg"

然后重启Apache:

# apachectl restart

就可以使用地址"http://192.168.0.50/mrtg/",进行查看了!

你可能感兴趣的:(在 FreeBSD 中安装 MRTG 进行监控)