フォルダ監視機能について
KompiraEnterpriseを使用してのフォルダ監視につきましてお伺いいたします。
特定のフォルダに対して常駐監視を行い、ファイルの追加が行われた際にジョブを実行できる機能を探しております。
KompiraEnterpriseを活用し、上記の動作を実施することは可能でしょうか。
もし可能であれば活用方法につきまして、ご説明いただければと存じます。
また、KompiraEnterpriseを使用しての実施が難しい場合、その他Kompira製品の活用が可能であればそちらにつきましてもご教示いただけますと幸いです。
よろしくお願いいたします。
-
正式なコメント
フィックスポイントの高橋です。
特定のフォルダに対して常駐監視を行い、ファイルの追加が行われた際にジョブを実行できる機能
こちらのお問い合わせですが、前半部分については「サーバ上のファイルシステムの特定のフォルダを監視」したいと理解しました。
まず、Kompira Enterprise 自身に「サーバ上のフォルダを監視する」という直接的な機能はございません。
よって、外部のツールなどと連携した実現方法を検討することになります。ディレクトリを監視するツールとしては「fswatch」や「inotify-tools」などが考えられます。
外部のツールと連携したシンプルな例を以下に示しますので、参考になさってみてください。
対応方針
ここでは簡単のために、以下のような方針で検討します。
- Kompiraサーバ上の既存のフォルダを監視する。
- 「fswatch」を利用して特定のディレクトリへのファイルの追加を監視する。
- ファイルの検出したら kompira_sendevt コマンドで追加されたパス名を、Kompira に事前に用意した「チャネル」に対してメッセージ通知する。
- 通知を受けた「チャネル」が事前に用意したジョブフローを実行する。(そのために、チャネルにアクションジョブフローの設定を事前に行っておく)
準備 (fswatch のインストール)
Kompiraサーバに fswatch をインストールします(特権ユーザで実行してください)。
yum install fswatch
ジョブフローの作成
通知を受けたときに実行されるジョブフローを作成します。ここではパラメータとして通知されたメッセージを受け取って、その内容を表示するだけの以下のようなジョブフローを例えば「/root/action_job」として作成します。
|message|
print(message)チャネルの作成
kompira_sendevt によるメッセージを受信するためのチャネルオブジェクトを例えば「/root/monitor_chan」として作成します。このとき、以下のような設定を行なって保存します。
- アクション種別:「ジョブフローを実行する」を選択する
- アクションターゲット:上で作成したジョブフロー「/root/action_job」を選択する
補足:このように設定しておくことで、このチャネルにメッセージが到着したときに、そのメッセージをパラメータとしてアクションターゲットで指定したジョブフローが実行されるようになります。
fswatch の実行
fswatch をインストールした Kompira サーバ上で fswatch を実行します。このとき以下のような動作を考えます。
- 「/var/log」ディレクトリへのファイル作成 (Created) を監視する
- ファイル作成を検出したら、そのパスを上で作成したチャネルにメッセージを通知する
この場合、fswatch コマンドと kompira_sendevt コマンドを組み合わせて、Kompira サーバ上で以下のように実行してみてください。
fswatch --event Created /var/log/ | while read path; do
/opt/kompira/bin/kompira_sendevt --channel="/root/monitor_chan" path="$path";
donefswatch コマンドが /var/log/ ディレクトリを監視してファイルの作成 (Created) を検出するとそのパスを標準出力に表示します。それを受け取って kompira_sendevt コマンドで作成しておいたチャネル /root/monitor_chan にメッセージを送信します(という動作を繰り返します)。
動作確認
上記を済ませて fswatch を実行した状態で、Kompira サーバ上の監視対象ディレクトリにファイルを作成してみます。
touch /var/log/test-newfile
正常に連携できれば、Kompira にメッセージが送信されて、ジョブフロー「/root/action_job」が実行されているはずです。プロセス一覧で履歴を確認してみてください。以下のような出力がなされているのが確認できるかと思います。
{'path': '/var/log/test-newfile'}コメントアクション
サインインしてコメントを残してください。
コメント
1件のコメント