Fluentdは、GridDBにデータを簡単に取り込むことができるオープンソースのデータコレクターです。Fluentdでは、ローカルネットワークにないエッジデバイスまたはその他のソースによって生成された情報を取り扱い、HTTP、MQTTなどを含む複数の入力ソースをサポートしています。また、 GridDBなどのさまざまな出力オプションもあります。
GridDB出力プラグインはGridDB WebAPIに依存しています。このブログでは、Fluentd、GridDB WebAPI、およびFluentd用GridDB Pluginのインストール、構成、および使用方法について説明します。
GridDBとWebAPIのセットアップ
GridDBをまだ実行していない場合、こちらのクイックスタートに従って実行してください。 Fluentdをインストールするには、 CentOS またはDebian/Ubuntuのガイドに従ってください。あわせて、Fluentd用のGridDBプラグインをビルドするために必要なrubyとgemもインストールします。 WebAPIをインストールするには、リリース版をダウンロードして展開し、webapiフォルダーを$GS_HOME
にコピーします。
$ sudo cp -a webapi /var/lib/gridstore
$ sudo chown gsadm.gridstore /var/lib/gridstore/webapi
次に、conf/repository.jsonを編集して、GridDBクラスター構成を反映させます。 あとはクラスター名を設定すれば準備が完了します。
{ "clusters" : [ { "name" : "defaultCluster", "mode" : "MULTICAST", "address" : "239.0.0.1", "port" : 31999, "jdbcAddress" : "239.0.0.1", "jdbcPort" : 41999, "transactionMember": "", "sqlMember": "", "providerUrl": null } ] }
次に、Web APIを実行します。
$ sudo su - gsadm
export CLASSPATH=:/usr/share/java/gridstore.jar
cd webapi/
java -jar lib/griddb-webapi-ce-2.1.0.jar 2>&1 /dev/null &
$GS_HOME/logs/gs_webapi*.logでエラーを確認します。正常に起動した場合、ログは以下のようになります。
[main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer: Tomcat started on port(s): 8080 (http) with context path '' [main] org.springframework.boot.StartupInfoLogger: Started Application in 2.677 seconds (JVM running for 3.278)
GridDB WebAPIがインストールされて実行されたので、次にGridDB Fluentdコネクタをインストールします。 リリース版をダウンロードして展開した後、以下を実行します。
$ cd fluent-plugin-griddb-1.0.0/
/opt/td-agent/embedded/bin/gem build fluent-plugin-griddb.gemspec
/opt/td-agent/embedded/bin/gem install --force --local fluent-plugin-griddb-1.0.0.gem
Fluentd GridDBプラグインを使用する
最もシンプルなGridDB構成として、これを/etc/td-agent/td-agent.conf
に追加し、td-agentを再起動します。
@type griddb host http://localhost:8080/ cluster defaultCluster database public container container_1 username admin password admin
$ sudo systemctl start td-agent.service
FluentdがGridDBにデータを書き込む前に、GridDB WebAPIを使用してコンテナーを作成する必要があります。
$ curl -X POST --basic -u admin:admin -H "Content-type:application/json" -d '{"container_name":"container_1", "container_type":"TIME_SERIES", "rowkey":true, "columns":[{"name": "date", "type": "TIMESTAMP" }, {"name": "value", "type": "DOUBLE" },{"name": "str", "type": "STRING" }]}' http://localhost:8080/griddb/v2/defaultCluster/dbs/public/containers
GridDBプラグインを配置すると、FluentdにデータをPOSTすることができるようになります。
$ curl -X POST -d 'json={"date":"2018-09-20T12:08:21.112Z",
"value":"4.23", "str":"Hello World"}' http://localhost:8888/griddb
GridDB WebAPIを使用して、FluentdにPOSTしたデータを確認することができます。
$ curl -X POST --basic -u admin:admin -H "Content-type:application/json" -d '{"limit":1000}' http://localhost:8080/griddb/v2/defaultCluster/dbs/public/containers/container_1/rows
このブログではFluentdとそのGridDBプラグインでできることのほんの一部をご紹介しました。 詳細については、こちらの詳細版をご覧ください。
ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb