bash を使用した Tomcat エラー チェッカー

bash を使用した Tomcat エラー チェッカー

誰か私に光を当てて、正しい方向を指し示してくれませんか?

Tomcat アプリの起動中にログ内の例外をチェックする bash スクリプトを作成したいと考えています。このスクリプトは、おそらく を介して、新しいファイルの作成をその場で検出できる必要がありますinotify

Exception:このスクリプトは、ログ ファイル内の新しい行がないかログ ディレクトリを継続的にチェックし、または という単語を含む行を に書き込む必要がありERRORます/var/log/errorcheckernotifier.txt

スクリプトがこの行を検出すると、起動中に検出された例外の数を書き込むINFO: Server startup in必要があります。TOMCAT IS STARTED/var/log/errorcheckernotifier.txt

このスクリプトは の内容を上書きしませんerrorcheckernotifier.txt。代わりに追加します。

このスクリプトを実行し続け、さらに起動を検出したり、例外をカウントしたりするにはどうすればよいですか。

答え1

役に立つなら、Tomcat の init スクリプトの「開始」部分をお渡しできます。

    始める)
        echo -n "$FOO_BASE_JM を起動しています "
        ## startproc(8)でデーモンを起動します。これが失敗した場合は
        ## 戻り値は startproc によって適切に設定されます。

        ps -efwwwwwwwwwwwwwww | grep java | grep -q "$FOO_BASE_JM"; の場合
                echo "プロセス $FOO_BASE_JM はすでに存在します"
                失敗 1
        それ以外

        ログライン=$(cat /opt/$FOO_BASE_JM/logs/catalina.out | wc -l)

        CATALINA_OPTSをエクスポートする
        ########/sbin/startproc $FOO_BIN
        [ "$(id -un)" = "tomcat" ] の場合;
         $FOO_BIN 開始 || rc_failed 1
        それ以外
         /bin/su tomcat $FOO_BIN 開始 || rc_failed 1
        フィ

        echo -n "プロセスが表示されるのを待っています。"
        重量=0
        プロセスを見る=true
        while ! ps -efwwwwwwwwwwwwwww | grep java | grep -q "$FOO_BASE_JM"; 実行する
                睡眠2
                エコー -n 。
                重量=$(($重量+1))
                [ "$wt" -gt 30 ]の場合;
                        エコー
                        echo "タイムアウト: プロセスを確認できません。ログを確認してください。"
                        失敗 1
                        プロセス_seen=false
                        壊す
                フィ
        終わり
        [ "x$process_seen" = "xtrue" ]の場合;
         エコー
         echo -n "起動を待機しています。"
         重量=0
         while ! tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "INFO: Server startup"; 実行
                睡眠2
                エコー -n 。
                重量=$(($重量+1))
                [ "$wt" -gt 30 ]の場合;
                        エコー
                        echo "タイムアウト: ログにサーバーの起動成功の兆候が見つかりません。確認してください。"
                        失敗 1
                        壊す
                フィ
         終わり
         tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "INFO: サーバーの起動" && tail +$LOGLINES /opt/$FO
O_BASE_JM/logs/catalina.out | grep "INFO: サーバーの起動"
        フィ

        fi # プロセスが存在しない場合

        # ステータスを記憶し、詳細に表示する
        rc_status -v
        ;;

代替案として、Nagios のような監視ツールを使用し、ログ監視プラグインの 1 つを catalina.out ファイル (またはログ記録先) に指定して、新しいエラー文字列や興味のあるものを検索することを提案できます。Oracle DB では、これは完璧に機能します。

関連情報