
シンプルなノードとグラフ
インフラを見える化。設定不要。
graph-go をあなたのスタックに向けるだけで、すべてのデータベース、テーブル、サービス、ストレージバケットのライブでインタラクティブなマップを取得できます — リアルタイムのヘルスモニタリング付き。
graph-go は CLI ファーストのインフラマッパーです。Docker デーモンに接続し、実行中のコンテナを検査し、データベースやストレージサービスをプローブすることで、インフラを自動検出します。UI はバックエンドによって提供され、実際のバックエンドの状態を反映します — 手動のインベントリは不要です。
| 機能 | 詳細 |
|---|---|
| 自動検出 | Docker コンテナと Kubernetes クラスタからインフラを検出 — 手動のインベントリは不要 |
| Kubernetes | Namespaces、Deployments、StatefulSets、DaemonSets、Pods、Services — informer ベースのリアルタイム監視付き |
| Docker | 実行中のコンテナを分類し、認証情報を抽出し、Docker イベントを監視し、graphgo.* ラベルを尊重して type/DSN/node-type/name を上書きしたりコンテナを無視したりする |
| PostgreSQL | テーブル、外部キー関係、スキーマトポロジー |
| MongoDB | データベースとコレクション |
| MySQL | テーブル、外部キー関係 |
| Redis | キースペースとキー分布 |
| Elasticsearch | インデックス、クラスタヘルス、シャードステータス |
| S3 / MinIO | バケットとトップレベルのプレフィックス |
| HTTP サービス | ヘルスエンドポイント、サービス間の依存関係マッピング |
| リアルタイムヘルス | WebSocket による 5 秒ごとのライブステータス更新 |
| インタラクティブグラフ | スイムレーンレイアウト、namespace グループコンテナ、パン/ズーム、type/health によるフィルタ、ノード検索 |
graph-go は少数の graphgo.* コンテナラベルを尊重します(制御したい任意のコンテナに設定してください):
| ラベル | 効果 |
|---|---|
graphgo.ignore=true | このコンテナを完全にスキップする |
graphgo.type=postgres | アダプタタイプを強制する(postgres、mongodb、mysql、redis、elasticsearch、s3、http) |
graphgo.dsn=... | 接続文字列を注入する(postgres/mysql には DSN、mongodb には URI、それ以外は dsn にフォールバック) |
graphgo.node-type=gateway | 視覚的なノードタイプを上書きする(service、gateway、auth、api、queue、cache) |
graphgo.name=... | グラフに表示され、ノード ID / ログで使用されるノード名を上書きする |
これらを使用して、誤分類されたコンテナを救済したり、graph-go をカスタム DSN に向けたり、コンテナを削除せずにグラフから隠したりできます。
CLI でシード済みのデモスタックを起動します。これは graph-go を現実的な環境で確認する最速の方法であり、初めてのユーザー向けの意図されたオンボーディングパスです:
git clone https://github.com/guilherme-grimm/graph-go.git
cd graph-go
go run ./cmd/app demo
http://localhost:8080 を開きます。このコマンドは Docker Compose 経由でアタッチされた状態で実行されます。アタッチされたセッションを停止するには Ctrl+C を押します。
初回実行は、Docker がベースイメージをプルしてローカルのデモイメージをビルドする必要があるため、コールドマシンでは数分かかることがあります。以降の実行ははるかに高速です。
デモスタックは、これらのホストポートが空いていることを想定しています: 8080、5432、27017、9000、9001。
後で明示的にクリーンアップする必要がある場合:
docker compose -f docker-compose.demo.yml down
1 コンテナ、1 ポート。Docker ソケットを読み取り専用でマウントすると、graph-go がホスト上で実行されているすべてを自動検出します:
docker run -d -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/guilherme-grimm/graph-go:latest
graph-go は Docker ソケットから読み取るだけです。
:roフラグがこれを強制します — 必ず付けてください。
http://localhost:8080 を開きます。自動検出は、設定ファイルなしで Docker コンテナと(kubeconfig またはクラスタ内サービスアカウントが存在する場合は)Kubernetes リソースを処理します。
Docker/Kubernetes の外にあるサービス(リモートデータベース、マネージドクラウドサービス)については、設定ファイルをマウントしてください — 設定を参照。
単一の自己完結型バイナリ — UI は埋め込まれていますが、エントリポイントは依然として CLI です。
# Linux amd64 (GitHub CLI が必要。他のプラットフォームは Releases を参照)
gh release download --repo guilherme-grimm/graph-go --pattern 'graph-go_*_linux_amd64.tar.gz' --clobber
tar xzf graph-go_*_linux_amd64.tar.gz
./graph-go serve # または単に `./graph-go` - 同じこと
http://localhost:8080 を開きます。他のプラットフォームは Releases ページにあります。
| コマンド | 動作 |
|---|---|
graph-go demo | リポジトリからシード済みの Docker Compose デモスタックを起動し、その出力をフォアグラウンドでストリームします。 |
graph-go serve | 自動検出とライブ更新を備えた HTTP サーバーを起動します(デフォルト — 引数なしで実行するのと同じ)。 |
graph-go scan | 検出を 1 回実行し、グラフを JSON として stdout に出力します。jq へのパイプ、CI チェック、ワンショットエクスポートに便利です。 |
graph-go version | バージョン、コミット、ビルド日を出力します。 |
graph-go --health-check | ローカルの /health にアクセスし、0/1 で終了します。コンテナの HEALTHCHECK で使用されます。対話的な使用向けではありません。 |
グローバルフラグ(すべてのサブコマンドに適用): --config、--log-level、--log-format。コマンドごとの完全なサーフェスについては graph-go <command> --help を参照してください。
典型的なフロー:
graph-go demo で現実的なローカルウォークスルー。graph-go serve で自分のインフラに対して実行。graph-go scan でワンショット自動化、エクスポート、CI チェック。| ポート | 用途 |
|---|---|
8080 | graph-go (UI + API + WebSocket — 本番) |
5173 | Vite 開発サーバー (開発専用 — CONTRIBUTING.md を参照) |
9001 | MinIO コンソール (デモスタック専用) |
自動検出が本道です。Docker ソケットをマウントするか、Kubernetes クラスタ内で実行してください — graph-go は設定ファイルなしでインフラを検出します。
YAML 設定(conf/config.yaml)は、検出では到達できないサービス — リモートデータベース、マネージドクラウドサービス、外部エンドポイント — のためのエスケープハッチとしてのみ使用してください。完全なスキーマについては conf/config.sample.yaml を参照してください — すべてのアダプタとすべての設定ブロック(server、docker、kubernetes、connections)の例があります。
上記の Docker run で設定ファイルを使用するには:
docker run -d -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v $(pwd)/conf/config.yaml:/app/conf/config.yaml:ro \
ghcr.io/guilherme-grimm/graph-go:latest
許可された使用のみ: graph-go は、あなたが所有するか、アクセス許可を持つインフラを可視化するためのものです。許可なくシステムに向けないでください。
┌─────────────────────────────────────┐
│ Discoverer Interface │
│ Discover() · Watch() · Close() │
└──────────┬──────────┬───────────────┘
│ │
┌──────────▼──┐ ┌────▼──────────────┐
│ Docker │ │ Kubernetes │
│ Discoverer │ │ Discoverer │
│ (containers,│ │ (informers, pods, │
│ classify, │ │ deployments, │
│ events) │ │ services, health) │
└──────┬──────┘ └────┬──────────────┘
│ │
┌──────▼───────────────▼──────┐
│ Parallel Discovery + Merge │
│ (concatenate ServiceInfo) │
└──────────────┬──────────────┘
│
Config (YAML) ──→ YAML Merge ───────────▶│
▼
┌─────────────────────────────┐
│ Adapter Registry │
│ ├─ PostgreSQL → Tables + FK│
│ ├─ MongoDB → Collections │
│ ├─ MySQL → Tables + FK │
│ ├─ Redis → Keyspaces │
│ ├─ Elasticsearch → Indices │
│ ├─ S3 → Buckets │
│ └─ HTTP → Health + deps│
│ │
│ + Topology (K8s nodes/edges) │
└──────────────┬───────────────┘
▼
Graph Model (Nodes + Edges)
▼
REST API + WebSocket (Real-time)