Skip to content

Commit

Permalink
Merge ad7762b into b4d784b
Browse files Browse the repository at this point in the history
  • Loading branch information
pambrose committed Feb 2, 2021
2 parents b4d784b + ad7762b commit 242e7dd
Show file tree
Hide file tree
Showing 22 changed files with 85 additions and 61 deletions.
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION=1.8.7
VERSION=1.8.8

default: compile

Expand Down Expand Up @@ -63,4 +63,4 @@ refresh:
./gradlew --refresh-dependencies

upgrade-wrapper:
./gradlew wrapper --gradle-version=6.7.1 --distribution-type=bin
./gradlew wrapper --gradle-version=6.8.1 --distribution-type=bin
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ scrape_configs:

The docker images are available via:
```bash
docker pull pambrose/prometheus-proxy:1.8.7
docker pull pambrose/prometheus-agent:1.8.7
docker pull pambrose/prometheus-proxy:1.8.8
docker pull pambrose/prometheus-agent:1.8.8
```

Start a proxy container with:
Expand All @@ -110,15 +110,15 @@ Start a proxy container with:
docker run --rm -p 8082:8082 -p 8092:8092 -p 50051:50051 -p 8080:8080 \
--env ADMIN_ENABLED=true \
--env METRICS_ENABLED=true \
pambrose/prometheus-proxy:1.8.7
pambrose/prometheus-proxy:1.8.8
```

Start an agent container with:

```bash
docker run --rm -p 8083:8083 -p 8093:8093 \
--env AGENT_CONFIG='https://raw.githubusercontent.com/pambrose/prometheus-proxy/master/examples/simple.conf' \
pambrose/prometheus-agent:1.8.7
pambrose/prometheus-agent:1.8.8
```

Using the config file [simple.conf](https://raw.githubusercontent.com/pambrose/prometheus-proxy/master/examples/simple.conf),
Expand All @@ -134,7 +134,7 @@ is in your current directory, run an agent container with:
docker run --rm -p 8083:8083 -p 8093:8093 \
--mount type=bind,source="$(pwd)"/prom-agent.conf,target=/app/prom-agent.conf \
--env AGENT_CONFIG=prom-agent.conf \
pambrose/prometheus-agent:1.8.7
pambrose/prometheus-agent:1.8.8
```

**Note:** The `WORKDIR` of the proxy and agent images is `/app`, so make sure
Expand Down Expand Up @@ -255,15 +255,15 @@ docker run --rm -p 8082:8082 -p 8092:8092 -p 50440:50440 -p 8080:8080 \
--env PROXY_CONFIG=tls-no-mutual-auth.conf \
--env ADMIN_ENABLED=true \
--env METRICS_ENABLED=true \
pambrose/prometheus-proxy:1.8.7
pambrose/prometheus-proxy:1.8.8

