1. ホーム
  2. debugging

[解決済み] monitのデバッグ

2023-07-30 22:29:57

質問

Monitのデバッグに苦労しています。Monit のシェル環境には基本的に何もありません(パスやその他の環境変数がありません)。また、私が見つけることができるログ ファイルもありません。

問題は、monit スクリプトの start または stop コマンドが失敗した場合、何が問題なのかを見極めるのが難しいということです。多くの場合、シェル環境と monit のシェル環境は異なるため、シェル上でコマンドを実行するだけという単純なものではありません。

monitの設定をデバッグするために、どのようなテクニックを使っているのでしょうか?

例えば、自分のスクリプトをテストするためのmonitシェルや、何がうまくいかなかったかを確認するためのログファイルがあればうれしいです。

どのように解決するのですか?

私も同じような悩みを抱えていました。monitのverboseコマンドラインオプションを使うと少しは楽になりますが、一番良い方法は、monitの環境にできるだけ近い環境を作り、そこから起動・停止プログラムを実行することだとわかりました。

# monit runs as superuser
$ sudo su

# the -i option ignores the inherited environment
# this PATH is what monit supplies by default
$ env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/sh

# try running start/stop program here
$

最も一般的な問題は、環境変数に関連するものであることがわかりました(特に PATH ) やパーミッションに関連するものです。monitは通常rootで実行されることを覚えておく必要があります。

また、もしあなたが as uid myusername を使用している場合は、monit の設定でユーザー myusername に変更してからテストしてください。

お役に立てれば幸いです。