中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

awk:Nagios流量監控插件

發布時間:2020-06-16 16:12:43 來源:網絡 閱讀:835 作者:sndapk 欄目:移動開發
#!/bin/awk -f
#function: nagios插件,針對每個網卡單獨設定監控閥值,腳本傳遞參數閥值時單位為Mbps。
#example:
#        NAT服務器(WAN:em1, LAN:em2)帶寬:下行100Mbps上行約33.3Mbps(假設上行為下行的三分之一),報警閥值按90%計算,nagios每分鐘監控一次,如下:
#接收(上行):100/3*0.9約等于30Mbps
#發送(下行):100*0.9*等于90Mbps
#監控所有網卡,nrpe配置如下:
#command[check_netcount]=/usr/local/nagios/libexec/check_netcount.awk em1 30 90 em2 90 30
#注:如果是普通單臺機器,只指定一個網卡監控即可:網卡名 接收閥值 發送閥值
#
#Date:20150129 by yangjy

BEGIN {
    #存放上一次數據的臨時文件
    last_f="/var/tmp/nagios_net.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/60*8)
        generate_t[l]=int((rundata_t[l]-lastdata_t[l])/1024/1024/60*8)
    }
 
    #計算指定監控的網卡是否達到報警閥值,分別更新狀態數組
    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]"Mbps,T="generate_t[m]"Mbps"
            sub(/^__/,"",status)
            performance=performance""m"_r="generate_r[m]";"monitor_r[m]"; "m"_t="generate_t[m]";"monitor_t[m]"; "
        }
        else {
            print "CRITICAL - wrong dev name."
            exit 2
        }
    }
 
    #如果狀態數組都為0,則正常
    if (length(critical_r)==0 && length(critical_t)==0 ) {
        print " OK - "status" | "performance
        exit 0
    }
    else {
        #快速確認哪個網卡哪個方向傳輸報警,收集狀態數組信息
        for (n in critical_r) {
            problem_r=problem_r" "n
            sub(/^ /,"",problem_r)
        }
        for (o in critical_t) {
            problem_t=problem_t" "o
            sub(/^ /,"",problem_t)
        }
        print " CRITICAL - Problem(R:"problem_r", T:"problem_t") - "status" | "performance
        exit 2
    }
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖口县| 玉田县| 郑州市| 平阳县| 福泉市| 绍兴市| 屯留县| 松阳县| 双江| 瓮安县| 巍山| 丰顺县| 江油市| 登封市| 安义县| 浪卡子县| 河池市| 正定县| 乌兰察布市| 沅江市| 高唐县| 崇阳县| 刚察县| 新民市| 丰县| 广德县| 茌平县| 宝丰县| 武隆县| 儋州市| 平度市| 田阳县| 绥滨县| 霍城县| 台山市| 新建县| 河间市| 仪陇县| 长泰县| 门源| 阜平县|