Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

💙 C write client for InfluxDB.

License

NotificationsYou must be signed in to change notification settings

orca-zhang/influxdb-c

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A header-only C write client for InfluxDB.

licenseBuild Status

  • Supported versions:
    • InfluxDB v0.9 ~ v1.4
    • Check yourself while using other versions.

Why use influxdb-c?

  • Exactly small:
    • Less than 300 lines and only about 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 std C libraries.
  • Under serious testing:

Examples

Before using

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

    #include"influxdb.h"

Write example

  • You should according to thewrite 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 series by using one of the following examples:

  • Client configurations:

    influx_client_tc;c.host=strdup("127.0.0.1");c.port=8086;c.db=strdup("db");c.usr=strdup("usr");c.pwd=strdup("pwd");
  • Under C99, you can use:

    influx_client_tc= {    .host=strdup("127.0.0.1"),    .port=8086,    .db=strdup("db"),    .usr=strdup("usr"),    .pwd=strdup("pwd")};
  • Then send out the series by callingpost_http:

    post_http(&c,INFLUX_MEAS("foo"),INFLUX_TAG("k","v"),INFLUX_TAG("x","y"),INFLUX_F_INT("x",10),INFLUX_F_FLT("y",10.3,2),INFLUX_F_FLT("z",10.3456,2),INFLUX_F_BOL("b",10),INFLUX_TS(1512722735522840439),INFLUX_END);
    • NOTE:
      • 3rd parameter ofINFLUX_F_FLT() isprecision for floating point value.
      • usr andpwd is optional for authorization.
      • INFLUX_END is the delimiter for variable arguments list thatshould not be ommitted.
  • The series sent is:

    foo,k=v,x=y x=10i,y=10.30,z=10.35,b=t 1512722735522840439
  • You could changepost_http tosend_udp for UDP request. And onlyhost andport are required for UDP operation.

    influx_client_tc= {strdup("127.0.0.1"),8091,NULL,NULL,NULL};send_udp(&c,INFLUX_MEAS("foo"),INFLUX_TAG("k","v"),INFLUX_F_INT("x",10),INFLUX_END);
  • Bulk/batch write is also supported:

    send_udp(&c,INFLUX_MEAS("foo"),// series 1INFLUX_F_INT("x",10),INFLUX_MEAS("foo"),// series 2INFLUX_F_FLT("y",10.3,2),INFLUX_END);
  • The series sent are:

    foo x=10ibar y=10.30
  • If measurement data is sent from within a loop, but higher write performanceis needed, one has to format each measurement separately, then at the endsend the formatted line to the database. This example sends 10 measurementswith a single http request:

    influx_client_tc= {strdup("127.0.0.1"),8091,NULL,NULL,NULL};char*line=NULL;intlen=0;intused=0;for (inti=0;i<10;++i) {used=format_line(line,&len,used,INFLUX_MEAS("foo"),INFLUX_TAG("k","v"),INFLUX_F_INT("x",i),INFLUX_END);}post_http_send_line(&c,line,used);

TODO

  • Add more test cases for send functions.
  • Supports DSN initializatin for influx_client_t.
  • Add query function.
  • Do not need to connect every time.

Misc

  • Please feel free to use influxdb-c.
  • Looking forward to your suggestions.
  • If your project is using influxdb-c, you can show your project or company here by creating a issue or let me know.

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp