- InfluxDB2 auto-configuration
- Actuator for InfluxDB2 micrometer registry
- Actuator for InfluxDB2 health
7.0.0
upgrades the OkHttp
library to version 4.12.0
. The version 3.x.x
is no longer supported - okhttp#requirements.
The spring-boot
supports the OkHttp:4.12.0
. For the older version of spring-boot
you have to configure Spring Boot's okhttp3.version
property:
<properties>
<okhttp3.version>4.10.0</okhttp3.version>
</properties>
To enable InfluxDBClient
support you need to set a influx.url
property, and include influxdb-client-java
on your classpath.
InfluxDBClient
relies on OkHttp. If you need to tune the http client, you can register an InfluxDB2OkHttpClientBuilderProvider
bean.
The default configuration can be override via properties:
influx:
url: http://localhost:8086/ # URL to connect to InfluxDB.
username: my-user # Username to use in the basic auth.
password: my-password # Password to use in the basic auth.
token: my-token # Token to use for the authorization.
org: my-org # Default destination organization for writes and queries.
bucket: my-bucket # Default destination bucket for writes.
logLevel: BODY # The log level for logging the HTTP request and HTTP response. (Default: NONE)
readTimeout: 5s # Read timeout for OkHttpClient. (Default: 10s)
writeTimeout: 5s # Write timeout for OkHttpClient. (Default: 10s)
connectTimeout: 5s # Connection timeout for OkHttpClient. (Default: 10s)
@ComponentScan
annotation to your Spring Boot startup class and include com.influxdb.spring.influx in the basePackages.
For example:
@SpringBootApplication
@ComponentScan(basePackages = {"xyz", "com.influxdb.spring.influx"})
public class Application {
public static void main(String[] args) {
ApplicationContext applicationContext = SpringApplication.run(Application.class, args);
}
}
The reason for this is that Spring Boot 2.7 has changed the way that auto-configuration and management context classes are discovered. see https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.7-Release-Notes
If you want to configure the InfluxDBClientReactive
client, you need to include influxdb-client-reactive
on your classpath instead of influxdb-client-java
.
To enable export metrics to InfluxDB 2.x you need to include micrometer-registry-influx
on your classpath.
(Due to package conflicts, the spring-boot-actuator
may have relied on an earlier version of the micrometer-core
. Therefore, it is necessary to specify a higher version here.)
The default configuration can be override via properties:
management.metrics.export.influx:
bucket: my-bucket # Specifies the destination bucket for writes
org: my-org # Specifies the destination organization for writes.
token: my-token # Authenticate requests with this token.
uri: http://localhost:8086/api/v2 # The URI for the Influx backend. (Default: http://localhost:8086/api/v2)
compressed: true # Whether to enable GZIP compression of metrics batches published to Influx. (Default: true)
enabled: true # Whether exporting of metrics to this backend is enabled. (Default: true)
step: 1m # Step size (i.e. reporting frequency) to use. (Default: 1m)
connect-timeout: 1s # Connection timeout for requests to this backend. (Default: 1s)
read-timeout: 10s # Read timeout for requests to this backend. (Default: 10s)
num-threads: 2 # Number of threads to use with the metrics publishing scheduler. (Default: 2)
batch-size: 10000 # Number of measurements per request to use for this backend. If more measurements are found, then multiple requests will be made. (Default: 10000)
Maven dependency:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-influx</artifactId>
<version>1.12.2</version>
</dependency>
or when using with Gradle:
dependencies {
implementation "io.micrometer:micrometer-registry-influx:1.12.2"
}
The /health
endpoint can monitor an InfluxDB 2.x server.
InfluxDB 2.x health check relies on InfluxDBClient
and can be configured via:
management.health.influx.enabled=true # Whether to enable InfluxDB 2.x health check.
The latest version for Maven dependency:
<dependency>
<groupId>com.influxdb</groupId>
<artifactId>influxdb-spring</artifactId>
<version>7.2.0</version>
</dependency>
Or when using with Gradle:
dependencies {
implementation "com.influxdb:influxdb-spring:7.2.0"
}