The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

ビルド分析

Quarkusチームは、Quarkusの著しい成長を示すMavenのダウンロード数と 、問題や懸念を報告するユーザー数について、限られた知識しか持っていません。それでも、ユーザーが使用しているプラットフォーム、オペレーティングシステム、Javaの組み合わせ、ビルドツールに関するより多くの情報が必要です。ビルド分析ツールは、この情報を提供することを目的としています。

動作原理

収集はビルド時にのみ行われます 、実行時には行われません。収集は、Quarkusのビルドツール(Maven、Gradle)の使用中に行われます。ビルドされたアプリケーションには、データ収集コードは含まれません。

収集されたデータはすべて匿名です。 このデータを個人や組織に結びつける方法はありません。一般的なパターンや傾向を知ることが目的であるため、匿名のデータのみが必要です。

収集はデフォルトで無効になっています。 最初にdevモードを使用するときに、データ収集に参加するかどうか尋ねられます。コンソールはあなたの入力を数秒間待ちます。

これが収集されたデータです。

  • 匿名アプリケーション名。Group Id + Artifact Id の SHA-256 ハッシュ。

  • 匿名アプリケーションのバージョン。Artifact Id + VersionのSHA-256ハッシュ。

  • 匿名ユーザーID。1回目のビルドの際、これはローカルでランダムに生成され、その後再利用されます。

  • Quarkusバージョン

  • Javaバージョン

  • GraalVMバージョン

  • オペレーティングシステムの詳細: OS名、OSバージョン、アーキテクチャ

  • ビルドシステムの詳細、Maven、Gradleなど。

  • CIシステムが検出されるか

  • 国とタイムゾーン

  • 拡張機能が有効かどうか。 groupIdsio.quarkus か、 io.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 という名前で保存されます。

分析を無効にするには?

ビルド時解析はデフォルトではアクティブになっていません。

オプトイン済みで、ビルド時解析を無効にしたい場合は、2つの方法があります:

  • グローバルでは、ユーザーのホームディレクトリの「.redhat」フォルダにある io.quarkus.analytics.localconfig ファイルを編集します。以下のようにファイルを更新してください:

{"disabled":true}
  • プロジェクトごとに、プロジェクト構築時にシステムプロパティ quarkus.analytics.disabled=true を使用

mavenを使用した例
mvn clean install -Dquarkus.analytics.disabled=true

設定

設定プロパティ タイプ デフォルト

quarkus.analytics.disabled

値は true もしくは false です。

このプロパティを true に設定すると、他の設定に関係なく、そのプロジェクトでの分析データの収集が無効になります。

boolean

false

quarkus.analytics.uri.base

分析サービスのベースURL。これが全てのデータの送信先です。

String

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

quarkus.analytics.timeout

分析サービスに送信するHTTPリクエストのタイムアウトの値(ミリ秒)。

int

3000