2017-08-04 35 views
0

我想修改我的腳本,使其可以監控我的網絡上4臺服務器上的CPU,內存和RAM,下面的腳本是一個可以監控一臺服務器的腳本,是有一種方法可以檢查或修改我的腳本,如果我有主機和用戶名和密碼。監控多個Linux系統或服務器腳本

printf "Memory\t\tDisk\t\tCPU\n" 
end=$((SECONDS+3600)) 
while [ $SECONDS -lt $end ]; do 
MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }') 
DISK=$(df -h | awk '$NF=="/"{printf "%s\t\t", $4}') 
CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}') 
echo "$MEMORY$DISK$CPU" 
sleep 5 
done 

有什麼想法或建議嗎?

+1

不要推出自己的。有更好的監控工具在那裏預先構建,並且它們將比這更低的開銷(其運行...十個新過程,看起來像每個單個輪詢週期)以及更多特徵(能夠維護以有效的存儲格式保存歷史記錄,保存圖表,生成衍生物,對意外值進行警報等)。 –

回答

0

簡單,幼稚的做法是這樣的:

for server in host1 host2 host3 host4; do 
    ssh "$server" bash -s <<'EOF' 
...your script here... 
EOF 
done 

...用RSA密鑰預先配置密碼認證。通過在ssh中利用ControlMaster/ControlSocket功能,可以使輕微不那麼幼稚,因此您可以在多個ssh會話之間保持相同的傳輸並在任何可能的情況下重用它。

但是 - 滾動你自己的系統監控工具是一件愚蠢的事情,至少在你已經與現有的系統監視器保持一致之後,知道他們的優勢,瞭解他們的弱點,並且可以提出一個合理的論點爲什麼他們不適合你。使用已經做了一段時間的人維護的現成的東西。