필자는 자바를 사용하기 때문에 자바 코드를 예시로 들겠다.


<dependencies>
<dependency>
<groupId>com.influxdb</groupId>
<artifactId>influxdb-client-java</artifactId>
<version>6.9.0</version>
</dependency>
</dependencies>

package example;
import java.time.Instant;
import java.util.List;
import com.influxdb.annotations.Column;
import com.influxdb.annotations.Measurement;
import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.InfluxDBClientFactory;
import com.influxdb.client.WriteApi;
import com.influxdb.client.domain.WritePrecision;
import com.influxdb.client.write.Point;
import com.influxdb.query.FluxTable;
public class InfluxDB2Example {
public static void main(final String[] args) {
// You can generate an API token from the "API Tokens Tab" in the UI
String token = System.getenv("INFLUX_TOKEN");
String bucket = "your-Bucket";
String org = "your-org";
InfluxDBClient client = InfluxDBClientFactory.create("http://localhost:8086", token.toCharArray());
}
}
출처 https://github.com/influxdata/influxdb-client-java
String token = System.getenv("INFLUX_TOKEN");
String bucket = "your-Bucket";
String org = "your-org";

출처 https://docs.influxdata.com/influxdb/v2.7/get-started/write/
String data = "mem,host=host1 used_percent=23.43234543";
WriteApiBlocking writeApi = client.getWriteApiBlocking();
writeApi.writeRecord(bucket, org, WritePrecision.NS, data);
Point point = Point
.measurement("mem")
.addTag("host", "host1")
.addField("used_percent", 23.43234543)
.time(Instant.now(), WritePrecision.NS);
WriteApiBlocking writeApi = client.getWriteApiBlocking();
writeApi.writePoint(bucket, org, point);
개인적으로 제일 직관적이고 간단한 방법인 거 같아서 이 방법을 사용했다.
Mem mem = new Mem();
mem.host = "host1";
mem.used_percent = 23.43234543;
mem.time = Instant.now();
WriteApiBlocking writeApi = client.getWriteApiBlocking();
writeApi.writeMeasurement(bucket, org, WritePrecision.NS, mem);
@Measurement(name = "mem")
public static class Mem {
@Column(tag = true)
String host;
@Column
Double used_percent;
@Column(timestamp = true)
Instant time;
}
이제 3가지 방법 중에서 원하는 방법을 통해 코드를 작성하면 된다.
필자의 코드로 예시를 들면
package example;
import java.time.Instant;
import java.util.concurrent.ThreadLocalRandom;
import com.influxdb.client.InfluxDBClient;
import com.influxdb.client.InfluxDBClientFactory;
import com.influxdb.client.WriteApiBlocking;
import com.influxdb.client.domain.WritePrecision;
import com.influxdb.client.write.Point;
public class InfluxDB2Write {
private static char[] token = "토큰".toCharArray();
private static String org = "기관";
private static String bucket = "버킷";
public static void main(final String[] args) {
InfluxDBClient influxDBClient = InfluxDBClientFactory.create("http://localhost:8086", token, org, bucket);
// 임의의 데이터 생성
Long time1 = Instant.now().toEpochMilli();
Double microDust_1_1 = 20.0;
Double microDust_2_1 = 20.0;
Double microDust_3_1 = 20.0;
Double temperature_1 = 25.0;
Double humidity_1 = 10.0;
Double ozone_1 = 24.0;
Double sulfurDioxide_1 = 1.002;
Double carbonMonoxide_1 = 0.034;
Double carbonDioxide_1 = 0.002;
Double windDirection_1 = 97.5;
Double windSpeed_1 = 1.0;
WriteApiBlocking writeApi = influxDBClient.getWriteApiBlocking();
// 첫 번째 데이터 포인트
Point point1 = Point
.measurement("test1")
.addTag("sensor_id", "TLM0103") // 태그 추가
.addField("time", time1)
.addField("microDust_1", microDust_1_1)
.addField("microDust_2", microDust_2_1)
.addField("microDust_3", microDust_3_1)
.addField("temperature", temperature_1)
.addField("humidity", humidity_1)
.addField("ozone", ozone_1)
.addField("sulfurDioxide", sulfurDioxide_1)
.addField("carbonMonoxide", carbonMonoxide_1)
.addField("carbonDioxide", carbonDioxide_1)
.addField("windDirection", windDirection_1)
.addField("windSpeed", windSpeed_1)
.time(time1, WritePrecision.MS);
// InfluxDB에 데이터 저장
writeApi.writePoint(bucket, org, point1);
influxDBClient.close();
}
}
terminal 에서 influxd 를 입력해서 influxdb가 실행되고 있다는 가정하에 진행하고 있다.

회원가입하면 된다.
brew install grafana
brew services start grafana



