RHEL4U5搭建網絡檢測服務(SNMP)

SNMP好久沒做了,公司突然說要在Linux服務器上建一個檢測系統,那自然是非mrtg莫屬了!
只好把以前的資料重新整理一下嘍!
請尊重作者的勞動,轉載請註明出處:http://junger.cublog.cn
本文中使用的系統爲RHEL4U5,本機IP地址爲192.168.1.100
1.請確保你的系統安裝了以下軟件包
[root@zone src]# rpm -qa |grep snmp
net-snmp-5.1.2-11.EL4.10
net-snmp-utils-5.1.2-11.EL4.10
net-snmp-devel-5.1.2-11.EL4.10
net-snmp-libs-5.1.2-11.EL4.10
注意系統有可能會提示你裝
beecrypt-devel-3.1.0-6.i386.rpm
elfutils-devel-0.97.1-4.i386.rpm
elfutils-libelf-devel-0.97.1-4.i386.rpm
這些文件分別在第二張和第四張盤中。
2.修改/etc/snmp/snmpd.conf
 
去掉如下一行的註釋
view mib2   included  .iso.org.dod.internet.mgmt.mib-2 fc
 
在大約55行處添加如下一行
view    systemview    included   .1.3.6.1.2.1.2
 
把如下行
access  notConfigGroup ""      any       noauth    exact  systemview none none
改作:
access  notConfigGroup ""      any       noauth    exact  mib2 none none
 
3.啓用snmpd服務
#service snmpd start
#chkconfig --levle 2345 snmpd on
 
4.查看端口的開啓狀況
# netstat -tunlp |grep snmp
tcp            0 0.0.0.0:199             0.0.0.0:*               LISTEN      4973/snmpd         
udp            0 0.0.0.0:161             0.0.0.0:*              4973/snmpd   
 
二、MRTG生成供瀏覽圖像需要httpd服務的支持,同時也需要gd、libpng和zlib三個軟件包的支持,而gd的正常運行也需要其它的幾個軟件,下面一併安裝它們。
# rpm -qa | grep libpng
libpng-1.2.7-1
libpng10-1.0.16-1
libpng10-devel-1.0.16-1
libpng-devel-1.2.7-1
# rpm -qa | grep ^libxml
libxml2-python-2.6.16-6
libxml2-devel-2.6.16-6
libxml2-2.6.16-6
# rpm -qa | grep ^gd-
gd-2.0.28-4
gd-devel-2.0.28-4
# rpm -qa | grep jpeg
libjpeg-6b-33
libjpeg-devel-6b-33
# rpm -qa | grep zlib
zlib-1.2.1.2-1.2
zlib-devel-1.2.1.2-1.2
# rpm -qa | grep freetype
freetype-2.1.9-1
freetype-devel-2.1.9-1
我的已經安裝過了,如果沒有請根據自己的情況查漏補缺
請確保你的軟件包的版本號等於或高於以上顯示的版本
三、安裝配置MRTG
 
1.下載mrtg,目前最新版本爲mrtg-2.15.2.tar.gz
#tar zxvf mrtg-2.15.2.tar.gz
# cd mrtg-2.15.2
# ./configure --prefix=/usr/local/mrtg --sysconfdir=/etc/mrtg --with-gd=/usr/local/gd2/include --with-gd-lib=/usr/local/gd2/lib --with-gd-inc=/usr/local/gd2/include --with-png=/usr/local/include --with-png-lib=/usr/local/lib --with-png-inc=/usr/local/include --with-zlib=/usr/local/zlib/include --with-zlib-lib=/usr/local/zlib/include --with-zlib-inc=/usr/local/zlib/include
# make
# make install
3.基本配置
 
生成主配置文件
#/usr/local/mrtg/cfgmaker
public@localhost > /etc/mrtg/mrtg.cfg
 
編輯/etc/mrtg/mrtg.cfg

#WorkDir:/home/http/mrtg
去掉註釋並改爲
WorkDir: /usr/local/apache/htdocs/mrtg   (此處是你的httpd默認的主目錄)
 
去掉如下行的註釋
# Options[_]: growright, bits
 
添加如下行,實現網頁中的中文字符顯示
Language:gb2312
 
生成MRTG網頁主頁面文件
#/usr/local/mrtg/bin/indexmaker /etc/mrtg/mrtg.cfg --output=/usr/local/apache/htdocs/mrtg/index.html  --title="My MRTG"
 
4.啓動MRTG
#env LANG=C /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg.cfg
這個命令會輸出一些錯誤信息,一般可以安全忽略,連續執行三次此命令即可。
 
