コンテンツにスキップ

Coroot オブザーバビリティ

eBPFベースのオブザーバビリティ及びAPMツール。Kubernetes及びDocker環境向けのゼロインストルメンテーション メトリクス、ログ、トレース、継続的プロファイリング機能を搭載。

# ClickHouseとPrometheusを含むワンコマンド デプロイメント
curl -fsS https://raw.githubusercontent.com/coroot/coroot/main/deploy/docker-compose.yaml | \
  docker compose -f - up -d

# http://localhost:8080 でUIにアクセス
# Coroot Helm リポジトリを追加
helm repo add coroot https://coroot.github.io/helm-charts
helm repo update coroot

# Coroot オペレーターをインストール
helm install -n coroot --create-namespace coroot-operator coroot/coroot-operator

# Community Edition をデプロイ
helm install -n coroot coroot coroot/coroot-ce

# ClickHouse レプリケーション付きでデプロイ
helm install -n coroot coroot coroot/coroot-ce \
  --set "clickhouse.shards=2,clickhouse.replicas=2"

# UIにアクセスするようにポート フォワード
kubectl port-forward -n coroot service/coroot-coroot 8080:8080

# http://localhost:8080 でUIにアクセス
# Coroot スタックをデプロイ
curl -fsS https://raw.githubusercontent.com/coroot/coroot/main/deploy/docker-swarm-stack.yaml | \
  docker stack deploy -c - coroot
# Coroot サーバーをインストール
curl -sfL https://raw.githubusercontent.com/coroot/coroot/main/deploy/install.sh | \
  BOOTSTRAP_PROMETHEUS_URL="http://PROMETHEUS_IP:9090" \
  BOOTSTRAP_REFRESH_INTERVAL=15s \
  BOOTSTRAP_CLICKHOUSE_ADDRESS=CLICKHOUSE_IP:9000 \
  sh -
# RHELベース ディストリビューションでも同じインストーラーが機能
curl -sfL https://raw.githubusercontent.com/coroot/coroot/main/deploy/install.sh | \
  BOOTSTRAP_PROMETHEUS_URL="http://PROMETHEUS_IP:9090" \
  BOOTSTRAP_REFRESH_INTERVAL=15s \
  BOOTSTRAP_CLICKHOUSE_ADDRESS=CLICKHOUSE_IP:9000 \
  sh -

ノード エージェント インストール

Section titled “ノード エージェント インストール”
# 特権コンテナとしてノード エージェントを実行
docker run --detach --name coroot-node-agent \
  --pull=always --privileged --pid host \
  -v /sys/kernel/tracing:/sys/kernel/tracing:rw \
  -v /sys/kernel/debug:/sys/kernel/debug:rw \
  -v /sys/fs/cgroup:/host/sys/fs/cgroup:ro \
  ghcr.io/coroot/coroot-node-agent \
  --cgroupfs-root=/host/sys/fs/cgroup \
  --collector-endpoint=http://COROOT_IP:8080
# ベアメタルまたはVM上にノード エージェントをインストール
curl -sfL https://raw.githubusercontent.com/coroot/coroot-node-agent/main/install.sh | \
  COLLECTOR_ENDPOINT=http://COROOT_IP:8080 \
  SCRAPE_INTERVAL=15s \
  sh -

Kubernetes(Helm オペレーター経由)

Section titled “Kubernetes(Helm オペレーター経由)”
# ノード エージェントはCoroot オペレーターによって自動デプロイ
# Helm使用時の別個インストール不要
コマンド説明
docker compose up -dDocker Compose でCoroot を開始
docker compose downすべてのCoroot サービスを停止
docker compose logs -fCoroot ログをフォロー
helm install coroot coroot/coroot-ceKubernetes上にCoroot をインストール
helm upgrade coroot coroot/coroot-ceCoroot をアップグレード
helm uninstall coroot -n corootクラスターからCoroot を削除
kubectl port-forward svc/coroot-coroot 8080:8080 -n corootCoroot UIにアクセス
変数説明デフォルト
BOOTSTRAP_PROMETHEUS_URLPrometheus サーバー エンドポイント必須
BOOTSTRAP_REFRESH_INTERVALメトリクス収集間隔15s
BOOTSTRAP_CLICKHOUSE_ADDRESSClickHouse サーバー アドレス必須
LISTEN_ADDRESSHTTP リスン アドレス:8080
DATA_DIRデータ ディレクトリ パス/var/lib/coroot
フラグ説明デフォルト
--collector-endpointCoroot サーバー エンドポイント必須
--cgroupfs-rootCgroup ファイルシステム ルート パス/sys/fs/cgroup
--scrape-intervalメトリクス スクレイプ間隔15s
--log-levelログ 詳細度info

