编辑此页面

构建分析

Quarkus 团队仅通过 Maven 下载量了解 Quarkus 的显著增长和报告问题/疑虑的用户数量。 但是,我们仍然需要更深入地了解我们的用户使用的平台、操作系统、Java 组合和构建工具。 构建分析工具旨在为我们提供此信息。

工作原理

收集仅在构建时发生,而不是在运行时。 收集发生在 Quarkus 构建工具(Maven、Gradle)的使用期间。 您构建的应用程序不包含任何数据收集代码。

收集的所有数据都是匿名的。 无法将此数据链接回个人或组织。 目的是了解一般的模式和趋势; 因此,只需要匿名数据。

默认情况下禁用收集 首次使用开发模式时,系统会询问您是否要选择加入数据收集。 控制台将等待几秒钟以获取您的输入。

这是正在收集的数据

  • 匿名应用程序名称。 Group Id + Artifact Id 的 SHA-256 哈希值。

  • 匿名应用程序版本。 Artifact Id + Version 的 SHA-256 哈希值。

  • 匿名用户 ID。 在第一次构建期间,这是在本地随机生成的,随后会被重用。

  • Quarkus 版本

  • Java 版本

  • GraalVM 版本

  • 操作系统详细信息:操作系统名称、操作系统版本和体系结构

  • 构建系统详细信息,例如 Maven、Gradle 等。

  • 是否检测到 CI 系统

  • 国家/地区和时区

  • 已启用的扩展。 仅收集 groupIdsio.quarkusio.quarkiverse 开头或包含在 quarkus 平台中的扩展。

这是一个发送的数据有效负载示例

分析有效负载示例
{
  "context": {
    "app": {
      "name": "ZzOlt3q0VgNK0oyUd6NDAhPqJjTSxNOAnqHb5dHfS7M=",
      "version": "FUDdh16tTKtuJkcoY2Wp57IKKwxZ/Hx42tTvi3Izpmc="
    },
    "build": {
      "gradle_version": "N/A",
      "maven_version": "3.8.7"
    },
    "ci": {
      "name": "unknown"
    },
    "graalvm": {
      "java_version": "N/A",
      "vendor": "N/A",
      "version": "N/A"
    },
    "ip": "0.0.0.0",
    "java": {
      "vendor": "Eclipse Adoptium",
      "version": "17.0.4.1"
    },
    "kubernetes": {
      "detected": "false"
    },
    "library": {
      "name": "unknown",
      "version": "unknown"
    },
    "location": {
      "country": "PT"
    },
    "os": {
      "name": "Mac OS X",
      "os_arch": "aarch64",
      "version": "13.3.1"
    },
    "quarkus": {
      "version": "999-SNAPSHOT"
    },
    "timezone": "Europe/Lisbon"
  },
  "event": "BUILD",
  "integrations": {},
  "messageId": "api-2PCI9LWQM8oRyHIS6fCQMIQ0dlR",
  "originalTimestamp": "2023-05-01T15:21:22.266033Z",
  "properties": {
    "app_extensions": [
      {
        "artifact_id": "quarkus-resteasy-jackson",
        "group_id": "io.quarkus",
        "version": "999-SNAPSHOT"
      },
      {
        "artifact_id": "quarkus-smallrye-openapi",
        "group_id": "io.quarkus",
        "version": "999-SNAPSHOT"
      },
      {
        "artifact_id": "quarkus-hibernate-orm",
        "group_id": "io.quarkus",
        "version": "999-SNAPSHOT"
      },
      {
        "artifact_id": "quarkus-opentelemetry",
        "group_id": "io.quarkus",
        "version": "999-SNAPSHOT"
      },
      {
        "artifact_id": "quarkus-jdbc-postgresql",
        "group_id": "io.quarkus",
        "version": "999-SNAPSHOT"
      },
      {
        "artifact_id": "quarkus-arc",
        "group_id": "io.quarkus",
        "version": "999-SNAPSHOT"
      }
    ]
  },
  "receivedAt": "2023-05-01T15:21:23.184Z",
  "timestamp": "2023-05-01T15:21:22.266Z",
  "type": "track",
  "userId": "872332b4-4b21-42ee-854b-d86c8629e78b"
}

配置文件在哪里?

分析配置存储在用户主目录中的 .redhat 文件夹中

anonymousId 是本地生成的匿名用户 ID。

io.quarkus.analytics.localconfig 保存用户是否已同意发送分析数据。

io.quarkus.analytics.remoteconfig 是远程配置的缓存,允许全局禁用分析。

给我看看代码!

大部分代码在 analytics-common 模块中实现。 通过从 Maven 和 Gradle 插件调用 io.quarkus.analytics.AnalyticsService.sendAnalytics(…​) 发送数据。

上传的事件存储在项目的 /target 文件夹下,名称为 build-analytics-event.json

如何禁用分析?

默认情况下,构建时分析未激活。

如果您已选择加入并且想要禁用构建时分析,则可以通过两种方式进行操作

  • 全局禁用,方法是编辑用户主目录的 '.redhat' 文件夹中的 io.quarkus.analytics.localconfig 文件。 如下所示更新文件

{"disabled":true}
  • 按项目禁用,方法是在构建项目时使用系统属性 quarkus.analytics.disabled=true

使用 maven 的示例
mvn clean install -Dquarkus.analytics.disabled=true

配置

配置属性 类型 默认

quarkus.analytics.disabled

值可以是 truefalse

将此属性设置为 true 将禁用该特定项目上的分析数据收集,而不管任何其他配置。

布尔值

false

quarkus.analytics.uri.base

分析服务的基本 URL。 所有数据都发送到此处。

字符串

"https://api.segment.io/"

quarkus.analytics.timeout

提交分析服务的 HTTP 请求的超时毫秒值。

整数

3000