influxdb-java
2016-02-02 09:59
435 查看
目前仅支持http apijava版本 下载:(参考https://github.com/influxdata/influxdb-java)
<dependency> <groupId>org.influxdb</groupId> <artifactId>influxdb-java</artifactId> <version>2.1</version> </dependency>java 要求(应该是docker client)
Build Requirements
Java 1.7+Maven 3.0+Docker daemon runningInfluxDB influxDB = InfluxDBFactory.connect("http://172.17.0.2:8086", "root", "root");String dbName = "aTimeSeries";influxDB.createDatabase(dbName);BatchPoints batchPoints = BatchPoints.database(dbName).tag("async", "true").retentionPolicy("default").consistency(ConsistencyLevel.ALL).build();Point point1 = Point.measurement("cpu").time(System.currentTimeMillis(), TimeUnit.MILLISECONDS).field("idle", 90L).field("system", 9L).field("system", 1L).build();Point point2 = Point.measurement("disk").time(System.currentTimeMillis(), TimeUnit.MILLISECONDS).field("used", 80L).field("free", 1L).build();batchPoints.point(point1);batchPoints.point(point2);influxDB.write(batchPoints);Query query = new Query("SELECT idle FROM cpu", dbName);influxDB.query(query);influxDB.deleteDatabase(dbName)demo2 If your application produces only single Points,you can enable the batching functionality of influxdb-java:InfluxDB influxDB = InfluxDBFactory.connect("http://172.17.0.2:8086", "root", "root");String dbName = "aTimeSeries";influxDB.createDatabase(dbName);// Flush every 2000 Points, at least every 100msinfluxDB.enableBatch(2000, 100, TimeUnit.MILLISECONDS);Point point1 = Point.measurement("cpu").time(System.currentTimeMillis(), TimeUnit.MILLISECONDS).field("idle", 90L).field("system", 9L).field("system", 1L).build();Point point2 = Point.measurement("disk").time(System.currentTimeMillis(), TimeUnit.MILLISECONDS).field("used", 80L).field("free", 1L).build();influxDB.write(dbName, "default", point1);influxDB.write(dbName, "default", point2);Query query = new Query("SELECT idle FROM cpu", dbName);influxDB.query(query);influxDB.deleteDatabase(dbName)demo3 dockerpackage org.influxdb;import java.io.IOException;import java.util.Arrays;import java.util.List;import java.util.logging.Level;import java.util.logging.Logger;import org.influxdb.InfluxDB.LogLevel;import org.influxdb.dto.BatchPoints;import org.influxdb.dto.Point;import org.influxdb.dto.Pong;import org.influxdb.dto.Query;import org.influxdb.dto.QueryResult;import org.testng.Assert;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;import com.github.dockerjava.api.DockerClient;import com.github.dockerjava.api.command.CreateContainerResponse;import com.github.dockerjava.core.DockerClientBuilder;import com.github.dockerjava.core.DockerClientConfig;/*** Test the InfluxDB API.** @author stefan.majer [at] gmail.com**/@Testpublic class InfluxDBTest {private InfluxDB influxDB;private DockerClient dockerClient;private CreateContainerResponse container;/*** Create a influxDB connection before all tests start.** @throws InterruptedException* @throws IOException*/@BeforeClasspublic void setUp() throws InterruptedException, IOException {// Disable logging for the DockerClient.Logger.getLogger("com.sun.jersey").setLevel(Level.OFF);DockerClientConfig config = DockerClientConfig.createDefaultConfigBuilder().withVersion("1.16").withUri("tcp://localhost:4243").withUsername("roott").withPassword("root").build();this.dockerClient = DockerClientBuilder.getInstance(config).build();// this.dockerClient.pullImageCmd("majst01/influxdb-java");// ExposedPort tcp8086 = ExposedPort.tcp(8086);//// Ports portBindings = new Ports();// portBindings.bind(tcp8086, Ports.Binding(8086));// this.container = this.dockerClient.createContainerCmd("influxdb:0.9.0-rc7").exec();// this.dockerClient.startContainerCmd(this.container.getId()).withPortBindings(portBindings).exec();//// InspectContainerResponse inspectContainerResponse =// this.dockerClient.inspectContainerCmd(// this.container.getId()).exec();//// InputStream containerLogsStream = this.dockerClient// .logContainerCmd(this.container.getId())// .withStdErr()// .withStdOut()// .exec();// String ip = inspectContainerResponse.getNetworkSettings().getIpAddress();String ip = "127.0.0.1";this.influxDB = InfluxDBFactory.connect("http://" + ip + ":8086", "root", "root");boolean influxDBstarted = false;do {Pong response;try {response = this.influxDB.ping();System.out.println(response);if (!response.getVersion().equalsIgnoreCase("unknown")) {influxDBstarted = true;}} catch (Exception e) {// NOOP intentionale.printStackTrace();}Thread.sleep(100L);} while (!influxDBstarted);this.influxDB.setLogLevel(LogLevel.FULL);// String logs = CharStreams.toString(new InputStreamReader(containerLogsStream,// Charsets.UTF_8));System.out.println("##################################################################################");// System.out.println("Container Logs: \n" + logs);System.out.println("# Connected to InfluxDB Version: " + this.influxDB.version() + " #");System.out.println("##################################################################################");}/*** Ensure all Databases created get dropped afterwards.*/@AfterClasspublic void tearDown() {System.out.println("Kill the Docker container");// this.dockerClient.killContainerCmd(this.container.getId()).exec();}/*** Test for a ping.*/@Test(enabled = true)public void testPing() {Pong result = this.influxDB.ping();Assert.assertNotNull(result);Assert.assertNotEquals(result.getVersion(), "unknown");}/*** Test that version works.*/@Test(enabled = true)public void testVersion() {String version = this.influxDB.version();Assert.assertNotNull(version);Assert.assertFalse(version.contains("unknown"));}/*** Simple Test for a query.*/@Test(enabled = true)public void testQuery() {this.influxDB.query(new Query("CREATE DATABASE mydb2", "mydb"));this.influxDB.query(new Query("DROP DATABASE mydb2", "mydb"));}/*** Test that describe Databases works.*/@Test(enabled = true)public void testDescribeDatabases() {String dbName = "unittest_" + System.currentTimeMillis();this.influxDB.createDatabase(dbName);this.influxDB.describeDatabases();List<String> result = this.influxDB.describeDatabases();Assert.assertNotNull(result);Assert.assertTrue(result.size() > 0);boolean found = false;for (String database : result) {if (database.equals(dbName)) {found = true;break;}}Assert.assertTrue(found, "It is expected that describeDataBases contents the newly create database.");}/*** Test that writing to the new lineprotocol.*/@Test(enabled = true)public void testWrite() {String dbName = "write_unittest_" + System.currentTimeMillis();this.influxDB.createDatabase(dbName);BatchPoints batchPoints = BatchPoints.database(dbName).tag("async", "true").retentionPolicy("default").build();Point point1 = Point.measurement("cpu").tag("atag", "test").field("idle", 90L).field("usertime", 9L).field("system", 1L).build();Point point2 = Point.measurement("disk").tag("atag", "test").field("used", 80L).field("free", 1L).build();batchPoints.point(point1);batchPoints.point(point2);this.influxDB.write(batchPoints);Query query = new Query("SELECT * FROM cpu GROUP BY *", dbName);QueryResult result = this.influxDB.query(query);Assert.assertFalse(result.getResults().get(0).getSeries().get(0).getTags().isEmpty());this.influxDB.deleteDatabase(dbName);}/*** Test writing to the database using string protocol.*/@Test(enabled = true)public void testWriteStringData() {String dbName = "write_unittest_" + System.currentTimeMillis();this.influxDB.createDatabase(dbName);this.influxDB.write(dbName, "default", InfluxDB.ConsistencyLevel.ONE, "cpu,atag=test idle=90,usertime=9,system=1");Query query = new Query("SELECT * FROM cpu GROUP BY *", dbName);QueryResult result = this.influxDB.query(query);Assert.assertFalse(result.getResults().get(0).getSeries().get(0).getTags().isEmpty());this.influxDB.deleteDatabase(dbName);}/*** Test writing multiple records to the database using string protocol.*/@Test(enabled = true)public void testWriteMultipleStringData() {String dbName = "write_unittest_" + System.currentTimeMillis();this.influxDB.createDatabase(dbName);this.influxDB.write(dbName, "default", InfluxDB.ConsistencyLevel.ONE, "cpu,atag=test1 idle=100,usertime=10,system=1\ncpu,atag=test2 idle=200,usertime=20,system=2\ncpu,atag=test3 idle=300,usertime=30,system=3");Query query = new Query("SELECT * FROM cpu GROUP BY *", dbName);QueryResult result = this.influxDB.query(query);Assert.assertEquals(result.getResults().get(0).getSeries().size(), 3);Assert.assertEquals(result.getResults().get(0).getSeries().get(0).getTags().get("atag"), "test1");Assert.assertEquals(result.getResults().get(0).getSeries().get(1).getTags().get("atag"), "test2");Assert.assertEquals(result.getResults().get(0).getSeries().get(2).getTags().get("atag"), "test3");this.influxDB.deleteDatabase(dbName);}/*** Test writing multiple separate records to the database using string protocol.*/@Test(enabled = true)public void testWriteMultipleStringDataLines() {String dbName = "write_unittest_" + System.currentTimeMillis();this.influxDB.createDatabase(dbName);this.influxDB.write(dbName, "default", InfluxDB.ConsistencyLevel.ONE, Arrays.asList("cpu,atag=test1 idle=100,usertime=10,system=1","cpu,atag=test2 idle=200,usertime=20,system=2","cpu,atag=test3 idle=300,usertime=30,system=3"));Query query = new Query("SELECT * FROM cpu GROUP BY *", dbName);QueryResult result = this.influxDB.query(query);Assert.assertEquals(result.getResults().get(0).getSeries().size(), 3);Assert.assertEquals(result.getResults().get(0).getSeries().get(0).getTags().get("atag"), "test1");Assert.assertEquals(result.getResults().get(0).getSeries().get(1).getTags().get("atag"), "test2");Assert.assertEquals(result.getResults().get(0).getSeries().get(2).getTags().get("atag"), "test3");this.influxDB.deleteDatabase(dbName);}/*** Test that creating database which name is composed of numbers only works*/@Test(enabled = true)public void testCreateNumericNamedDatabase() {String numericDbName = "123";this.influxDB.createDatabase(numericDbName);List<String> result = this.influxDB.describeDatabases();Assert.assertTrue(result.contains(numericDbName));this.influxDB.deleteDatabase(numericDbName);}}
相关文章推荐
- JAVA中字符串比较equals()和equalsIgnoreCase()的区别
- 在eclipse中导入工程后@Override报错
- springmvc文件上传使用ajaxfileupload插件
- Java2EE的controller层获取session的方法
- springmvc文件上传使用uploadify插件
- 关于eclipse无法安装插件的问题
- java基础知识----IO篇
- 很有用的一个关于highcharts使用的网页
- 史上最详细的Highcharts使用指南
- 快速排序的原理及java代码实现
- java中值得注意的
- 举例讲解Java设计模式中的对象池模式编程
- Java类与文件
- java xml 框架 dom4j 解析 xml 字符串
- 传智播客168期JavaEE就业班(第四天 dom)
- JAVA_安装JDK和Eclipse
- 使用Maven在Eclipse搭建Web项目 有项目实例 绝对好用
- JAVA中List、Map、Set的区别与选用
- 搭建SSH三大框架WEB项目过程(Struts2.3+Hibernate4.3+Spring4.1)
- Eclipse编辑jsp、js文件时卡死现象的解决办法汇总