awk:nagios流量監控外掛程式

來源:互聯網
上載者:User

標籤:awk   nagios頻寬監控   nagios頻寬監控外掛程式   nagios流量監控   nagios流量監控外掛程式   

#!/bin/awk -f#function: nagios外掛程式;細定每個網卡的監閥值,指定參數時單位為MB(如果監控周期為1分鐘,則指定的參數為1分鐘傳輸的資料大小,非Mbit/s)##Usage:伺服器(WAN:em1;LAN:em2),頻寬為下行:100Mbit/s,上行:100/3約等於33.3Mbit/s(一般為下行三分之一),警示閥值按80%計算,nagios每分鐘監控一次,如下:#接收(上行):100/8*0.8*60=600(單位MB)#發送(下行):100/3/8*0.8*60=200(單位MB)#監控所有網卡,nrpe配置如下:#command[check_netcount]=/usr/local/nagios/libexec/check_netcount.awk em1 200 600 em2 600 200#註:因為是NAT環境,所以em2網卡警示參數正好和em1相反。如果是單台機器,可直接指定一個網卡,順序同上:網卡名 接收閥值 發送閥值##Date:20140929 --sndapkBEGIN {    #存放上一次資料的臨時檔案    last_f="/var/tmp/nagios_bw.tmp"    run_f="/proc/net/dev"    #擷取當前所有網卡:裝置名稱、接收資料、發送資料到資料    while (getline runline <run_f) {        if (runline ~ /:/) {           sub(/^ +/,"",runline)           split(runline,runarraytmp,": +|:| +")           rundata_r[runarraytmp[1]]=runarraytmp[2]           rundata_t[runarraytmp[1]]=runarraytmp[10]        }    }    #判斷有沒有臨時檔案    if (system("[ -f "last_f" ]") == 0) {        #擷取上一次的接收、發送資料到數組        while (getline lastline <last_f) {            split(lastline,lastarraytmp," ")            lastdata_r[lastarraytmp[1]]=lastarraytmp[2]            lastdata_t[lastarraytmp[1]]=lastarraytmp[3]        }        #在上一步擷取舊資料後,用新資料更新臨時檔案        printf("") >last_f        for (i in rundata_r) {            print i,rundata_r[i],rundata_t[i] >>last_f        }    }    #未找到臨時檔案,操作:初始化臨時檔案、初始化上次接收、發送的數組(一般在第一次運行時執行)    else {        if (system("touch "last_f) == 0) {           for (j in rundata_r) {               print j,rundata_r[j],rundata_t[j] >>last_f               lastdata_r[j]=rundata_r[j]               lastdata_t[j]=rundata_t[j]           }        }        else {            print "CRITICAL - cat not create file:",last_f"."            exit 2        }    }    #擷取各網卡及其警示參數    for (k=1; k<ARGC; k+=3) {        monitor_r[ARGV[--k]]=ARGV[++k]        monitor_t[ARGV[k-=2]]=ARGV[k+=2]    }     #根據新資料和舊資料,計算這一檢查周期內產生的資料量    for (l in rundata_r) {        generate_r[l]=int((rundata_r[l]-lastdata_r[l])/1024/1024)        generate_t[l]=int((rundata_t[l]-lastdata_t[l])/1024/1024)    }    #計算指定監控的網卡是否達到警示閥值,分別更新狀態數組    for (m in monitor_r) {        if (m in generate_r) {            if (generate_r[m] >= monitor_r[m] ) {                critical_r[m]            }            if (generate_t[m] >= monitor_t[m] ) {                critical_t[m]            }            #原則,只對監控的網卡產生資訊和效能資料繪圖            status=status"__"m"("monitor_r[m]","monitor_t[m]"):R="generate_r[m]"M,T="generate_t[m]"M"            sub(/^__/,"",status)            performance=performance""l"_r="generate_r[m]";"monitor_r[m]";"l"_t="generate_t[m]";"monitor_t[m]";"        }        else {            print "CRITICAL - wrong parameter."            exit 2        }    }    #如果狀態數組都為0,則正常    if (length(critical_r)==0 && length(critical_t)==0 ) {        print "OK - "status"|"performance        exit 0    }    else {        print "CRITICAL - "status"|"performance        exit 2    }}


本文出自 “notepad” 部落格,請務必保留此出處http://sndapk.blog.51cto.com/5385144/1559536

awk:nagios流量監控外掛程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.