5.MRTG生成的web頁面是靜態的,爲了能讓其不斷的刷新,需要將以上命令添加進crontab
#crontab -e
添加如下一行
*/3 * * * * env LANG=C /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg.cfg
注:此行表示每三分鐘刷新一次,你可以根據自己的需要修改刷新時間間隔。
 
6.安裝完畢,可以去查看結果了,在瀏覽器輸入形如以下地址
http://192.168.1.100/mrtg   (IP地址爲你的機器IP)
四、一個示例:內存使用監視
 
1.新建一個存放腳本的文件夾
#mkdir -pv /usr/local/apache/htdocs/mrtgsh
 
2.建立腳本文件
#vi /usr/local/apache/htdocs/mrtgsh/mrtg.memory
添加如下腳本:
#!/bin/bash
# run this script to check the mem usage.
totalmem=`/usr/bin/free |grep Mem |awk '{print $2}'`
usedmem=`/usr/bin/free |grep Mem |awk '{print $3}'`
UPtime=`/usr/bin/uptime | awk '{print $3""$4""$5}'`
echo $totalmem
echo $usedmem
echo $UPtime
讓其具有運行權限
#chmod 755 /usr/local/apache/htdocs/mrtgsh/mrtg.memory
 
3.編輯/etc/mrtg/mrtg.cfg
添加如下內容
Target[memory]: `/usr/local/apache/htdocs/mrtgsh/mrtg.memory`
MaxBytes[memory]: 4096000
Title[memory]:Memory Usages
ShortLegend[memory]: &
kmg[memory]:kB,MB
kilo[memory]:1024
YLegend[memory]:   Memory Usage :
Legend1[memory]:   Total Memory :
Legend2[memory]:   Used Memory :
LegendI[memory]:   Total Memory :
LegendO[memory]:   Used Memory :
Options[memory]: growright,gauge,nopercent
PageTop[memory]:<H1>Memory Usages</H1>
 
4.重新生成主頁面文件
#/usr/local/mrtg/bin/indexmaker /etc/mrtg/mrtg.cfg --output=/usr/local/apache/htdocs/mrtg/index.html  --title="My MRTG"
 
5.可根據情況重新啓動MRTG,然後就可以查看效果了。
RHEL4U5搭建網絡檢測服務(SNMP) <wbr>---轉
偵測CPU負載量
建立腳本mrtg.cpu
#!/bin/bash
  cpuusr=`/usr/bin/sar -u 1 3 | grep Average | awk '{print $3}'`
  cpusys=`/usr/bin/sar -u 1 3 | grep Average | awk '{print $5}'`
  UPtime=`/usr/bin/uptime | awk '{print $3 " " $4 " " $5}'`
  echo $cpuusr
  echo $cpusys
  echo $UPtime
  echo
www.zhang.org 這裏寫上你主機名稱。
 
#vi /etc/mrtg/mrtg.cfg
添加如下內容
Target[localhost]: `/usr/local/apache/htdocs/mrtg/cpu/mrtg.cpu`
MaxBytes[localhost]: 100
Options[localhost]: gauge, nopercent, growright
YLegend[localhost]: CPU loading (%)
ShortLegend[localhost]: %
LegendO[localhost]: &nbsp; CPU 使用者負載;
LegendI[localhost]: &nbsp; CPU 純系統負載;
Title[localhost]: CPU ?t???v
PageTop[localhost]: <H1>VBird 主機 CPU 負載率</H1>
 <TABLE>
   <TR><TD>System:</TD>     <TD>RedHat 6.1 in Linux Kernel 2.2.19</TD></TR>
 </TABLE>
 
 
同樣我們也可以即時偵測上線人數
建立腳本mrtg.person.sh
#!/bin/bash
# 這個程式主要在計算有多少人以 WWW 的方式連進我們的主機!
# 1. 計算連線數目
echo `netstat -a | grep www|awk '{print $5}'|sort | wc -l|awk '{print$1 - 1}'`
# netstat -a | grep www|awk '{print $5}'|sort| uniq 
# 2. 計算連線人數:
echo `netstat -a | grep www|awk '{print $5}'|cut -d":" -f1|sort| uniq |wc -l | awk '{print $1 - 1}'`
# netstat -a | grep www|awk '{print $5}'|cut -d":" -f1|sort| uniq 
# 3.輸出時間
  UPtime=`/usr/bin/uptime | awk '{print $3 " " $4 " " $5}'`
  echo $UPtime
  echo your.host.name
 
