Windowsでfluentdを動かす



> 2015.03.16 追記
> **Ruby 1.9.3のサポートは2015年2月23日に終了するらしいです。**
> **こちらの投稿をベースにしたRuby 2.1へのインストール記事が以下にありますので参考にしてください。**
>
>["fluentd WindowsブランチをRuby 2.1上で動かす"](http://qiita.com/okahashi117/items/a0b55ea24a6ef7b6582b) 


## 0. 前書き
実はGithubに公開されているfluentdには、Windowsでの動作を目的としたWindowsブランチがあります。これを実際にWindowsにインストール、動作させるまでの手順をご紹介:)

とにかく動かしてみる、ということでゴールは

* **fluentdをWindowsに導入する**
* **fluent-catからin_forward -> out_stdoutで標準出力**

です。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/31816/b89da5d9-650d-726d-1e12-7e461d20ab6d.png)


　
## 1. Windows用Rubyの導入
RubyInstaller for Windows (http://rubyinstaller.org/downloads/)

![ri.JPG](https://qiita-image-store.s3.amazonaws.com/0/31816/e9a30c22-08b3-bcd4-8ec3-ead43d555a74.jpeg)


のページ上部、"RubyInstallers"から、セットアッププログラムをダウンロードします。

> Ruby 1.9.3-p545 

をダウンロードします。
Rubyの2.0系（32bit, 64bit）でも問題ないようですが、ここでは1.9系を利用します。

~~ダウンロードが完了したらしたセットアップファイルを実行し 、全て既定値のまま画面の指示にしたがって導入します。~~ 

ダウンロードが完了したらセットアップファイルを実行します。途中、「インストール先とオプション」の設定画面で、 **Rubyの実行ファイルへ環境変数PATHを設定する** に **チェックを入れます**。(2014/07/06 修正)

![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/31816/130b46c9-f2be-e55c-1fb9-1f47be575ffa.png)



導入先フォルダは、

```
C:\Ruby193
```

になります。

　
## 2. Windows用Ruby Devkitの導入

fluentdの動作にはRuby本体とは別にDevkitの導入も必要です。
本体の導入と同じく、
RubyInstaller for Windows (http://rubyinstaller.org/downloads/)
の"Other Usefull Downloads"-"DEVELOPMENT KIT"
より環境にあわせた自己解凍プログラムをダウンロードします。

> DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe


をダウンロードします。
ダウンロードが完了したら、実行（自己解凍）します。
解凍先は

```
C:\rubydevkit
```
とします。
解凍が完了したら、コマンドプロンプトを立ち上げて、以下のコマンドを実行します。

```
> C:
> cd \rubydevkit
> ruby dk.rb init
> ruby dk.rb install
```

　
## 3. GitHubよりfluentd Windowsブランチファイルのダウンロード

ブラウザから https://github.com/fluent/fluentd にアクセスし、ブランチをWindowsに切り替えます。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/31816/b2d745e0-afea-7c19-f88a-29d6008dae90.png)

Windowsに切り替わったら、画面右中程にある、"Download ZIP"のボタンをクリックし、ダウンロードします。
![dz.PNG](https://qiita-image-store.s3.amazonaws.com/0/31816/d3ea4e77-b40b-cfeb-33ce-40560e05652a.png)

ダウンロードが完了したら、解凍します。
"fluentd-windows"フォルダが現れますので、C:\temp にコピーします。

```
C:\temp\fluend-windows
```

　
## 4. ダウンロードファイルに含まれているgemパッケージを使ってインストール

※gemコマンドの実行にあたり、プロキシを利用している環境では環境変数でプロキシを設定する必要があります。自身のプロキシのIPとポート番号にあわせて、事前に以下のコマンドを実行してください。(2014/07/06 追記)

```
> setx http_proxy=http://<proxy ip>:<proxy port>
```

コマンドプロンプトから以下のコマンドを実行します。

```
> C:
> cd \temp\fluentd-windows
> gem install pkg\fluentd-0.10.46.gem
```


インストールが正常に終了したら、fluentdコマンドが動くことを確認します。

```
> fluentd --version
fluentd 0.10.46
```

　
## 5. fluentd設定ファイルを記述(in_forward -> out_stdout)
in_forwardでメッセージをうけとり、そのまま標準出力する設定ファイルを記述します。
メモ帳に以下の内容を入力し

```
<source>
  type forward
</source>
<match test>
  type stdout
</match>
```

そのファイルを

```
C:\fluent\fluent.conf
```

として保管します。

　
## 6. いざ！
動かしましょう。
コマンドプロンプトを一つ立ち上げて、以下のコマンドを実行します。

```
> C:
> cd \
> fluentd -c ./fluent/fluent.conf
```
 
fluentdが起動し、forwardからのイベント入力待ち状態となります。
![CMD.PNG](https://qiita-image-store.s3.amazonaws.com/0/31816/0f4f4df8-9012-56bb-287c-435721e82725.png)



このまま、もう一つコマンドプロンプトを立ち上げて、以下のコマンドを入力します。

```
> echo {"test":"go"} | fluent-cat test
```

fluentdを起動している側のコマンドプロンプトに以下に出力されます。

![CMD2.PNG](https://qiita-image-store.s3.amazonaws.com/0/31816/4a3888ba-f4c8-d392-774d-d4a1be30e46d.png)


　
## 7.注意と解決策
上記で導入し、コマンドプロンプト上で実行したfluentdは、

> Ctrl+Cで正常終了できない

です。
fluentdを終了する場合は、 **コマンドプロンプト画面の☓をクリックしてコマンドプロンプトごと終了** する必要があります。Ctrl+Cで終了したように見えた場合でも、そのままfluentdを再実行するとエラーとなりますので、必ずコマンドプロンプト自体を終了しなくてはなりません。

MasayukiKiyotaさんがGitHub上(https://github.com/MasayukiKiyota/cool.io) で提供しているCoolioを適用することで、本件回避できるようです。
このCoolioを利用する場合は、一度インストールされているCoolioをアンインストールしたのち、上記GithubからダウンロードしたCoolioのパッケージをインストールし直します。

ただし、Coolioのこの修正がどこまで妥当なのかはよくわかりません。
誰かみてくれないかな。



おわり。