Using Fluentd to Push Data to GridDB | GridDB: Open Source Time Series Database for IoT

Israel Imru
3 min readJan 21, 2020

Fluentd is an open source data collector that allows you to easily ingest data into GridDB;
this data is most typically information generated by edge devices or other sources not in your
local network. Fluentd supports multiple input sources including HTTP, MQTT and more.
Fluentd also has many different output options, including GridDB.

The GridDB output plugin relies on the GridDB WebAPI, this post will cover the installation, configuration, and usage of Fluentd, GridDB WebAPI, and the GridDB Plugin for Fluentd.

If you don’t have GridDB running already, the quick start is here. To install Fluentd, follow
the guides for CentOS or Debian/Ubuntu. While following these guides, you’ll also install ruby and gem which will be required to build the GridDB plugin for Fluentd. To install the WebAPI, download and untar the release and then copy the webapi folder to $GS_HOME

$ sudo cp -a webapi /var/lib/gridstore$ sudo chown gsadm.gridstore /var/lib/gridstore/webapi

Then edit conf/repository.json to reflect your GridDB cluster configuration. You will likely
only need to set the cluster name.

{ "clusters" : [ { "name" : "defaultCluster", "mode" : "MULTICAST", "address" : "239.0.0.1", "port" : 31999, "jdbcAddress" : "239.0.0.1", "jdbcPort" : 41999, "transactionMember": "", "sqlMember": "", "providerUrl": null } ] }

Now to run WebAPI:

$ 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 &

Check $GS_HOME/logs/gs_webapi*.log for errors, if it has successfully started, the logs should
contain:

[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)

Now that the GridDB WebAPI is installed and running, it’s time to install the GridDB Fluentd
connector. After downloading and un-tarring the release, run:

$ 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

The simplest GridDB configuration follows, this chunk would be added to /etc/td-agent/td-agent.conf and then the td-agent will need to be restarted.

@type griddb host http://localhost:8080/ cluster defaultCluster database public container container_1 username admin password admin

Before Fluentd can write data to GridDB, you need to create the container using the 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

With the GridDB plugin in place, you can POST data to Fluentd:

$ curl -X POST -d 'json={"date":"2018-09-20T12:08:21.112Z", "value":"4.23", "str":"Hello World"}' http://localhost:8888/griddb And using the GridDB WebAPI, we can see the data we POSTed to FluentD: $ curl -X POST --basic -u admin:admin -H "Content-type:application/json" -d '{"limit":1000}' http://localhost:8080/griddb/v2/defaultCluster/dbs/public/containers/conta iner_1/rows

This is just the beginning of what you can do with Fluentd and its GridDB plugin. For more information, please check out the detailed documentation.

Originally published at https://griddb.net on January 21, 2020.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response