docker run --rm -p 8083:8083 -p 8093:8093 \
--mount type=bind,source="$(pwd)"/testing/certs,target=/app/testing/certs \
--mount type=bind,source="$(pwd)"/examples/tls-no-mutual-auth.conf,target=/app/tls-no-mutual-auth.conf \
--env AGENT_CONFIG=tls-no-mutual-auth.conf \
--env PROXY_HOSTNAME=mymachine.lan:50440 \
--name docker-agent \
pambrose/prometheus-agent:1.8.7
pambrose/prometheus-agent:1.8.8
```

**Note:** The `WORKDIR` of the proxy and agent images is `/app`, so make sure
Expand Down
2 changes: 1 addition & 1 deletion bin/docker-agent.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
docker run --rm -p 8083:8083 -p 8093:8093 \
--env AGENT_CONFIG='https://raw.githubusercontent.com/pambrose/prometheus-proxy/master/examples/simple.conf' \
--env PROXY_HOSTNAME=mymachine.lan \
pambrose/prometheus-agent:1.8.7
pambrose/prometheus-agent:1.8.8
2 changes: 1 addition & 1 deletion bin/docker-proxy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

docker run --rm -p 8082:8082 -p 8092:8092 -p 50051:50051 -p 8080:8080 \
--env PROXY_CONFIG='https://raw.githubusercontent.com/pambrose/prometheus-proxy/master/examples/simple.conf' \
pambrose/prometheus-proxy:1.8.7
pambrose/prometheus-proxy:1.8.8
11 changes: 9 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
plugins {
id 'idea'
id 'java'
id 'org.jetbrains.kotlin.jvm' version '1.4.10'
id 'org.jetbrains.kotlin.jvm' version '1.4.30-RC'
id 'com.google.protobuf' version '0.8.14'
id "com.github.ben-manes.versions" version '0.36.0'
id 'com.github.johnrengelman.shadow' version '6.1.0'
id 'com.github.gmazzo.buildconfig' version '2.0.2'
id 'jacoco'
id 'com.github.kt3k.coveralls' version '2.10.2'
}

group = 'io.prometheus'
version = '1.8.7'
version = '1.8.8'

sourceCompatibility = 1.8
targetCompatibility = 1.8
Expand Down Expand Up @@ -74,6 +75,12 @@ dependencies {
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version"
}

buildConfig {
buildConfigField('String', 'APP_NAME', "\"${project.name}\"")
buildConfigField('String', 'APP_VERSION', "\"${project.version}\"")
buildConfigField('String', 'APP_RELEASE_DATE', "\"12/12/20\"")
}

/*
sourceSets {
main.java.srcDirs += ['src/main/java']
Expand Down
2 changes: 1 addition & 1 deletion etc/compose/proxy.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
prometheus-proxy:
autoredeploy: true
image: 'pambrose/prometheus-proxy:1.8.7'
image: 'pambrose/prometheus-proxy:1.8.8'
ports:
- '8080:8080'
- '8082:8082'
Expand Down
16 changes: 8 additions & 8 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ org.gradle.caching=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
annotation_version=1.3.2
coroutines_version=1.4.2
dropwizard_version=4.1.16
gengrpc_version=0.2.1
grpc_version=1.34.0
dropwizard_version=4.1.17
gengrpc_version=1.0.0
grpc_version=1.35.0
jcommander_version=1.78
jetty_version=9.4.32.v20200930
junit_version=5.7.0
kluent_version=1.64
ktor_version=1.4.2
kluent_version=1.65
ktor_version=1.5.0
logback_version=1.2.3
logging_version=2.0.3
prometheus_version=0.9.0
logging_version=2.0.4
prometheus_version=0.10.0
protoc_version=3.12.4
slf4j_version=1.7.30
typesafe_version=1.4.1
utils_version=1.5.0
utils_version=9831e3c
zipkin_version=5.12.7
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
3 changes: 2 additions & 1 deletion src/main/kotlin/io/prometheus/Agent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import io.prometheus.common.ConfigWrappers.newAdminConfig
import io.prometheus.common.ConfigWrappers.newMetricsConfig
import io.prometheus.common.ConfigWrappers.newZipkinConfig
import io.prometheus.common.getVersionDesc
import io.prometheus.prometheus_proxy.BuildConfig
import kotlinx.coroutines.*
import mu.KLogging
import java.util.concurrent.CountDownLatch
Expand All @@ -50,7 +51,7 @@ import kotlin.time.TimeSource.Monotonic
import kotlin.time.milliseconds
import kotlin.time.seconds

@Version(version = "1.8.7", date = "12/4/20")
@Version(version = BuildConfig.APP_VERSION, date = BuildConfig.APP_RELEASE_DATE)
class Agent(val options: AgentOptions,
inProcessServerName: String = "",
testMode: Boolean = false,
Expand Down
4 changes: 3 additions & 1 deletion src/main/kotlin/io/prometheus/Proxy.kt
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,15 @@ import io.prometheus.common.ConfigWrappers.newMetricsConfig
import io.prometheus.common.ConfigWrappers.newZipkinConfig
import io.prometheus.common.GrpcObjects.EMPTY_AGENT_ID
import io.prometheus.common.getVersionDesc
import io.prometheus.prometheus_proxy.BuildConfig
import io.prometheus.proxy.*
import kotlinx.coroutines.runBlocking
import mu.KLogging
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import kotlin.time.milliseconds

@Version(version = "1.8.7", date = "12/4/20")
@Version(version = BuildConfig.APP_VERSION, date = BuildConfig.APP_RELEASE_DATE)
class Proxy(val options: ProxyOptions,
proxyHttpPort: Int = options.proxyHttpPort,
inProcessServerName: String = "",
Expand Down Expand Up @@ -158,6 +159,7 @@ class Proxy(val options: ProxyOptions,
agentContextManager.agentContextMap.entries
.filter { it.value.scrapeRequestBacklogSize >= unhealthySize }
.map { "${it.value} ${it.value.scrapeRequestBacklogSize}" }
.toMutableList()
if (vals.isEmpty()) {
HealthCheck.Result.healthy()
}
Expand Down
1 change: 1 addition & 0 deletions src/main/kotlin/io/prometheus/agent/AgentGrpcService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ internal class AgentGrpcService(internal val agent: Agent,
channel =
channel(hostName = hostName,
port = port,
enableRetry = true,
tlsContext = tlsContext,
overrideAuthority = agent.options.overrideAuthority,
inProcessServerName = inProcessServerName) {
Expand Down
5 changes: 4 additions & 1 deletion src/main/kotlin/io/prometheus/agent/AgentHttpService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,10 @@ internal class AgentHttpService(val agent: Agent) {
val timeout = agent.configVals.agent.internal.cioTimeoutSecs.seconds
CIO.create { requestTimeout = timeout.toLongMilliseconds() }
.use { engine ->
HttpClient(engine) { install(HttpTimeout) }
HttpClient(engine) {
expectSuccess = false
install(HttpTimeout)
}
.use { client ->
client.get(url,
{
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/io/prometheus/agent/AgentOptions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class AgentOptions(argv: Array<String>, exitOnMissingConfig: Boolean) :
BaseOptions(Agent::class.java.name, argv, AGENT_CONFIG.name, exitOnMissingConfig) {

constructor(args: List<String>, exitOnMissingConfig: Boolean) :
this(Iterables.toArray<String>(args, String::class.java), exitOnMissingConfig)
this(Iterables.toArray<String>(args.toMutableList(), String::class.java), exitOnMissingConfig)

constructor(configFilename: String, exitOnMissingConfig: Boolean) :
this(listOf("--config", configFilename), exitOnMissingConfig)
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/io/prometheus/proxy/ProxyOptions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import kotlin.time.seconds

class ProxyOptions(argv: Array<String>) : BaseOptions(Proxy::class.java.simpleName, argv, PROXY_CONFIG.name) {

constructor(args: List<String>) : this(Iterables.toArray<String>(args, String::class.java))
constructor(args: List<String>) : this(Iterables.toArray<String>(args.toMutableList(), String::class.java))

@Parameter(names = ["-p", "--port"], description = "Proxy listen port")
var proxyHttpPort = -1
Expand Down
16 changes: 8 additions & 8 deletions src/test/kotlin/io/prometheus/AdminDefaultPathTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class AdminDefaultPathTest {
fun proxyPingPathTest() {
proxyConfigVals.admin
.also { admin ->
blockingGet("${admin.port}/${admin.pingPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.pingPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.OK
response.readText() shouldStartWith "pong"
}
Expand All @@ -51,7 +51,7 @@ class AdminDefaultPathTest {
fun agentPingPathTest() {
agentConfigVals.admin
.also { admin ->
blockingGet("${admin.port}/${admin.pingPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.pingPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.OK
response.readText() shouldStartWith "pong"
}
Expand All @@ -62,7 +62,7 @@ class AdminDefaultPathTest {
fun proxyVersionPathTest() {
agentConfigVals.admin
.also { admin ->
blockingGet("${admin.port}/${admin.versionPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.versionPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.OK
response.readText() shouldContain "Version"
}
Expand All @@ -73,7 +73,7 @@ class AdminDefaultPathTest {
fun agentVersionPathTest() {
agentConfigVals.admin
.also { admin ->
blockingGet("${admin.port}/${admin.versionPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.versionPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.OK
response.readText() shouldContain "Version"
}
Expand All @@ -84,7 +84,7 @@ class AdminDefaultPathTest {
fun proxyHealthCheckPathTest() {
proxyConfigVals.admin
.also { admin ->
blockingGet("${admin.port}/${admin.healthCheckPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.healthCheckPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.OK
response.readText().length shouldBeGreaterThan 10
}
Expand All @@ -95,7 +95,7 @@ class AdminDefaultPathTest {
fun agentHealthCheckPathTest() {
agentConfigVals.admin
.also { admin ->
blockingGet("${admin.port}/${admin.healthCheckPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.healthCheckPath}".withPrefix()) { response ->
response.readText().length shouldBeGreaterThan 10
}
}
Expand All @@ -105,15 +105,15 @@ class AdminDefaultPathTest {
fun proxyThreadDumpPathTest() {
proxyConfigVals.admin
.also { admin ->
blockingGet("${admin.port}/${admin.threadDumpPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.threadDumpPath}".withPrefix()) { response ->
response.readText().length shouldBeGreaterThan 10
}
}
}

@Test
fun agentThreadDumpPathTest() {
blockingGet("${agentConfigVals.admin.port}/${agentConfigVals.admin.threadDumpPath}".addPrefix()) { response ->
blockingGet("${agentConfigVals.admin.port}/${agentConfigVals.admin.threadDumpPath}".withPrefix()) { response ->
response.readText().length shouldBeGreaterThan 10
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/test/kotlin/io/prometheus/AdminEmptyPathTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class AdminEmptyPathTest {
admin.port shouldBeEqualTo 8098
admin.pingPath shouldBeEqualTo ""

blockingGet("${admin.port}/${admin.pingPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.pingPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.NotFound
}
}
Expand All @@ -52,7 +52,7 @@ class AdminEmptyPathTest {
admin.port shouldBeEqualTo 8098
admin.versionPath shouldBeEqualTo ""

blockingGet("${admin.port}/${admin.versionPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.versionPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.NotFound
}
}
Expand All @@ -64,7 +64,7 @@ class AdminEmptyPathTest {
.also { admin ->
admin.healthCheckPath shouldBeEqualTo ""

blockingGet("${admin.port}/${admin.healthCheckPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.healthCheckPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.NotFound
}
}
Expand All @@ -76,7 +76,7 @@ class AdminEmptyPathTest {
.also { admin ->
admin.threadDumpPath shouldBeEqualTo ""

blockingGet("${admin.port}/${admin.threadDumpPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.threadDumpPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.NotFound
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/test/kotlin/io/prometheus/AdminNonDefaultPathTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class AdminNonDefaultPathTest {
admin.port shouldBeEqualTo 8099
admin.pingPath shouldBeEqualTo "pingPath2"

blockingGet("${admin.port}/${admin.pingPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.pingPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.OK
response.readText() shouldStartWith "pong"
}
Expand All @@ -57,7 +57,7 @@ class AdminNonDefaultPathTest {
admin.port shouldBeEqualTo 8099
admin.versionPath shouldBeEqualTo "versionPath2"

blockingGet("${admin.port}/${admin.versionPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.versionPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.OK
response.readText() shouldContain "Version"
}
Expand All @@ -70,7 +70,7 @@ class AdminNonDefaultPathTest {
.also { admin ->
admin.healthCheckPath shouldBeEqualTo "healthCheckPath2"

blockingGet("${admin.port}/${admin.healthCheckPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.healthCheckPath}".withPrefix()) { response ->
response.status shouldBeEqualTo HttpStatusCode.OK
response.readText().length shouldBeGreaterThan 10
}
Expand All @@ -83,7 +83,7 @@ class AdminNonDefaultPathTest {
.also { admin ->
admin.threadDumpPath shouldBeEqualTo "threadDumpPath2"

blockingGet("${admin.port}/${admin.threadDumpPath}".addPrefix()) { response ->
blockingGet("${admin.port}/${admin.threadDumpPath}".withPrefix()) { response ->
response.readText().length shouldBeGreaterThan 10
}
}
Expand Down

0 comments on commit 242e7dd

Please sign in to comment.