{"id":24994972,"url":"https://github.com/googlecloudplatform/khi","last_synced_at":"2026-02-21T03:06:09.471Z","repository":{"id":274752780,"uuid":"920350973","full_name":"GoogleCloudPlatform/khi","owner":"GoogleCloudPlatform","description":"A log viewer for Kubernetes troubleshooting","archived":false,"fork":false,"pushed_at":"2026-01-15T10:58:45.000Z","size":38229,"stargazers_count":1996,"open_issues_count":22,"forks_count":78,"subscribers_count":12,"default_branch":"main","last_synced_at":"2026-01-15T15:52:35.588Z","etag":null,"topics":["google-cloud-platform","kubernetes","logging","observability","troubleshooting","visualizer"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GoogleCloudPlatform.png","metadata":{"files":{"readme":"README.ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"docs/code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-22T01:58:02.000Z","updated_at":"2026-01-15T15:21:41.000Z","dependencies_parsed_at":"2025-03-26T09:01:37.259Z","dependency_job_id":"623ec2a8-1545-4ec2-8477-68207a74b003","html_url":"https://github.com/GoogleCloudPlatform/khi","commit_stats":null,"previous_names":["googlecloudplatform/khi"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/GoogleCloudPlatform/khi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fkhi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fkhi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fkhi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fkhi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoogleCloudPlatform","download_url":"https://codeload.github.com/GoogleCloudPlatform/khi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoogleCloudPlatform%2Fkhi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28661001,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["google-cloud-platform","kubernetes","logging","observability","troubleshooting","visualizer"],"created_at":"2025-02-04T15:25:51.016Z","updated_at":"2026-02-04T12:13:19.871Z","avatar_url":"https://github.com/GoogleCloudPlatform.png","language":"Go","readme":"\u003cp style=\"text-align: center;\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./docs/images/logo-dark.svg\"\u003e\n    \u003cimg alt=\"Kubernetes History Inspector\" src=\"./docs/images/logo-light.svg\" width=\"50%\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\nLanguage: [English](./README.md) | 日本語\n\n\u003chr/\u003e\n\n# Kubernetes History Inspector\n\nKubernetes History Inspector (KHI) は、Kubernetes クラスタのログ可視化ツールです。\n大量のログをインタラクティブなタイムラインビューなどで可視化し、Kubernetes クラスタ内の複数のコンポーネントにまたがる複雑な問題のトラブルシューティングを強力にサポートします。\n\nクラスタ内へのエージェント等のインストールの必要はなく、ログを読み込ませるだけで、トラブルシューティングに役立つ以下のログの可視化を提供します。\n\n|タイムラインビュー|クラスタダイアグラム|\n|---|---|\n|![Timeline view](./docs/images/timeline.png)|![Cluster diagram](./docs/images/cluster-diagram.png)|\n|監査ログ等から特定期間の複数リソースに対する変更、ステータス等の遷移をわかりやすくタイムライン、差分として表示。|kube-apiserverの監査ログから復元した特定タイミングのリソースの関係性をわかりやすく可視化。|\n\n## KHIの特徴\n\n### ログの可視化\n\nKHIの主要な強みは、従来のテキストベースのログ分析を超えて、各Kubernetesリソースに関連する多数のアクティビティログをタイムラインベースのグラフとして視覚化できる点です。\n単一のリソースでログを手動でフィルタリングしたり、個々のアクティビティログをテキストデータで時系列に読み進めたりする必要はありません。KHIを使用すると、タイムラインの視覚化から何が起こったのかを一目で把握できます。\n\nまた、ログの視覚化に加えて、KHIでは特定の瞬間のログデータを従来のテキスト形式で確認したり、特定のイベント発生時のYAMLマニフェストの差分を確認したりことも可能です。これにより、事象の原因を特定するプロセスが大幅に簡素化されます。\n\nさらに、KHIはある特定の時点でのKubernetesクラスターのリソースの状態とその関係を示すクラスタダイアグラムを生成することもできます。これは、インシデント発生時の特定の時間におけるリソースのステータスやクラスターのトポロジーを理解する上で非常に役に立ちます。\n\n### エージェントレス\n\nKHIのセットアップはとても簡単です。エージェントレスなので、対象クラスターに複雑な事前設定をすることなく、誰でも簡単に使い始めることができます。また、KHIはGUI操作でKubernetesログを視覚化できます。ログの取得のために複雑なクエリやコマンドを記述する必要はありません。\n![機能: ログ収集のための迅速かつ簡単なステップ](./docs/ja/images/feature-query.png)\n\n### トラブルシューティングの知見\n\nKHIは、Google Cloud サポートチームが開発し、その後オープンソース化されました。Google Cloudのサポートエンジニアが日々の業務でKubernetesログを分析する中で培った経験から生まれたツールです。KHIには、Kubernetesのログトラブルシューティングにおける彼らの深い専門知識が凝縮されています。\n\n## サポートされている製品\n\n### Kubernetes クラスタ\n\n- Google Cloud\n\n  - [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine/docs/concepts/kubernetes-engine-overview)\n  - [Cloud Composer](https://cloud.google.com/composer/docs/composer-3/composer-overview)\n  - [GKE on AWS](https://cloud.google.com/kubernetes-engine/multi-cloud/docs/aws/concepts/architecture)\n  - [GKE on Azure](https://cloud.google.com/kubernetes-engine/multi-cloud/docs/azure/concepts/architecture)\n  - [GDCV for Baremetal](https://cloud.google.com/kubernetes-engine/distributed-cloud/bare-metal/docs/concepts/about-bare-metal)\n  - [GDCV for VMWare](https://cloud.google.com/kubernetes-engine/distributed-cloud/vmware/docs/overview)\n\n- その他環境\n  - JSONlines 形式の kube-apiserver 監査ログ ([チュートリアル (Using KHI with OSS Kubernetes Clusters - Example with Loki | 英語のみ)](/docs/en/setup-guide/oss-kubernetes-clusters.md))\n\n### ログバックエンド\n\n- Google Cloud\n\n  - Cloud Logging（Google Cloud 上のすべてのクラスタ）\n\n- その他環境\n  - ファイルによるログアップロード([チュートリアル (Using KHI with OSS Kubernetes Clusters - Example with Loki | 英語のみ)](/docs/en/setup-guide/oss-kubernetes-clusters.md))\n\n## 実行方法\n\n### Docker イメージから実行\n\n#### 動作環境\n\n- Google Chrome（最新版）\n- `docker` コマンド\n\n\u003e [!IMPORTANT]\n\u003e KHI は最新のGoogle Chromeでしかテストされていません。\n\u003e 他のブラウザでも動作する可能性はありますが、動作しない場合でもプロジェクトとしてサポートしていません。\n\n\u003e [!IMPORTANT]\n\u003e Chrome 139以降、GPUを搭載していない環境では、CPUベースのWebGLエミュレーションが無効化されました。\n\u003e リモートデスクトップ経由でGPU非搭載のサーバーからKHIにアクセスしている場合、タイムラインが正しく描画されない可能性があります。\n\u003e この問題を解決するには、`chrome://flags/#ignore-gpu-blocklist` の設定を `Enabled` に変更してください。\n\u003e\n\u003e *注: ほとんどのコンシューマー向けラップトップ（専用グラフィックスカードを搭載していないものを含む）は、iGPUが搭載されているはずですのでこの影響は受けません。*\n\n#### KHI の実行\n\n1. [Cloud Shell](https://shell.cloud.google.com) を開きます。\n2. `docker run -p 127.0.0.1:8080:8080 gcr.io/kubernetes-history-inspector/release:latest` を実行します。\n3. ターミナル上のリンク `http://localhost:8080` をクリックして、KHI の使用を開始してください！\n\n\u003e [!WARNING]\n\u003e コンテナイメージのレポジトリが `asia.gcr.io` から `gcr.io` に変更されました。古いレポジトリも当面の間利用可能ですが、将来的には廃止される予定のため、新しいレポジトリへの切り替えを推奨します。\n\n\u003e [!TIP]\n\u003e メタデータサーバが利用できない他の環境で KHI を実行する場合は、[アプリケーションのデフォルト認証情報](https://cloud.google.com/docs/authentication/provide-credentials-adc)をホストのファイルシステムからコンテナにマウントして認証できます。\n\u003e\n\u003e **Linux, MacOS or WSL 環境**\n\u003e\n\u003e```bash\n\u003e gcloud auth application-default login\n\u003e docker run \\\n\u003e  -p 127.0.0.1:8080:8080 \\\n\u003e  -v ~/.config/gcloud/application_default_credentials.json:/root/.config/gcloud/application_default_credentials.json:ro \\\n\u003e  gcr.io/kubernetes-history-inspector/release:latest\n\u003e```\n\u003e\n\u003e **Windows PowerShell 環境**\n\u003e\n\u003e ```bash\n\u003e gcloud auth application-default login\n\u003e docker run `\n\u003e -p 127.0.0.1:8080:8080 `\n\u003e -v $env:APPDATA\\gcloud\\application_default_credentials.json:/root/.config/gcloud/application_default_credentials.json:ro `\n\u003e gcr.io/kubernetes-history-inspector/release:latest\n\u003e ```\n\u003e\n\n詳細は [Getting Started](/docs/en/tutorial/getting-started.md) を参照してください。\n\n### ソースから実行\n\n\u003cdetails\u003e\n\u003csummary\u003e動かしてみる (ソースから実行)\u003c/summary\u003e\n\n#### ビルドに必要な依存関係\n\n- Go 1.25.\\*\n- Node.js 環境 22.13.\\*\n- [`gcloud` CLI](https://cloud.google.com/sdk/docs/install)\n- [`jq`コマンド](https://jqlang.org/)\n\n#### 環境構築\n\n1. このリポジトリをダウンロードまたはクローンします。  \n   例: `git clone https://github.com/GoogleCloudPlatform/khi.git`\n2. プロジェクトルートに移動します。  \n   例: `cd khi`\n3. プロジェクトルートから `make setup` を実行します。\n(この Make ターゲットは、npm パッケージのインストール、自動生成コードの生成、git フックの設定を行います)\n\n#### KHI のビルドと実行\n\n1. [`gcloud` で認証します。](https://cloud.google.com/docs/authentication/gcloud)  \n   例: ユーザーアカウントの認証情報を使用する場合は、`gcloud auth login` を実行します。\n2. `make build` を実行します。\n3. 生成された実行ファイル `./khi` を実行します。\n4. `http://localhost:8080` を開き、KHI の使用を開始してください！\n\n\u003c/details\u003e\n\n\u003e [!IMPORTANT]\n\u003e KHI のポートをインターネット向けに公開しないでください。\n\u003e KHI 自身は認証、認可の機能を提供しておらず、ローカルユーザからのみアクセスされることが想定されています。\n\n### 権限設定\n\n## マネージド環境毎の設定\n\n### Google Cloud\n\n#### 権限\n\n以下の権限が必須・推奨されます。\n\n- **必須権限**\n  - `logging.logEntries.list`\n- **推奨権限**\n  - New Inspectionダイアログでの入力時にオートコンプリートの入力候補を取得するために使用します。権限がなくても問題がありませんが、入力時にクラスタ名の候補が表示されません。\n    - `monitoring.timeSeries.list`\n    - `container.clusters.list` (Cloud Composer向け機能利用時のみ)\n- **設定手順**\n\n  - Compute Engine 仮想マシン上など、サービスアカウントがアタッチされた Google Cloud 環境で KHI を実行する場合、対応するリソースにアタッチされたサービスアカウントに上記権限を付与します。\n  - ローカル環境や Cloud Shell など、ユーザアカウント権限で KHI を実行する場合、対応するユーザ上記権限を付与します。\n\n#### 監査ログ出力設定\n\n- **必須設定無し**\n- **推奨設定**\n  - Kubernetes Engine API データ書き込み監査ログの有効化\n\n\u003e [!TIP]\n\u003e Pod や Node リソースの`.status`フィールドへのパッチリクエストが記録されており、\n\u003e トラブルシューティングに詳細なコンテナの情報も必要な場合に推奨されます。\n\u003e Kubernetes Engine API データ書き込み監査ログが未出力の場合も、KHI は Pod 削除時の監査ログから最終のコンテナの状態を表示できますが、Pod が削除されない間のコンテナの状態変化が記録されません。\n\n- **設定手順**\n  1. Google Cloud コンソールで、[監査ログページに移動](https://console.cloud.google.com/iam-admin/audit)します。\n  1. 「データアクセス監査ログの構成」以下の、「サービス」列から「Kubernetes Engine API」を選択します。\n  1. 「ログタイプ」タブで、「データ書き込み」を選択します。\n  1. 「保存」をクリックします。\n\n### OSS Kubernetes\n\n[OSS Kubernetesクラスタのログの可視化（Loki）](/docs/ja/setup-guide/oss-kubernetes-clusters.md)を参照してください。\n\n## ユーザーガイド\n\n[ユーザーガイド](/docs/ja/visualization-guide/user-guide.md) をご確認ください。\n\n## KHIプロジェクトへの貢献\n\nプロジェクトへの貢献をご希望の場合は、[コントリビューションガイド](/docs/en/development-contribution/contributing.md) をお読みの上、[KHI開発環境のセットアップ](/docs/ja/development-contribution/development-guide.md)を実施してください。\n\n## 免責事項\n\nKHI は Google Cloud の公式製品ではございません。不具合のご報告や機能に関するご要望がございましたら、お手数ですが当リポジトリの[Github issues](https://github.com/GoogleCloudPlatform/khi/issues/new?template=Blank+issue)にご登録ください。可能な範囲で対応させていただきます。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglecloudplatform%2Fkhi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgooglecloudplatform%2Fkhi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglecloudplatform%2Fkhi/lists"}