> For the complete documentation index, see [llms.txt](https://docs.digitalhumans.jp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.digitalhumans.jp/dev/miniprem/telemetry.md).

# テレメトリーシステム

{% hint style="info" %}
本ページの内容はデジタルヒューマン株式会社の正式サポート対象外です。参考情報としてご利用ください。
{% endhint %}

{% hint style="info" %}
**プライバシーファーストのテレメトリー：** ミニプレム（MiniPrem）は製品品質の向上を目的として、匿名のデプロイメントメトリクスを収集します。個人情報（PII）、会話データ、IP アドレスは一切収集しません。`MINIPREM_TELEMETRY_DISABLED=1` を設定することでオプトアウトできます。
{% endhint %}

## 概要

MiniPrem には、デプロイメントの健全性を把握し、製品品質を向上させ、より良いサポートを提供するための**匿名テレメトリー**機能が組み込まれています。すべてのテレメトリーは以下の原則に従っています。

* **匿名性**：個人を特定可能な情報は一切収集しません
* **透明性**：本ドキュメントで収集されるデータを正確に説明しています
* **プライバシーファースト**：プライバシー保護を最優先に設計されています

## 収集するデータ

### インストールイベント（1 回のみ）

MiniPrem が初めてインストールされた際に 1 度だけ送信されます。

* **インストール ID**：ローカルで生成される匿名 UUID（特定のユーザーに紐づきません）
* **マシン ID**：プライマリ GPU UUID の SHA-256 ハッシュ（ハードウェアの重複排除用、逆変換不可）
* **バージョン**：MiniPrem のバージョン番号（例：「2.1.0」）
* **プラットフォーム**：デプロイの種類（「docker」、「kubernetes」、「eks」、「aks」、「gke」）
* **OS**：オペレーティングシステム名（例：「linux」、「darwin」）
* **アーキテクチャ**：CPU アーキテクチャ（例：「x86\_64」、「aarch64」）
* **Python バージョン**：ランタイムバージョン（例：「3.11.7」）
* **インスタンス情報**：Pod 名（Kubernetes）またはコンテナ ID（Docker）、ノード名（Kubernetes のみ）

### ハートビートイベント（5 分ごと）

インストールが稼働中であることを示すため、定期的に送信されます。

* **インストール ID**：インストールイベントと同じ匿名 UUID
* **マシン ID**：インストールイベントと同じ GPU UUID ハッシュ
* **バージョン**：MiniPrem のバージョン番号
* **プラットフォーム**：デプロイの種類
* **ステータス**：ヘルスステータス（「online」）
* **インスタンス情報**：Pod 名、コンテナ ID、ノード名（GPU ごとのインスタンス追跡用）
* **Renny Pod 数**：稼働中のレンダラー（開発コード：Renny）インスタンス数（名前や詳細情報は含みません）

### テレメトリーペイロードの例

```json
{
  "installation_id": "a3f5b8c9-1234-5678-9abc-def012345678",
  "machine_id": "8f3a9b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0",
  "instance_name": "renny-gpu-0-abc123",
  "instance_type": "kubernetes-pod",
  "node_name": "ip-10-0-1-50.ec2.internal",
  "event_type": "heartbeat",
  "timestamp": "2025-10-22T14:30:00Z",
  "version": "2.1.0",
  "platform": "eks",
  "os": "linux",
  "platform_arch": "x86_64",
  "python_version": "3.11.7",
  "status": "online",
  "renny_pods_running": 4
}
```

**注意**：`machine_id` は SHA-256 ハッシュであり、元の GPU UUID や個々のユーザーを特定することはできません。

### GPU ハードウェア識別子を収集する理由

GPU UUID のハッシュ（machine\_id）は、以下のケースで重複カウントを防ぐ目的に**限定して**使用されます。

* ユーザーが同じハードウェア上で MiniPrem を再インストールした場合
* Kubernetes Pod が同じ GPU ノード上で再作成・再デプロイされた場合
* タイムスライシングにより複数の Pod が同じ GPU を共有している場合

**プライバシー保護**：

* 元の GPU UUID は当社サーバーへ**一切送信されません**
* SHA-256 の一方向ハッシュにより、元の UUID への**逆変換は不可能**です
* ハッシュは 64 文字（256 ビット）の長さがあり、ブルートフォース攻撃は事実上困難です
* nvidia-smi が失敗した場合は installation\_id にフォールバックします（GPU 追跡は行われません）

**ユースケース例**：1 つの GPU ノード上に 4 つの Kubernetes Pod をデプロイした場合、以下のようにカウントされます。

* 1 台のユニークマシン（GPU ノード）
* 4 つの稼働中の Renny インスタンス（Pod）

GPU 識別子がなければ、これを誤って 4 台の別々のマシンとしてカウントしてしまいます。

## 収集しないデータ

当社はお客様のプライバシー保護に取り組んでおり、以下の情報は**一切収集しません**。

* ❌ IP アドレス、ホスト名、ネットワーク識別子
* ❌ API キー、認証情報、認証トークン
* ❌ **会話データやチャット履歴**（デジタルヒューマンとのやり取りは追跡しません）
* ❌ お客様データ、セッションコンテンツ、ユーザー入力
* ❌ ユーザーのメールアドレス、氏名、組織情報
* ❌ 地理的位置情報やデプロイメントリージョンの詳細
* ❌ GPU UUID の生の値（収集するのは一方向 SHA-256 ハッシュのみ）
* ❌ インスタンス追跡の範囲を超えるコンテナ／Pod 名
* ❌ あらゆる個人を特定可能な情報（PII）

## 収集データの利用目的

テレメトリーデータは以下の目的に限定して使用されます。

1. **製品改善**：デプロイメントパターンを把握し、機能の優先順位付けに活用します
2. **信頼性モニタリング**：広範囲な障害や問題を検知します
3. **サポート**：お客様からの依頼時に問題の診断を支援します
4. **利用統計**：稼働中のインストール総数などの集計メトリクスを把握します

**以下は行いません**：

* テレメトリーデータを第三者へ販売・共有すること
* マーケティングや広告目的での利用
* 個別ユーザーやインストールの追跡
* 明示的な同意なくテレメトリーデータをお客様のアカウントに紐づけること

## データ保持期間

* **ハートビートデータ**：30 日間保持後、自動的に削除されます
* **インストールイベント**：集計利用統計のため無期限に保持されます
* **IP アドレス**：収集・記録しません

## データセキュリティ

* **HTTPS 限定**：すべてのテレメトリーデータは暗号化された HTTPS 接続で送信されます
* **タイムアウト保護**：処理のブロックを防ぐため、リクエストは 5 秒でタイムアウトします
* **サイレントフェイル**：ネットワークエラーはローカルに記録されますが、運用を中断することはありません
* **読み取り専用アクセス**：テレメトリーサービスがお客様のインストールを変更することはありません

## データのエクスポートと削除

プライバシー規制（GDPR、CCPA）に基づき、お客様には以下の権利が認められています。

* **データエクスポートのリクエスト**：インストール ID に紐づくテレメトリーデータのコピーを受け取る権利
* **データ削除のリクエスト**：インストール ID に紐づくすべてのテレメトリーデータを永久に削除する権利

これらの権利を行使するには、以下の手順をご利用ください。

1. メール送付先：<privacy@uneeq.io>
2. 記載内容：インストール ID（`/tmp/miniprem_installation_id` に保存されています）
3. リクエスト内容：エクスポートまたは削除のいずれかを明記

30 日以内に対応いたします。

## 技術実装

### アーキテクチャ

* **ローカル生成**：インストール ID は `uuidgen` を用いてローカルで生成されます
* **コンテナマウント**：ID ファイルはモニターコンテナへ読み取り専用でマウントされます
* **バックグラウンドサービス**：テレメトリーはバックグラウンドの asyncio タスクとして実行されます
* **ノンブロッキング**：すべてのネットワーク操作はタイムアウト付きの async/await で実装されています
* **グレースフルデグラデーション**：失敗時はローカルに記録され、ユーザーに表面化することはありません

### コードの所在

* **バックエンドサービス**：`miniprem-monitor/backend/app/services/telemetry.py`
* **インストールスクリプト**：`docker/scripts/install_miniprem.sh`
* **Docker Compose**：`docker/docker-compose.full.yml` および `docker/docker-compose.yml`
* **統合**：`miniprem-monitor/backend/app/main.py`

### テスト

すべてのテレメトリーコードには pytest による包括的なテストが含まれています。

```bash
cd miniprem-monitor/backend
pytest tests/test_telemetry.py -v
```

## 関連ドキュメント

* **識別子チートシート** - Docker および Kubernetes デプロイメントにおける `machine_id`、`installation_id` などの識別子の仕組みを視覚的に解説したガイド

## 本ポリシーの変更について

データ収集慣行の変更を反映するため、本プライバシーポリシーが更新される場合があります。重要な変更があった場合は、以下の対応を行います。

1. **通知**：登録ユーザーへメールで通知します
2. **同意**：次回のインストール／アップデート時に再度同意を求めます

## お問い合わせ

テレメトリーやプライバシーに関するお問い合わせ先：

* **メール**：<privacy@uneeq.io>

***

**最終更新日**：2025 年 10 月 22 日 **発効日**：2025 年 10 月 22 日 **バージョン**：1.0
