Linux網絡卡速率監控指令碼

2021-10-25 11:28:16 字數 1979 閱讀 8008

在運維工作中,要對每一台伺服器的網絡卡速率進行監控。但是如果專案很多,網絡卡取名規則不統一,就會導致不管zabbix還是其他的監控系統,對網絡卡的抓取都不能很精準和方便。所以自己寫了乙個獲取網絡卡指令碼,並且對速率進行監控。

#!/bin/bash

nets=()

results=()

#get the network card

fordirin`

cd /sys/class/net/ &&ls`

;doif[

`grep

"up" /sys/class/net/$dir/operstate &

>/dev/null &&

echo $dir |

grep -ve "em|local"` ]

;then

nets=

("$"

"$dir")fi

done

#judge the network speed and store in array

for card in

`echo $`;

do open_net=

`cat /etc/sysconfig/network-scripts/ifcfg-$

|grep -i onboot |

cut -d'=' -f2 |

tr'a-z'

'a-z'

` if

["$"

=="yes"];

then

/usr/sbin/ethtool $

&> /dev/null

if[$? -eq 0 ]

;then

ret=

`/usr/sbin/ethtool $

|grep speed |

awk -f':'''|

sed's/^[ \t]*//g'

` include=

`echo $card |

grep

"bond"

` if

["$include"

!=""];

thenif[

"x$ret"

=="x2000mb/s" -o "x$ret"

=="x20000mb/s"];

then

results=

("$"

"0")

else

results=

("$"

"1")

fielseif[

"x$ret"

=="x1000mb/s" -o "x$ret"

=="x10000mb/s"];

then

results=

("$"

"0")

else

results=

("$"

"1")

fifi

else

results=

("$"

"0")

fielse

results=

("$"

"0")

fidone

#judge the speed array

for result in

`echo $`;

doif

["$result"

=="1"];

then

final=

"1"fi

doneif[

"$final"

=="1"];

then

echo 1 > /tmp/network_speed.txt

else

echo 0 > /tmp/network_speed.txt

fi

通過zabbix來每分鐘獲取/tmp/network_speed.txt的值進行判斷,如果為0是網絡卡速率正常,如果是其他值就為異常。

linux設定網絡卡速率

ethtool ethtool ethx 查詢ethx網口基本設定 ethtool h 顯示ethtool的命令幫助 help ethtool i ethx 查詢ethx網口的相關資訊 ethtool d ethx 查詢ethx網口註冊性資訊 ethtool r ethx 重置ethx網口到自適應模...

網絡卡流量監控指令碼

sar n dev 1 2 sar命令包含在sysstat工具包中,提供系統的眾多統計資料。命令後面1 2 意思是 每一秒鐘取1次值,取2次。dev顯示網路介面資訊 另外,n引數很有用,他有6個不同的開關 dev edev nfs nfsd sock all 其代表的含義如下 dev顯示網路介面資訊...

linux下檢視網絡卡速率

我們都知道ifconfig a 可以列出所有網絡卡,但是怎麼判讀是千兆網絡卡還是百兆網絡卡呢?1.判斷是千兆網絡卡還是百兆網絡卡 ethtool ethx 檢視支援的速率 實際網絡卡速率可以看speed 100mb s 問題來了,是不是千兆網絡卡speed一定是1000m呢?不一定喲,網絡卡速率和網...