#vi /etc/mrtg/mrtg.cfg
添加如下內容
### CPU Loading detecting ...
Target[tsai.adsldns.org_person]: `/usr/local/mrtg-2/bin/mrtg.person.sh` <==檔案放置的路徑與名稱
MaxBytes[tsai.adsldns.org_person]: 500
Options[tsai.adsldns.org_person]: gauge, nopercent, growright
YLegend[tsai.adsldns.org_person]: Online Users
ShortLegend[tsai.adsldns.org_person]: %
LegendI[tsai.adsldns.org_person]: &nbsp; 連線數目 :
LegendO[tsai.adsldns.org_person]: &nbsp; 上線人數 :
Title[tsai.adsldns.org_person]: WWW 上線人數統計表
PageTop[tsai.adsldns.org_person]: <H1> WWW 主機上線人數 </H1>
 <TABLE>
  <TR><TD>System:</TD>   <TD>Aerosol Lab. in Redhat 6.1 Kernel 2.2.18</TD></TR>
   <TR><TD>Maintainer:</TD> <TD>VBird</TD></TR>
 </TABLE>
注意要重新生成頁面文件,重啓mrtg……
如圖顯示:
RHEL4U5搭建網絡檢測服務(SNMP) <wbr>---轉
以下是一個apache連接的例子

  首先再mrtg.cfg里加入apache連接的配置段

  Target[apache_conn]: `/bin/mrtg.apa.pl`

  Options[apache_conn]: gauge,nopercent,growright

  Directory[apache_conn]:apache_conn

  MaxBytes[apache_conn]: 4000

  YLegend[apache_conn]: apache連接數

  ShortLegend[apache_conn]: 個

  LegendI[apache_conn]: apache總連接數:

  LegendO[apache_conn]: apache當前連接數

  Title[apache_conn]: apache連接數

  PageTop[apache_conn]: <h1>apache連接數</h1>

  Target指的是mrtg從那裏取畫曲線的值,此處可以從snmp和腳本取值,如從腳本取值需注意,需要前後用`來指定腳本路徑而不是' .

  []指這個配置段的名稱,這裏爲apache_conn,屆時會在mrtg的workdir裏建立同名的目錄

  Maxbytes指mrtg取值後能表現的最大值

  YLegend指再圖標中縱向的名稱

  ShortLegend指在圖標中數值後面所跟的單位

  LegendI 傳遞過去的第一個值

  LegendO 傳遞過去的第二個值

  Title 網頁title

  Pagetop 網頁顯示名稱

  mrtg.apa.pl

  #!/usr/bin/perl

  $hostname=`hostname`;

  $hostname=~s/\s+$//;

  $apache_all_conn=`netstat -an|grep 192.168.0.1:80|wc -l`;

  $apache_conn=`netstat -an|grep 192.168.0.1:80|grep ESTABLISHED|wc -l`;

  $apache_all_conn=~s/\n$//;

  $apache_conn=~s/\n$//;

  $apache_all_conn=~s/^\s+|\s+$//;

  $apache_conn=~s/^\s+|\s+$//;

  $gettime=`uptime|awk '{print \$1" "\$3" "\$4}'`;

  $gettime=~s/\,|\n$//g;

  print("$apache_all_conn\n");

  print("$apache_conn\n");

  print("$gettime\n");

  print("$hostname\n");

  以上腳本爲perl編寫,由於apache的連接可以使用netstat查看,所以我用裏一個簡單的shell命令組合來獲取apache的總連接數和當前建立連接的連接數.

  需要注意以下幾點

  1) 使用命令傳遞值給mrtg時,mrtg只能接受4個參數,真正用於畫圖的只有2個

  2) 4個參數必須依次爲 值1,值2,運行時間,主機名

  3) 4個參數後不得有\n等換行符

  由於mrtg.cfg的改變,所以必須依次使用以下命令

  /usr/local/mrtg/bin/indexmaker --output=/var/www/mrtg/index.html /etc/mrtg.cfg

  使用mrtg的indexmaker重生成index.html文件,否則你無法看到新加入的apache連接的監控.

  /usr/local/mrtg/bin/mrtg /etc/mrtg.cfg

  使用mrtg命令傳入數值,同樣會報3次錯,忽略即可

  再打開瀏覽器,輸入地址,應該可以看到首頁除了網卡的流量外再下方會加入apache連接的圖

  確認無誤後,可再/etc/mrtg.cfg里加入

  RunAsDaemon: Yes

  在使用一次

  /usr/local/mrtg/bin/mrtg /etc/mrtg.cfg

  mrtg就會使用daemon方式運行

  你以後要做的只是每次使用瀏覽器看看圖就可以了,是不是很輕鬆
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章