アーキテクチャ コンポーネント

Section titled “アーキテクチャ コンポーネント”
コンポーネントロール
Coroot サーバー中央ダッシュボード、分析エンジン、アラート
ノード エージェント各ノード上のeBPFベース メトリクス/ログ収集
クラスター エージェントデータベース監視(MySQL、PostgreSQL、Redis)
ClickHouseメトリクス、ログ、トレース、プロファイル保存
Prometheusメトリクス スクレイピング及びリモート ライト

ゼロインストルメンテーション オブザーバビリティ

Section titled “ゼロインストルメンテーション オブザーバビリティ”
機能説明
自動検出サービスはeBPF経由で自動検出 — コード変更不要
サービス マップすべてのサービス依存関係を表示するライブ トポロジー マップ
分散トレーシングSDKなしでマイクロサービス全体のリクエスト トレーシング
ログ収集自動ログ収集及びパターン クラスタリング
継続的プロファイリングワンクリック有効化でCPU/メモリプロファイリング
機能説明
SLO追跡Service Level Objectives を定義及び監視
問題検出80%以上の問題を自動検出
デプロイメント追跡Kubernetes デプロイメント及びロールバック追跡
コスト監視AWS、GCP、Azure リソース コスト分析
ネットワーク分析TCPコネクション メトリクス、DNS遅延、再送信

サポート対象プロトコル(eBPF)

Section titled “サポート対象プロトコル(eBPF)”
プロトコル収集メトリクス
HTTP/HTTPSレイテンシ、エラー率、スループット
gRPCメソッドレベルのレイテンシ及びエラー
PostgreSQLクエリ レイテンシ、接続、エラー
MySQLクエリ パフォーマンス、スロー クエリ
Redisコマンド レイテンシ、ヒット/ミス率
MongoDB操作 レイテンシ、接続
Kafkaプロデューサー/コンシューマー ラグ、スループット
DNS解決 レイテンシ、失敗率
# カスタムClickHouse サイジング
helm install coroot coroot/coroot-ce \
  --set clickhouse.shards=3 \
  --set clickhouse.replicas=2 \
  --set clickhouse.storage=100Gi

# カスタムPrometheus 設定
helm install coroot coroot/coroot-ce \
  --set prometheus.storage=50Gi \
  --set prometheus.retention=30d

# イングレス を有効化
helm install coroot coroot/coroot-ce \
  --set ingress.enabled=true \
  --set ingress.host=coroot.example.com
アラート タイプ説明
SLO違反SLO目標がリスク状態の時にトリガー
レイテンシ スパイクp99レイテンシが閾値を超える場合
エラー率エラー パーセンテージが閾値を超える場合
リソースCPU、メモリ、ディスク使用量の異常
デプロイメント失敗または劣化したデプロイメント検出
チャネル構成
SlackウェブフックURL
PagerDuty統合キー
OpsgenieAPIキー
EmailSMTP設定
WebhookカスタムHTTPエンドポイント
問題解決策
データが表示されないノード エージェント --collector-endpoint がCoroot サーバーを指しているか確認
サービスが見つからないノード エージェント が --privileged 及び --pid host で実行されているか確認
eBPF が読み込まれないカーネル バージョン 4.16以上でBTFサポート確認
高メモリ使用量--scrape-interval を削減、または監視対象 名前空間を制限
ClickHouse 接続ClickHouse が実行中で、ポート 9000 でアクセス可能か確認
  • クラスター内のすべてのノードにノード エージェントをデプロイして完全な可視性を確保
  • 本番環境デプロイメント用にClickHouse レプリケーションを使用(最小2レプリカ)
  • 自動アラート依存前に意味のあるSLO目標を設定
  • Docker Compose で評価を開始、本番環境用にHelmに移行
  • ポッド再起動を超えてメトリクスを永続化するようにPrometheus リモート ライトを構成
  • 組み込みプロファイラーを使用してスケーリング前にCPU/メモリ ホットスポット特定
  • デプロイメント トラッキングを有効化してリリースとパフォーマンス変化を相関させる