2016-03-22 13 views
1

私はSensu Coreを使用してPythonスクリプトを監視したいと思います。私はそれを行う方法が混乱しています。Sensuを使用してPythonスクリプトを監視する方法は?

Sensuのドキュメントからは、Sensu Checksが必要です。提供された例ではRubyスクリプトは、シェフ・クライアントが動作していることを確認します

#!/usr/bin/env ruby 

# get the current list of processes 
processes = `ps aux` 

# determine if the chef-client process is running 
running = processes.lines.detect do |process| 
    process.include?('chef-client') 
end 

# return appropriate check output and exit status code 
if running 
    puts 'OK - Chef client process is running' 
    exit 0 
else 
    puts 'WARNING - Chef client process is NOT running' 
    exit 1 
end 

特定のスクリプトやアプリケーションではないため、このようなチェックを実装する方法は?つまり、一般的にはPythonではなく、特定のpythonスクリプト(たとえばtest.py)を監視するにはどうすればよいですか?

答えて

2

だから、私は成功した私のAWS Linuxクライアントのための扇子にいくつかのPythonスクリプトを実行してきた、これは私のチェックの定義の良い例です。

{ 
"checks": { 
"check-rds-limit": { 
    "interval": 86400, 
    "command": "/etc/sensu/plugins/rds-limit-check.py", 
    "contacts": [ 
    "cloud-ops" 
    ], 
    "occurrences": 1, 
    "subscribers": [ 
    "cloud-ops-subscription" 
    ], 
    "handlers": [ 
    "email", 
    "slack" 
    ] 
} 
    } 
} 

そして、あなたのpythonプラグインはシェバングパスを定義して起動することができます:

#!/usr/bin/env python 
import sys 
... 
... 
//<code condition for warning> 
sys.exit(1) 
//<code condition for critical> 
sys.exit(2) 
//<code condition where everything is fine> 
sys.exit(0) 
0

上記のスクリプトは、実行中のプロセスで文字列chef-clientを検索しています。 test.pyのような他の文字列で置き換えることができます。test.pyは実行中のプログラムの名前にtest.pyがあるかどうかを検出します。 (あなたはpython test.pyしてプログラムを実行する場合、私はルビーを知らない部分文字列test.pyを一致させる必要があるかもしれません。)

を私はあなたがより多くのカスタマイズを含む、より一般的な機能のためにSensu process check pluginを使用することをお勧めします。他のsensu pluginsも見てください。

0

なぜプロセス自体ではなく、スクリプトの期待される結果や操作を監視しないのですか?通常、Webアプリケーションの場合はエンドポイントを監視し、アプリケーションが実行されているかどうかを判断するにはデータベース内のメッセージなどの監視された動作を監視するように設定します。

プロセスは、技術的には実行中ですが、エラー状態やリソースの問題が原因で何も起こらないことがあります。期待される結果を監視することは、プロセスを見ることよりもはるかに良い選択です。

+0

残念ながら狙いはそこにそれが技術的に実行されている、くさび形プロセスの違いを教えてくれますどのように予期しないエラー – Greg

+0

で、有効なPIDを持っていない限り、「終了」をしません長い実行中のサービスを監視することで、動作しているプロセスマリー。私が認識している唯一の方法は、長時間実行されるプロセスの期待される結果を測定することです。このプロセスは、ファイル、ログエントリ、または処理の一部として測定可能なものを生成する必要があります。 –

関連する問題