Build analytics
Quarkus 团队从 Maven 下载次数中获知 Quarkus 有了显著增长,而报告问题/疑虑的用户数量也已经了解。不过,我们需要更深入地了解平台、操作系统、Java 组合以及用户使用的构建工具。构建分析工具旨在为我们提供这些信息。
How it works
*Collection happens only at build-time*是在编译时收集,并非运行时。集合是使用 Quarkus 构建工具(Maven、Gradle)进行的。您的构建应用程序不包含任何数据集合代码。
*All data collected is anonymous*无法将此数据关联回个人或组织。目的是了解一般模式和趋势;因此,只需要匿名数据。
*Collection is disabled by default*在首次使用开发人员模式时,系统会询问您是否希望选择加入数据收集。控制台会等待几秒钟以获取您的输入。
This is the data being collected
-
匿名应用程序名称。GroupId + Artifact Id 的 SHA-256 哈希。
-
匿名应用程序版本。Artifact Id + 版本的 SHA-256 哈希。
-
匿名用户 ID。在第一次构建期间,此 ID 在本地随机生成,随后会被再次使用。
-
Quarkus version
-
Java version
-
GraalVM version
-
操作系统详细信息:操作系统名称、操作系统版本和架构
-
构建系统详细信息,例如 Maven、Gradle 等。
-
如果检测到 CI 系统
-
Country and timezone
-
启用的扩展程序。仅收集以 `groupIds`开头、以 `io.quarkus`开头或包含在 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"
}
Where are the config files?
分析配置存储在用户主目录的 `.redhat`文件夹中:
`anonymousId`是本地生成的匿名用户 ID。
`io.quarkus.analytics.localconfig`持有的内容是用户同意发送分析数据还是不同意。
`io.quarkus.analytics.remoteconfig`是远程配置的缓存,可以全局禁用分析。
Show me the code!
大部分代码是在 `analytics-common`模块中实现的。数据通过 Maven 和 Gradle 插件调用的 `io.quarkus.analytics.AnalyticsService.sendAnalytics(…)`进行发送。
上传的事件存储在项目的 /target`文件夹下,名称为 `build-analytics-event.json
。
How to disable analytics?
Build time analytics is not active by default.
如果您已经选择加入并希望禁用构建时间分析,则可以使用两种方式:
-
全局编辑用户主目录 '.redhat' 文件夹中的 `io.quarkus.analytics.localconfig`文件。按如下方式更新文件:
{"disabled":true}
-
对于每个项目,在构建项目时使用系统属性
quarkus.analytics.disabled=true
。
mvn clean install -Dquarkus.analytics.disabled=true
Configuration
Configuration property | Type | Default |
---|---|---|
[id="build-analytics-quarkus-analytics-disabled"][id="build-analytics-quarkus-analytics-disabled"]` quarkus.analytics.disabled |
boolean |
false |
[id="build-analytics-quarkus-analytics-uri-base"][id="build-analytics-quarkus-analytics-uri-base"]` quarkus.analytics.uri.base`分析服务的基准 URL。这是发送所有数据的位置。 |
String |
"https://api.segment.io/" |
[id="build-analytics-quarkus-analytics-timeout"][id="build-analytics-quarkus-analytics-timeout"]` quarkus.analytics.timeout`发送到分析服务提交 HTTP 请求超时的时间(以毫秒为单位)。 |
int |
3000 |