Daemontools是管理Unix服務的工具,它提供一組工具來管理一系列用戶進程,當進程由於某些原因down掉之後,daemontools會自動重啓進程。本文以對zookeeper和storm監控的例子記錄daemontools的用法。
1、 安裝daemontools
mkdir /opt/daemontools
cd /opt/daemontools
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -xzvf daemontools-0.76.tar.gz
完成上述步驟後需要進行一些修改,否則執行安裝時會報錯,在src下的conf-cc文件的第一行最後添加如下代碼即可 -include /usr/include/errno.h
vim /opt/daemontools/admin/daemontools/src/conf-cc
添加完後內容如下:
修改完成後執行以下命令編譯:
cd /opt/daemontools/admin/daemontools-0.76/
package/install
2、管理zookeeper、storm
創建配置文件,位置可自定義,本示例創建在/opt/daemontools/service下
cd /opt/daemontools/
mkdir -p service/zookeeper
cd service/zookeeper/
vim run
run內容如下:
#!/bin/sh
exec /opt/zookeeper/bin/zkServer.sh start
管理storm nimbus
cd /opt/daemontools/service/
mkdir nimbus
cd nimbus/
vim run
run內容如下:
#!/bin/sh
exec /opt/storm/bin/storm nimbus
“/opt/zookeeper/bin/zkServer.sh start”和”/opt/storm/bin/storm nimbus”分別爲zookeepr和nimbus的啓動命令,可以發現配置比較簡單,只需要吧對應進程的啓動命令加入配置文件即可。此處需要注意的一點,配置啓動命令時切勿配置成後臺啓動,即不要在末尾添加&符號,否則會造成大量重複啓動。
配置完成後需要給run文件賦運行權限
chmod 755 run
ui、supervisor等配置方法同理,不再贅述。
3、管理進程
3.1 啓動被管理的進程
cd /opt/daemontools/service/
nohup ./zookeeper/ & # (啓動之後,如果zookeeper掛掉,daemontools會自動重啓zookeeper)
nohup ./nimbus/ & # (啓動之後,如果nimbus掛掉,daemontools會自動重啓nimbus)
其他啓動同理。
3.2 查看被管理的進程狀態
cd /opt/daemontools/service/
svstat ./zookeeper/
3.3 關閉被管理的進程(不會關閉daemontools supervise進程)
cd /opt/daemontools/service/
svc -d ./nginx/