簡單遠端伺服器監控重啟方案

2021-09-01 08:27:58 字數 2098 閱讀 8029

轉至:

摘要:如果你的伺服器主要服務不定期被kill掉,如何來盡可能保證服務正常?

前幾天某台伺服器出現了問題,主要的程序(包括web服務、top、vi這樣的命令)都會不定期被kill掉,經過分析認為這台伺服器的系統出現了問題,必須要進行重灌。而這台伺服器上面掛載了很重要的web服務,要保證服務還能夠正常的執行,必須要進行服務的遷移。

但是新伺服器到位還需要一定時間,這段時間內我們如何來保證服務的正常性呢?採用人工的方式費時費力,而且0點到8點全時段監控是不太可能的。採用crontab的方式可行,但是問題是crontab最小的執行間隔為1分鐘,服務在1分鐘內出現問題的機率很大,那麼服務最長不可用的時間為1分鐘,影響很大。用執行指令碼的方式可行,但是也會被kill掉,無法起到一直監控的作用。有什麼好的方式呢?

解決問題的思路是我們在其他伺服器上監控服務狀態(這個很容易實現),並且通過遠端執行指令碼的方式來進行服務的重啟。

1、 監控服務狀態

監控服務狀態的方式有多種,例如遠端獲取系統程序列表分析和http請求。我們用最簡單的方式:通過http請求的狀態判斷服務的可用性。

1) 先在被監控的伺服器(下文用伺服器1代替)上寫乙個簡單的php頁面,只需要輸出固定的內容。

<?php

echo 「alive」;

?>

2) 在監控伺服器(下文用伺服器2代替)上用perl指令碼訪問這個web頁面,如果取得的內容和確定的內容不一致,視為服務不可用(也可以使用http狀態碼判斷)。下面是check_down.pl**:

use lwp::******;

use posix qw(strftime);

sub convert_format_time

while(true)

else

close($fh);

sleep(1);

}

2、 遠端執行重啟指令碼

檢測到服務不可用,下面是最關鍵的步驟,遠端執行重啟指令碼。

1)下面是伺服器1上檢測並重啟的shell指令碼check_down.sh。

#!/bin/bash

php_procs=`psaux | grep php-fpm | grep -v grep | wc -l`

if [ $php_procs-lt 1 ]

then

/etc/init.d/nginx start

/etc/init.d/php5-fpm start

fi

2)我們要在伺服器2上呼叫伺服器1上的此指令碼,可以採用ssh的方式,但是關鍵是執行ssh命令時不需要輸入密碼。

執行ssh命令不需要密碼的方式如下:

在伺服器2上執行"ssh-keygen-t rsa",一路回車即可。

在伺服器1進入/root/.ssh目錄,執行「viauthorized_keys」,將伺服器2上/root/.ssh/id_rsa.pub檔案中的內容追加到此檔案中。

可以直接在伺服器2上使用「ssh root@伺服器1的ip」的方式登陸了,遠端執行重啟指令碼的方式是「ssh root@伺服器1的ip '/path/check_down.sh'」。

3) 調整perl指令碼,在伺服器down掉的情況下加入遠端執行重啟指令碼的呼叫。

if($result ne 'alive')

大功告成!

在伺服器2上啟動perl指令碼「perl check_down.pl&」,然後就可以在輸出的日誌檔案裡看到結果了:

server alive.-2011-07-10 21:05:25

server down!--2011-07-22 21:05:26

starting nginx: nginx.

* starting php5 fpm...

...done.

server alive.-2011-07-10 21:05:29

總結:如上的方案很簡單,但是編寫了shell、perl、php指令碼,它們各自提供了不同的作用。另外重要的是解決問題的思路,如何在不可能的情況下繞過問題從另外乙個方面考慮解決方案。

c 實現遠端重啟伺服器

c 實現遠端重啟伺服器 遠端重啟伺服器 c 方法很簡單 首先新增對 system.management的引用 然後 入下 connectionoptions op new connectionoptions op.username wgscd 或者你的帳號 注意要有管理員的許可權 op.passwo...

伺服器網路監控系統方案

關於監測伺服器的問題,我大概整理了一下。現在有三種方案可以使用。1 最徹底的方案,使用net snmp。這個包可以部署在任何平台,包括nix和winnt。然後通過snmp客戶端來訪問。這種方法的好處是可以封裝訪問介面成元件。缺點是所有監控的伺服器都需要安裝net snmp。linux是自帶的。win...

伺服器網路監控系統方案

關於監測伺服器的問題,我大概整理了一下。現在有三種方案可以使用。1 最徹底的方案,使用net snmp。這個包可以部署在任何平台,包括nix和winnt。然後通過snmp客戶端來訪問。這種方法的好處是可以封裝訪問介面成元件。缺點是所有監控的伺服器都需要安裝net snmp。linux是自帶的。win...