Fluentdを使用してデータをGridDBにプッシュする

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

注:「localhost:8888への接続に失敗しました」というエラーが表示される場合は、次を実行してください。
$ 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

Leave a Reply

Your email address will not be published. Required fields are marked *