Set up influxdb
This commit is contained in:
17
README.md
17
README.md
@@ -7,6 +7,10 @@ Classes for the devices, to structure each state, Messages exchanged, as data aw
|
|||||||
| name | required | info |
|
| name | required | info |
|
||||||
|------------------------|----------|-------------------------|
|
|------------------------|----------|-------------------------|
|
||||||
| spring.profiles.active | * | Spring Boot environment |
|
| spring.profiles.active | * | Spring Boot environment |
|
||||||
|
| influxdb.bucket | | InfluxDB bucket |
|
||||||
|
| influxdb.org | | InfluxDB organization |
|
||||||
|
| influxdb.token | ** | InfluxDB access token |
|
||||||
|
| influxdb.url | * | InfluxDB host url |
|
||||||
|
|
||||||
Required: * can be stored as text, and ** need to be stored as secret.
|
Required: * can be stored as text, and ** need to be stored as secret.
|
||||||
|
|
||||||
@@ -18,7 +22,7 @@ Run `release.sh` script from `master` branch.
|
|||||||
|
|
||||||
### Global gradle properties
|
### Global gradle properties
|
||||||
|
|
||||||
To authenticate with Gradle to access repositories that require authentication, you can set your user and token in the `gradle.properties` file.
|
To authenticate with Gradle for services that require authentication, you can set your users and tokens in the `gradle.properties` file.
|
||||||
|
|
||||||
Here's how you can do it:
|
Here's how you can do it:
|
||||||
|
|
||||||
@@ -29,5 +33,14 @@ Here's how you can do it:
|
|||||||
```properties
|
```properties
|
||||||
repository.user=your_user
|
repository.user=your_user
|
||||||
repository.token=your_token_value
|
repository.token=your_token_value
|
||||||
|
|
||||||
|
influxdb.token=your_token_value
|
||||||
```
|
```
|
||||||
or use environment variables `REPOSITORY_USER` and `REPOSITORY_TOKEN`
|
or use environment variables `REPOSITORY_USER`, `REPOSITORY_TOKEN`, and `INFLUXDB_TOKEN`
|
||||||
|
|
||||||
|
### InfluxDB configuration
|
||||||
|
|
||||||
|
Create Bucket and Organization in InfluxDB (Local Development)
|
||||||
|
|
||||||
|
Log in to InfluxDB (e.g., via the InfluxDB UI at http://localhost:8086).
|
||||||
|
Click Create Organization, in the field `Organization Name` enter `hlaeja_ltd`, and in field `Bucket Name` enter `device-data`.
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
|
import com.bmuschko.gradle.docker.tasks.container.DockerCreateContainer
|
||||||
|
import java.lang.System.getenv
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
|
alias(hlaeja.plugins.com.bmuschko.docker)
|
||||||
alias(hlaeja.plugins.kotlin.jvm)
|
alias(hlaeja.plugins.kotlin.jvm)
|
||||||
alias(hlaeja.plugins.kotlin.spring)
|
alias(hlaeja.plugins.kotlin.spring)
|
||||||
alias(hlaeja.plugins.ltd.hlaeja.plugin.service)
|
alias(hlaeja.plugins.ltd.hlaeja.plugin.service)
|
||||||
@@ -7,6 +11,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation(hlaeja.com.influxdb.client.kotlin)
|
||||||
implementation(hlaeja.kotlin.reflect)
|
implementation(hlaeja.kotlin.reflect)
|
||||||
implementation(hlaeja.kotlinx.coroutines)
|
implementation(hlaeja.kotlinx.coroutines)
|
||||||
implementation(hlaeja.org.springframework.springboot.actuator.starter)
|
implementation(hlaeja.org.springframework.springboot.actuator.starter)
|
||||||
@@ -22,3 +27,22 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "ltd.hlaeja"
|
group = "ltd.hlaeja"
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
}
|
||||||
|
|
||||||
|
fun influxDbToken(): String = if (extra.has("influxdb.token")) {
|
||||||
|
extra["influxdb.token"] as String
|
||||||
|
} else {
|
||||||
|
getenv("INFLUXDB_TOKEN") ?: "missing_token"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
named("containerCreate", DockerCreateContainer::class) {
|
||||||
|
withEnvVar("INFLUXDB_TOKEN", influxDbToken())
|
||||||
|
}
|
||||||
|
withType<ProcessResources> {
|
||||||
|
filesMatching("**/application.yml") { filter { it.replace("%INFLUXDB_TOKEN%", influxDbToken()) } }
|
||||||
|
onlyIf { file("src/main/resources/application.yml").exists() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package ltd.hlaeja.configuration
|
||||||
|
|
||||||
|
import com.influxdb.client.InfluxDBClient
|
||||||
|
import com.influxdb.client.InfluxDBClientFactory
|
||||||
|
import ltd.hlaeja.properties.InfluxDbProperties
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||||
|
import org.springframework.context.annotation.Bean
|
||||||
|
import org.springframework.context.annotation.Configuration
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableConfigurationProperties(InfluxDbProperties::class)
|
||||||
|
class InfluxDbConfiguration(
|
||||||
|
private val properties: InfluxDbProperties,
|
||||||
|
) {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
fun influxDBClient(): InfluxDBClient = InfluxDBClientFactory.create(
|
||||||
|
properties.url,
|
||||||
|
properties.token.toCharArray(),
|
||||||
|
properties.org,
|
||||||
|
properties.bucket,
|
||||||
|
)
|
||||||
|
}
|
||||||
11
src/main/kotlin/ltd/hlaeja/properties/InfluxDbProperties.kt
Normal file
11
src/main/kotlin/ltd/hlaeja/properties/InfluxDbProperties.kt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package ltd.hlaeja.properties
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||||
|
|
||||||
|
@ConfigurationProperties(prefix = "influxdb")
|
||||||
|
data class InfluxDbProperties(
|
||||||
|
val url: String,
|
||||||
|
val token: String,
|
||||||
|
val org: String,
|
||||||
|
val bucket: String,
|
||||||
|
)
|
||||||
@@ -10,6 +10,10 @@ spring:
|
|||||||
name: "%APP_BUILD_OS_NAME%"
|
name: "%APP_BUILD_OS_NAME%"
|
||||||
version: "%APP_BUILD_OS_VERSION%"
|
version: "%APP_BUILD_OS_VERSION%"
|
||||||
|
|
||||||
|
influxdb:
|
||||||
|
bucket: device-data
|
||||||
|
org: hlaeja_ltd
|
||||||
|
|
||||||
---
|
---
|
||||||
###############################
|
###############################
|
||||||
### Development environment ###
|
### Development environment ###
|
||||||
@@ -19,6 +23,10 @@ spring:
|
|||||||
activate:
|
activate:
|
||||||
on-profile: development
|
on-profile: development
|
||||||
|
|
||||||
|
influxdb:
|
||||||
|
token: %INFLUXDB_TOKEN%
|
||||||
|
url: http://localhost:8086
|
||||||
|
|
||||||
---
|
---
|
||||||
##########################
|
##########################
|
||||||
### Docker environment ###
|
### Docker environment ###
|
||||||
@@ -28,6 +36,9 @@ spring:
|
|||||||
activate:
|
activate:
|
||||||
on-profile: docker
|
on-profile: docker
|
||||||
|
|
||||||
|
influxdb:
|
||||||
|
url: http://InfluxDB:8086
|
||||||
|
|
||||||
---
|
---
|
||||||
##############################
|
##############################
|
||||||
### Production environment ###
|
### Production environment ###
|
||||||
|
|||||||
Reference in New Issue
Block a user