linux 進程監控
supervise
Supervise是daemontools的一個工具,可以用來監控管理unix下的應用程序運行情況,在應用程序出現異常時,supervise可以重新啟動指定程序。
使用:
mkdir test
cd test
vim run 寫入希望執行的操作
supervise test (注意這里是的參數是run文件上層的文件夾,改變run的為可執行 chmod +x run)
monit
monit是一個小型的開放源碼工具來管理和監控Unix系統。Monit可以自動維護進程,及時避免進程異常退出等產生的問題。
- 系統: monit可以監控問題的發生,包括進程狀態、系統cpu負載、內存占用情況等,例如當apache服務的cpu負載以及內存閘弄情況過高時候,它會重啟apache服務。
- 進程: monit可以監控守護進程,包括系統進程。例如當某個進行down掉,它會自動恢復重啟該進程。
- 文件系統:Monit可以監控本地文件、目錄、文件系統的變化,包括時間戳、校驗值、大小的變化。例如,可以監控文件sha1以及md5的值,來監控文件是否發生變化。
- 網絡:monit可以監控網絡連接,支持TCP、UDP、Unix domain sockets以及HTTP、SMTP等。
- 定時腳本:monit可以用來定時測試程序和腳本,獲取程序輸出結果,進而判斷是否成功或其他情況。
安裝:
sudo apt-get install monit
編輯配置:
sudo vim /etc/monit/monitrc
啟動、停止、重啟:
sudo /etc/init.d/monit start sudo /etc/init.d/monit stop sudo /etc/init.d/monit restart
設置頁面監控狀態:
set httpd port 2812 and allow 0.0.0.0/0.0.0.0 allow localhost
增加監控:
需要注意的是,這里需要添加start和stop,缺一個都是不行的
1.根據程序名稱來監控
check process test with MATCHING test.py start program = "/home/yxd/test.py" stop program = "xxxxx"
2.根據pid監控
check process apache with pidfile /var/run/httpd.pid start program = "/etc/init.d/rcWebServer.sh start https" stop program = "/etc/init.d/rcWebServer.sh stop https" if changed pid then aler
參考:
用monit監控系統關鍵進程
supervisord
Supervisor是一個C/S系統,它可以在類unix操作系統讓用戶來監視和控制后台服務進程的數量。它是由python編寫的,常用於進程異常退出的重啟保護。
安裝:
pip install supervisor
查看配置文件:
echo_supervisord_conf
從該命令的結果中,可以看到各個模塊的配置信息。
創建配置文件:
echo_supervisord_conf > /etc/supervisord.conf
配置應用:
[program:test] command=python /root/test_supervisor.py process_name=%(program_name)s stdout_logfile=/root/test.log stderr_logfile=/root/test.log
保存,啟動:
/usr/bin/supervisord -c /etc/supervisord.conf