簡體   English   中英

將 prometheus jmx 代理 jar 添加到 JIB 構建

[英]Adding prometheus jmx agent jar to JIB build

我需要將“ jmx_prometheus_javaagent ”jar 添加到 JIB 構建中,但在部署應用程序時出現以下錯誤:

Error opening zip file or JAR manifest missing : /srv/jmx_prometheus_javaagent-0.16.1.jar
Error occurred during initialization of VM
agent library failed to init: instrument

我在所需的目錄中添加了 jar 和一個配置文件,這些是我在build.gradle.kts 中所做的相關更改:

val jibExtraDir = file("$buildDir/jib-extra")
val jibAppRoot = "/srv"

val copyJmxPrometheusJavaAgent by tasks.registering(Copy::class) {
    val jarName = "jmx_prometheus_javaagent-0.16.1.jar"
    val configName = "jmx_prometheus_config.yaml"
    from("${project.projectDir.absolutePath}/resources/jmx-prometheus")
    into("$jibExtraDir/$jibAppRoot")
    doLast {
        // Required for reproducible builds.
        file("$jibExtraDir/$jibAppRoot/$jarName").setLastModified(0)
        file("$jibExtraDir/$jibAppRoot/$configName").setLastModified(0)
    }
}

subProjects {
    plugins.withType<JibPlugin>().configureEach {
        container {
            jvmFlags = listOf(
                           "-javaagent:$jibAppRoot/jmx_prometheus_javaagent-0.16.1.jar=8099:$jibAppRoot/jmx_prometheus_config.yaml"
                       )
        }
        tasks.withType<JibTask> {
            dependsOn(":copyJmxPrometheusJavaAgent")
        }
}

這是我的jmx_prometheus_config.yaml

---
lowercaseOutputName: true
whitelistObjectNames: [
    "java.lang:type=Memory",
    "java.lang:type=GarbageCollector,*"
]

該錯誤消息指出缺少 JAR 清單。 但是由於我在 JIB 中添加的目錄結構看起來不錯,我不確定我在這里做錯了什么。

您正在將代理文件從resources/jmx-prometheus/*復制到<project root>/build/jib-extra/srv ,但這只是<project root>/build/jib-extra/srv Jib 不會將這些文件放入構建的映像中。

由於默認的 Jib“額外目錄”是src/main/jib ,從技術上講,您可以簡單地將文件復制到src/main/jib/... 但是,我假設您不想將文件簽入源目錄,因此您可能希望像這樣配置 Jib 額外目錄:

        container {
            jvmFlags = ...
        }
        extraDirectories {
            paths {
                path {
                    setFrom("$jibExtraDir")
                }
            }
        }

或者

extraDirectories.paths = "$jibExtraDir"

有關extraDirectories配置的更多信息,請參閱此文檔

此外,這里還有一個Jib 示例,它動態下載和復制 Java 代理。


提示: dive是一個非常方便的工具,用於檢查構建鏡像的內容。 使用它來驗證文件是否正確復制到圖像中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM