
システムサービス監視をどのように設定しますか?それとも、httpd, mysqld, and my custom daemon
実行されているかどうかにかかわらず、各瞬間をチェックし、そうでない場合はすぐに自動的に再起動する自動化されたスクリプトを使用しますか?
どんなアイデアがありますか?
たとえば、
*Day 1:* System is running in Rail way where no support can be 24/7 available, Day 1 was fine. *Day 2:* System in the middle of the Rail way crashed cause httpd and mysqld for some reason not running the service
service httpd
引き続きservice mysqld
実行できるように自動化するにはどうすればよいですか?
答え1
答え2
他の回答で述べたように、Dan Bernsteinのデーモンツール同じ元のメカニズムを共有する一連のツールセットを起動しました。
ほとんどの場合、run
デーモンとして実行/動作するプログラムを作成し、サービスマネージャまたはスーパーバイザプロセスは通常のUnixおよびLinuxメカニズムを使用してフォークされたサブプロセスとして監視します。 ApacheとMySQLの場合たくさん人々は以前に介入しており、daemontoolsスイートサービス管理の下でこれらのサーバーを実行する方法の多くの例があります。以下はいくつかあります。
- ケビンJ.ディグラフ。 サービスを監視するためにdaemontoolsを使用する。
- Apache httpd。 daemontoolsサービスの例。接着剤ロジック。 2004年。
- daemontoolsのMySQL 2011年10月。
- daemontoolsの下のApache。 2011年9月。
- ゲレットパフ。 「アパッチ」。実行スクリプトのコレクション。
- ゲレットパフ。 「マイSQL」。実行スクリプトのコレクション。
Chris Down は、大きなツールセットが適していないと考えています。しかし、実際にはそうではありません。これらのツールセットはすべて一貫して一貫性がありますが、特定の状況に必要なツール以外のツールを使用する必要はありません。ミックス&マッチも可能です。 perpでは、Laurent Bercotのexeclineb
すべてのユーティリティを使用でき、nosh
runitで私のスクリプトインタプリタとすべてのユーティリティを使用できchpst
ますservice-manager
。
同様に、systemd(Linuxのみを使用している場合)またはlaunchd(MacOS 10を使用している場合)でApacheとMySQLを実行できます。 launchd設定ファイルは、他のシステムと比較してかなり複雑で面倒です。ただし、システム単位のファイルはスクリプトと同じ単純さを持ちますrun
。
- ジョナサンデボインポラード(2014)。実行中のスクリプトとサービスユニットを並べて表示します。。よく与えられる答えです。
mysqld.service
さまざまな人々のホームブルー便利なシステムサービスデバイスコレクションには、World Wide Webで利用可能なホームブルーとサービスデバイスがかなりたくさんあります。httpd.service
これらのすべては、ブートローダでデーモンを起動し、システムの実行中に管理者/自動制御下でデーモンを停止および開始し、さまざまな障害状態でデーモンを自動的に再起動するための基本的な基盤を提供します。 Xion345は誤ってmonitと混同します。 xyrの回答が示すように、監視と制御に使用される基本層はデーモンSystem 5ですrc
。 systemdでもnoshでもかまいません。 (service
事実、もしそうなら。)
モニットが属する場所は上の層から。監視装置使用ベースボードとモニターの起動/停止/モニタリング実際に提供されるサービス、どれがするか。またデーモンプロセスを監視するには、デーモン管理者を使用してください。このレイヤでは、nagiosなどの関連ツールを見つけることができます。 (daemontoolsファミリで監視するデーモンにnagiosを簡単に接続し、daemontools APIを使用してプロセスの状態と稼働時間を確認できます。
答え3
Chris Downが書いたものに加えて、以下をお勧めします。監視装置。具体的には、ポートが開いていることを確認し(80)、ポートが閉じている場合はそのサービス(httpdなど)を再起動できます。バラよりこの例SSHDの場合:
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/sshd start"
stop program "/etc/init.d/sshd stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
Monitはperpやdaemontoolsとは異なるアプローチを使用しています。つまり、プロセスが実行されているかどうかを確認するだけでなく、ポートが開いているか、ファイルが存在するか(UNIXソケットなど)も確認します。 daemontoolsやperpよりも設定が簡単で、邪魔にならない場合があります(monitがinitシステムと正しく対話していることを確認する必要はありません)。サービスの再起動に失敗した場合が頻繁に発生した場合は、電子メールを送信するように設定することもできます。
答え4
しかも神。
GodはRubyで書かれた、設定が簡単で拡張しやすい監視フレームワークです。
サーバープロセスとタスクを実行し続けることは、展開プロセスの簡単な部分です。神は最も単純で最も強力な監視アプリケーションを目指しています。
単純なサーバーの作成simple.rb
:
loop do
puts 'Hello'
sleep 1
end
simple.god
これでデーモンを監視するスクリプトを作成します。
God.watch do |w|
w.name = "simple"
w.start = "ruby /full/path/to/simple.rb"
w.keepalive
end
これで監視スクリプトを起動します。
god -c path/to/simple.god -D
神はRubyアプリケーションを監視するだけでなく、あなたを監視し、必要httpd
にmysqld
応じ/etc/init./d/...
て適切なスクリプトを呼び出すことができます。