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

Values can be true or false.

Setting this property to true will disable the collection of analytics data on that specific project, regardless of any other configuration.

boolean

false

quarkus.analytics.uri.base

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

String

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

quarkus.analytics.timeout

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

int

3000