Skip to content
πŸ’œ C++ client for InfluxDB.
C++ CMake
Branch: master
Clone or download
orca-zhang Merge pull request #18 from m-peko/make-functions-inline
πŸ”§ Fix compilation errors by making functions inline
Latest commit 64cc65f Jul 16, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
test πŸ’‘ fix scientific float number output for #10 Nov 22, 2018
.gitignore update README.md Dec 14, 2017
LICENSE Initial commit Dec 13, 2017
README.md πŸ’‘ update README.md Apr 16, 2019
influxdb.hpp Fix compilation errors by making functions inline Jul 13, 2019

README.md

influxdb-cpp

A header-only C++ query & write client for InfluxDB.

license Build Status Build status

  • Support versions:
    • InfluxDB v0.9 ~ 1.7
    • Check yourself while using other versions.

Why use influxdb-cpp?

  • Exactly-small:
    • Less than 300 lines and only 10KB+.
  • Easy-to-use:
    • It's designed to be used without extra studies.
  • Easy-to-assemble:
    • Only a tiny header file needs to be included.
  • No-dependencies:
    • Unless STL and std C libraries.

Examples

Before using

  • The very simple thing you should do before using is only:

    #include "influxdb.hpp"

Writing example

  • You should refer to the write syntax while writing series(metrics).

    measurement[,tag-key=tag-value...] field-key=field-value[,field2-key=field2-value...] [unix-nano-timestamp]
    
  • You can rapidly start writing serires by according to the following example.

    influxdb_cpp::server_info si("127.0.0.1", 8086, "db", "usr", "pwd");
    influxdb_cpp::builder()
        .meas("foo")
        .tag("k", "v")
        .tag("x", "y")
        .field("x", 10)
        .field("y", 10.3, 2)
        .field("z", 10.3456)
        .field("b", !!10)
        .timestamp(1512722735522840439)
        .post_http(si);
    • Remarks:
      • 3rd parameter precision of field() is optional for floating point value, and default precision is 2.
      • usr and pwd is optional for authorization.
  • The series sent is:

    foo,k=v,x=y x=10i,y=10.30,z=10.35,b=t 1512722735522840439
    
  • You could change post_http to send_udp for udp request. And only host and port is required for udp.

    influxdb_cpp::builder()
        .meas("foo")
        .field("x", 10)
        .send_udp("127.0.0.1", 8091);
  • Bulk/batch/multiple insert also supports:

    influxdb_cpp::builder()
        .meas("foo")  // series 1
        .field("x", 10)
    
        .meas("bar")  // series 2
        .field("y", 10.3)
        .send_udp("127.0.0.1", 8091);
  • The series sent are:

    foo x=10i
    bar y=10.30
    

Query example

  • And you can query series by according to the following example.

    influxdb_cpp::server_info si("127.0.0.1", 8086, "db", "usr", "pwd");
    
    string resp;
    influxdb_cpp::query(resp, "select * from t", si);
  • You can use xpjson to parse the result refer to issue #3.

Remarks for Windows

TODO

  • Add more test cases.
  • Supports DSN initializatin for server_info.
  • Do not need to connect every time.

Misc

  • Please feel free to use influxdb-cpp.
  • Looking forward to your suggestions.
  • If your project is using influxdb-cpp, you can show your project or company here by creating a issue or let me know.
You can’t perform that action at this time.