/*
* Copyright (c) 2011-2017 The original author or authors
* ------------------------------------------------------
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package io.vertx.micrometer;
import io.micrometer.influx.InfluxConfig;
import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.json.JsonObject;
import java.time.Duration;
Vert.x InfluxDb micrometer configuration.
Author: Dan Kristensen, Joel Takvorian
/**
* Vert.x InfluxDb micrometer configuration.
*
* @author Dan Kristensen
* @author Joel Takvorian
*/
@DataObject(generateConverter = true, inheritConverter = true)
public class VertxInfluxDbOptions {
Default value for enabled = false.
/**
* Default value for enabled = false.
*/
public static final boolean DEFAULT_ENABLED = false;
Default value for metric collection interval (in seconds) = 10.
/**
* Default value for metric collection interval (in seconds) = 10.
*/
public static final int DEFAULT_STEP = 10;
Default value for the maximum number of metrics in a batch = 10000.
/**
* Default value for the maximum number of metrics in a batch = 10000.
*/
public static final int DEFAULT_BATCH_SIZE = 10000;
The default InfluxDb server URI = http://localhost:8086.
/**
* The default InfluxDb server URI = http://localhost:8086.
*/
public static final String DEFAULT_URI = "http://localhost:8086";
The default InfluxDb database = default.
/**
* The default InfluxDb database = default.
*/
public static final String DEFAULT_DATABASE = "default";
The default gzip enabled on InfluxDb = true.
/**
* The default gzip enabled on InfluxDb = true.
*/
public static final boolean DEFAULT_COMPRESSION_ENABLED = true;
The default number of threads used = 2.
/**
* The default number of threads used = 2.
*/
public static final int DEFAULT_NUM_THREADS = 2;
The default connection timeout (seconds) = 1.
/**
* The default connection timeout (seconds) = 1.
*/
public static final int DEFAULT_CONNECT_TIMEOUT = 1;
The default read timeout (seconds) = 10.
/**
* The default read timeout (seconds) = 10.
*/
public static final int DEFAULT_READ_TIMEOUT = 10;
private boolean enabled;
private String uri;
private String db;
private String userName;
private String password;
private String retentionPolicy;
private boolean compressed;
private int step;
private int numThreads;
private int connectTimeout;
private int readTimeout;
private int batchSize;
Create default options for InfluxDB reporting. Note that they are disabled by default.
/**
* Create default options for InfluxDB reporting. Note that they are disabled by default.
*/
public VertxInfluxDbOptions() {
enabled = DEFAULT_ENABLED;
uri = DEFAULT_URI;
db = DEFAULT_DATABASE;
compressed = DEFAULT_COMPRESSION_ENABLED;
step = DEFAULT_STEP;
numThreads = DEFAULT_NUM_THREADS;
connectTimeout = DEFAULT_CONNECT_TIMEOUT;
readTimeout = DEFAULT_READ_TIMEOUT;
batchSize = DEFAULT_BATCH_SIZE;
}
Creates new options object for InfluxDB reporting, which is a copy of other
. /**
* Creates new options object for InfluxDB reporting, which is a copy of {@code other}.
*/
public VertxInfluxDbOptions(VertxInfluxDbOptions other) {
enabled = other.enabled;
uri = other.uri;
db = other.db;
userName = other.userName;
password = other.password;
retentionPolicy = other.retentionPolicy;
compressed = other.compressed;
step = other.step;
numThreads = other.numThreads;
connectTimeout = other.connectTimeout;
readTimeout = other.readTimeout;
batchSize = other.batchSize;
}
Creates new options object for InfluxDB reporting from json
input. /**
* Creates new options object for InfluxDB reporting from {@code json} input.
*/
public VertxInfluxDbOptions(JsonObject json) {
this();
VertxInfluxDbOptionsConverter.fromJson(json, this);
}
Returns: a JSON representation of these options
/**
* @return a JSON representation of these options
*/
public JsonObject toJson() {
JsonObject json = new JsonObject();
VertxInfluxDbOptionsConverter.toJson(this, json);
return json;
}
Will InfluxDB reporting be enabled?
Returns: true if enabled, false if not.
/**
* Will InfluxDB reporting be enabled?
*
* @return true if enabled, false if not.
*/
public boolean isEnabled() {
return enabled;
}
Set true to enable InfluxDB reporting
/**
* Set true to enable InfluxDB reporting
*/
public VertxInfluxDbOptions setEnabled(boolean enabled) {
this.enabled = enabled;
return this;
}
Get the InfluxDB server URI
/**
* Get the InfluxDB server URI
*/
public String getUri() {
return uri;
}
URI of the InfluxDB server. Example: http://influx:8086.
/**
* URI of the InfluxDB server. <i>Example: http://influx:8086</i>.
*/
public VertxInfluxDbOptions setUri(String uri) {
this.uri = uri;
return this;
}
Get the InfluxDB database name used to store metrics
/**
* Get the InfluxDB database name used to store metrics
*/
public String getDb() {
return db;
}
Database name used to store metrics. Default is "default".
/**
* Database name used to store metrics. Default is "default".
*/
public VertxInfluxDbOptions setDb(String db) {
this.db = db;
return this;
}
Get the username used for authenticated connections
/**
* Get the username used for authenticated connections
*/
public String getUserName() {
return userName;
}
Username used for authenticated connections
/**
* Username used for authenticated connections
*/
public VertxInfluxDbOptions setUserName(String userName) {
this.userName = userName;
return this;
}
Get the password used for authenticated connections
/**
* Get the password used for authenticated connections
*/
public String getPassword() {
return password;
}
Password used for authenticated connections
/**
* Password used for authenticated connections
*/
public VertxInfluxDbOptions setPassword(String password) {
this.password = password;
return this;
}
Get the InfluxDB retention policy
/**
* Get the InfluxDB retention policy
*/
public String getRetentionPolicy() {
return retentionPolicy;
}
InfluxDB retention policy
/**
* InfluxDB retention policy
*/
public VertxInfluxDbOptions setRetentionPolicy(String retentionPolicy) {
this.retentionPolicy = retentionPolicy;
return this;
}
Get the GZIP compression flag for requests
/**
* Get the GZIP compression flag for requests
*/
public boolean isCompressed() {
return compressed;
}
Activate or deactivate GZIP compression. It is activated by default.
/**
* Activate or deactivate GZIP compression. It is activated by default.
*/
public VertxInfluxDbOptions setCompressed(boolean compressed) {
this.compressed = compressed;
return this;
}
Get the step of push intervals, in seconds
/**
* Get the step of push intervals, in seconds
*/
public int getStep() {
return step;
}
Push interval steps, in seconds. Default is 10 seconds.
/**
* Push interval steps, in seconds. Default is 10 seconds.
*/
public VertxInfluxDbOptions setStep(int step) {
this.step = step;
return this;
}
Get the number of threads used by the push scheduler
/**
* Get the number of threads used by the push scheduler
*/
public int getNumThreads() {
return numThreads;
}
Number of threads to use by the push scheduler. Default is 2.
/**
* Number of threads to use by the push scheduler. Default is 2.
*/
public VertxInfluxDbOptions setNumThreads(int numThreads) {
this.numThreads = numThreads;
return this;
}
Get the connection timeout for InfluxDB server connections, in seconds.
/**
* Get the connection timeout for InfluxDB server connections, in seconds.
*/
public int getConnectTimeout() {
return connectTimeout;
}
Connection timeout for InfluxDB server connections, in seconds. Default is 1 second.
/**
* Connection timeout for InfluxDB server connections, in seconds. Default is 1 second.
*/
public VertxInfluxDbOptions setConnectTimeout(int connectTimeout) {
this.connectTimeout = connectTimeout;
return this;
}
Get the read timeout for InfluxDB server connections, in seconds.
/**
* Get the read timeout for InfluxDB server connections, in seconds.
*/
public int getReadTimeout() {
return readTimeout;
}
Read timeout for InfluxDB server connections, in seconds. Default is 10 seconds.
/**
* Read timeout for InfluxDB server connections, in seconds. Default is 10 seconds.
*/
public VertxInfluxDbOptions setReadTimeout(int readTimeout) {
this.readTimeout = readTimeout;
return this;
}
Get batch size, which is the maximum number of measurements sent per request to the InfluxDB server.
/**
* Get batch size, which is the maximum number of measurements sent per request to the InfluxDB server.
*/
public int getBatchSize() {
return batchSize;
}
Maximum number of measurements sent per request to the InfluxDB server. When the maximum is reached, several requests are made.
Default is 10000.
/**
* Maximum number of measurements sent per request to the InfluxDB server. When the maximum is reached, several requests are made.
* Default is 10000.
*/
public VertxInfluxDbOptions setBatchSize(int batchSize) {
this.batchSize = batchSize;
return this;
}
Convert these options to a Micrometer's InfluxConfig
object /**
* Convert these options to a Micrometer's {@code InfluxConfig} object
*/
public InfluxConfig toMicrometerConfig() {
return new InfluxConfig() {
@Override
public String get(String k) {
return null;
}
@Override
public String db() {
return db;
}
@Override
public String userName() {
return userName;
}
@Override
public String password() {
return password;
}
@Override
public String retentionPolicy() {
return retentionPolicy;
}
@Override
public String uri() {
return uri;
}
@Override
public boolean compressed() {
return compressed;
}
@Override
public Duration step() {
return Duration.ofSeconds(step);
}
@Override
public int numThreads() {
return numThreads;
}
@Override
public Duration connectTimeout() {
return Duration.ofSeconds(connectTimeout);
}
@Override
public Duration readTimeout() {
return Duration.ofSeconds(readTimeout);
}
@Override
public int batchSize() {
return batchSize;
}
};
}
}