使用 sbt-native-packager 通过 JavaServerAppPackaging 检测 prometheus 导出器

Posted

技术标签:

【中文标题】使用 sbt-native-packager 通过 JavaServerAppPackaging 检测 prometheus 导出器【英文标题】:Using sbt-native-packager to instrument prometheus exporter via JavaServerAppPackaging 【发布时间】:2020-04-05 23:19:47 【问题描述】:

我正在尝试使用sbt-native-packager 来检测带有prometheus exporter 的Java 应用程序:

这就是我所拥有的:

plugin.sbt

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.5.1")

build.sbt

import com.typesafe.sbt.packager.docker.DockerChmodType
dockerChmodType := DockerChmodType.UserGroupWriteExecute
enablePlugins(JavaServerAppPackaging, AshScriptPlugin, DockerPlugin)
settings(moduleName := "my-test")
settings(mainClass in Compile := Some("org.name.demo.stream.MyTestClass"))
dockerBaseImage := "openjdk:8-jre-alpine"
daemonUser in Docker    := "test"

根据 prometheus 导出器文档,我想将导出器设置为 java 代理:

java -javaagent:./jmx_prometheus_javaagent-0.12.0.jar=8080:config.yaml -jar my-test_2.12-0.1.jar

我可以通过sbt-native-packager 进行此检测吗?感谢您的投入。

【问题讨论】:

您好。这里有一个自定义部分:sbt-native-packager.readthedocs.io/en/v1.5.2/archetypes/…这有帮助吗? 我会试试这个并更新..欣赏它.. 【参考方案1】:

使用https://github.com/sbt/sbt-javaagent 在 plugins.sbt

addSbtPlugin("com.lightbend.sbt" % "sbt-javaagent" % "0.1.6")

然后在 build.sbt

val MyAppSettings = Seq(
  name := "My",
  dockerBaseImage := "adoptopenjdk:11-jre-hotspot",
  mainClass := Some("com.MyClass"),
  packageName in Docker := "mycontainer",
  libraryDependencies ++= myDependencies,
  javaAgents += JavaAgent("io.prometheus.jmx" % "jmx_prometheus_javaagent" % "0.16.1", arguments = "33002:/opt/docker/jmx-exporter.yaml"),
  mappings in Universal ++= Seq(
    file("jmx-exporter.yaml") -> "jmx-exporter.yaml"
  )
)

lazy val myProject = (project in file("my-project"))
  .settings(MyAppSettings)
  .enablePlugins(JavaAppPackaging, JavaAgent)

【讨论】:

以上是关于使用 sbt-native-packager 通过 JavaServerAppPackaging 检测 prometheus 导出器的主要内容,如果未能解决你的问题,请参考以下文章

我可以通过挂载目录向 sbt-native-packager 构建的本地 Docker 容器提供 AWS 凭证吗

如何使用 sbt-native-packager 创建基本项目设置

如何从 sbt-native-packager 发布到 Google Container Engine?

在 sbt-native-packager 的通用包中更改名称

在 sbt-native-packager 的 Debian 软件包中更改名称

如何为 sbt-native-package 指定 RPM_BUILD_ROOT