2016-08-23 10 views
0

私は、ログファイルをテールしてアイドル時間を待つことができます。たとえば、その時間のログがアイドル状態のXX秒です。可能性:サーバ再起動前のアイドル時間のログファイルのポーリング

ログがそのXX秒以内にアイドル状態でない場合は、アイドル時間がXX秒になるまで待ちます。

アイドル時間が経過すると、Anatileがサーバーを再起動します。

アイドル時間は、最後の2つのログエントリとそれらの時間差を確認することで計算できます。

これを達成するにはどうすればよいですか?

+0

これを達成するためにAnsibleモジュールのパッチワークを適用することは意味がありません(既成のものはなく、おそらく決してありません)。任意の言語でスクリプトを作成し、プレイブックから呼び出すことができます。 – techraf

答えて

2

最後のログエントリからXX秒後まで待つのではなく、2つのログエントリを待つ必要はありません。これは、次の書き込みが条件に一致するためです。

そして、それに基づいて、ちょうどこの(例えば、目的のためにXX = 5)

- find: paths="/tmp" patterns="logfile" age="5s" age_stamp="mtime" 
    register: modified 
    until: modified.matched == 1 
    retries: 20 
    delay: 5 

を行うことだけでパスとパターン仕様は唯一のログファイルと一致することを確認してください。

+0

このソリューションは私たちの要求に応えました。ご協力いただきありがとうございます! –

+0

@O.Elhelouはフィードバックをお寄せいただきありがとうございます。 –

1

あなたは秒単位の時間差を印刷するコマンドを持っている場合は、あなたが使用することができます。

- shell: /opt/myscripts/log_difference.sh 
    register: result 
    until: result.stdout | int > 60 
    retries: 5 
    delay: 10 

再試行回数を超過または標準出力内の数字は60

より大きいされるまで、これがlog_difference.shを実行します
関連する問題