- Notifications
You must be signed in to change notification settings - Fork7
💙 C write client for InfluxDB.
License
orca-zhang/influxdb-c
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A header-only C write client for InfluxDB.
- Supported versions:
- InfluxDB v0.9 ~ v1.4
- Check yourself while using other versions.
- 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:
- Uses gtest &mockcpp
The very simple thing you should do before using is only:
#include"influxdb.h"
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 calling
post_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 of
INFLUX_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.
- 3rd parameter of
- NOTE:
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
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);
- Add more test cases for send functions.
- Supports DSN initializatin for influx_client_t.
- Add query function.
- Do not need to connect every time.
- 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.
About
💙 C write client for InfluxDB.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Contributors2
Uh oh!
There was an error while loading.Please reload this page.