Fluent BitのOutput PluginsにElasticsearchが追加されました

2015.12.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

藤本です。

弊社メンバーからfluent-bitのOutput PluginsにElasticsearchが実装されたことを教えていただいたので早速試してみました。

概要

Fluent BitはC言語で実装された軽量なデータコレクタです。センサーのような非力な機器でデータ収集に向いています。先日リリースされたv0.5でElasticsearchへの出力が実装されました。動作を確認してみましたのでご紹介します。センサーデータをグラフ化できたら方が面白かったと思いますが、今回はAmazon LinuxのCPU/MEM使用状況を送信して、Kibana(Timelion)で可視化します。

環境

  • クライアント
    • OS : Amazon Linux 2015.09
    • Fluent Bit : 0.5.1
  • サーバー
    • OS : Amazon Linux 2015.09
    • Elasticsearch : 2.1.0
    • Kibana : 4.3.0

やってみた

Fluent Bitインストール

インストール手順はAmazon Linux で Fluent Bit を動かしてみたをご参照ください。

Index Templates作成

Fluent BitはTimestampをUnixtimeで送信します。ElasticsearchはDynamic MappingでDate型を自動で認識しますが、Unixtime形式は数値として判断します。そのため事前にIndex Templateを定義し、Unixtime形式をDate型と認識する設定が必要です。

$ curl -XPUT "http://localhost:9200/_template/template1" -d'
{
  "template": "metric",
  "mappings": {
    "web01": {
      "properties" : {
        "@timestamp" : {
          "type" : "date",
          "format" : "epoch_second"
        }
      }
    }
  }
}'

epoch_secondはUnixtimeの秒形式となります。

Fluent Bitの起動

今回はCPU情報、メモリ情報を送信します。
出力先のElasticsearchは以下の形式で記載します。

es://<Elasticsearchホスト>:<ポート番号>/<INDEX名>/<TYPE名>

$ bin/fluent-bit -i cpu -o es://172.31.26.223:9200/metric/web01 -f 1 &
[1] 3105
Fluent-Bit v0.5.0
Copyright (C) Treasure Data

[2015/12/21 23:30:23] [ info] starting engine
[2015/12/21 23:30:23] [ info] [es] host=172.31.26.223 port=9200 index=metric type=web01

$ bin/fluent-bit -i mem -o es://172.31.26.223:9200/metric/web01 -f 1 &
[2] 3107
Fluent-Bit v0.5.0
Copyright (C) Treasure Data

[2015/12/21 23:30:28] [ info] starting engine
[2015/12/21 23:30:28] [ info] [es] host=172.31.26.223 port=9200 index=metric type=web01

Kibanaによる可視化

まずデータを確認してみます。

Discover_-_Kibana

CPUはCPU使用率が送信されています。

Discover_-_Kibana

MEMはメモリ総量、空きメモリ値が送信されています。

続いて、Timelion(使ってみたかっただけ)で可視化してみます。

Kibana

と、こんなに簡単にグラフ化できました。

まとめ

Fluent Bitは標準入力のInput Pluginを持っていますので、センサーデータであれば、取得したデータをFluent Bitに渡せば、簡単にElasticsearch/Kibanaで可視化できそうですね!