Windows
Fluentd

fluentd Windows版をWindowsサービスとして動かす

More than 3 years have passed since last update.


0. 前書き

本稿ではfluentd WindowsブランチをWindowsサービスとして動かすことにチャレンジします。

fluentdwinsvc3.JPG

通常の(Linux向けの)デーモンオプションを使ってもWindowsサービスとしては動きません。というかエラーになります。

Windowsサービスように実装された機能を使って登録する必要があります。

本投稿ではこれにチャレンジします。

なお、利用しているRubyのバージョンは 2.1(x64)となります。


1. fluentd Windows版の導入

以下の記事にしたがってfluentd Windowdsブランチを導入します。

"fluentd WindowsブランチをRuby 2.1上で動かす"

ただし、「2. fluentd gemパッケージ」では以下のパッケージ(最新版)を導入します。

これ以前のパッケージではWindowsサービスとして正しく動作しません。

> gem install pkg/fluentd-0.10.46.win150316001.gem --no-ri --no-rdoc


2. Windowsサービスとしての登録

gear-wheel-310906_640.png

Windowsサービスとして登録します。

管理者権限でコマンドプロンプトと立ち上げます。かならず管理者権限で立ち上げてください。Windowsサービスの登録には管理者権限が必須です。

管理者権限で立ち上げたコマンドプロンプトから、以下のコマンドを実行します。

> fluentd --reg-winsvc i

実行しましたか?このコマンドは成功すると何も表示しませんw

ではサービス一覧画面から確認しましょう。

コントロールパネル > システムとセキュリティ > 管理ツール > サービス

を立ち上げて確認すると ...

fluentdwinsvc.JPG

fluentdwinsvc2.JPG

いますね!

Windowsサービス名は


fluentdwinsvc


表示名は


Fluentd Windows Service


となっています。

ダブルクリックしてプロパティ画面を開くとこんな感じ。

fluentdwinsvc3.JPG


3. fluentdのオプションを指定する

上記のステップ2で、Windowsサービスとしての登録はできましたが、この段階ではfluentdのオプションが一切登録されていません。

ここでは以下のオプションを登録します。


  • C:/fluent/fluent.conf を使う

  • C:/fluent/fluent.log にログを書く

これ自体もfluentdのコマンドオプションとして登録します。以下のようにコマンドプロンプトからコマンドを実行します(引き続き管理者権限必須)。

> fluentd --reg-winsvc-fluentdopt '-c C:/fluent/fluent.conf -o C:/fluent/fluent.log'


4. 設定ファイル

あとは設定ファイルです。上記で指定した C:/fluent/fluent.confにお好みで設定ファイルを書きましょう。とりあえず in_forward で受け付けて、 out_file するだけの設定にしておきます。


fluent.conf

<source>

type forward
</source>

<match **>
type file
path C:/fluent/test
time_slice_format %Y%m%dT%H%M%S
time_slice_wait 5s
</match>



5. いざ!

動かしましょう!

「2. Windowsサービスとしての登録」で確認した Fluentd Windows Serviceのプロパティ画面を開いて開始ボタンをポチッとな!

fluentdwinsvc-start.jpg

ちょっと待つと...ハイキタ!

fluentdwinsvc-running.jpg

-oオプションで指定したログファイルをみてみましょう...イイデスネ!

fluentdwinsvc-log3.JPG

in_forwardに放り込んでみましょう。

コマンドプロンプト(管理者権限不要)から...

> echo {"strng":"Hello Fluentd Windows Service"} | fluent-cat test

Windows サービス動作なので見た目上何もおきていません。

out_fileで指定した C:/fluent/test.%日付%.log をみてみましょう...イイデスネ!

fluentdwinsvc-outfile.jpg

概ね以上です。

まぁ実証だけなので特段面白くともなんともありませんがご勘弁を。


6. Windowsサービスの停止

これはいいですよね。普通のWindowsサービスと同等に扱えばよいです。割愛。


7. Windowsサービス登録の削除

fluentdコマンドでおこないます。

なおfluentd Windows Serivceが停止状態でおこなう必要があります。

再び 管理者権限でコマンドプロンプトを立ち上げて 以下のコマンドを実行します。

> fluentd --reg-winsvc u

成功しても特にメッセージはでません。

コントロールパネル > システムとセキュリティ > 管理ツール > サービス

でFluentd Windows Serviceが削除されていることを確認しましょう。


8. その他

もし何かの理由でうまく終了できずにプロセスが残ってしまう等の現象が起きた場合は、タスクマネージャかProcess Explorer(管理者権限起動)にて終了させましょう。

おわり。