mcpField
C
configuring-log-export

configuring-log-export

github.com/cockroachlabsクラウド・DevOps23119 回インストール14 週間前に更新
リポジトリ

configuring-log-export について

configuring-log-exportは、CockroachDB Cloudのログとメトリクスのエクスポートを設定するスキルです。クラウドクラスターの運用担当者向けに、AWS CloudWatch、GCP Cloud Logging、Datadog、Terraform、出力確認を扱います。

主な機能

  1. 01AWS CloudWatchへのログ出力設定
  2. 02GCP Cloud Loggingへのログ出力設定
  3. 03CloudWatchまたはDatadogへのメトリクス出力
  4. 04ログとメトリクスの出力状態確認
  5. 05Terraformによるログ出力設定

活用シーン

  1. 01クラスターのログを外部サービスへ送信
  2. 02SQL監査ログの出力を確認
  3. 03ログ欠落や出力エラーの調査
  4. 04ログ量の見積もりとクラウド費用の計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cockroachlabs/cockroachdb-skills --skill configuring-log-export

インストール後、Claude Code で/configuring-log-exportを入力して読み込まれたか確認します。

同梱ファイルreferences/cloud-provider-setup.md

詳細

ログエクスポートの設定

CockroachDB Cloud クラスターのログとメトリクスのエクスポートを設定し、クラスターのログ、監査ログ、パフォーマンスメトリクスを外部の監視サービスに配信します。AWS CloudWatch、GCP Cloud Logging、および Datadog などのサードパーティーとの連携をサポートしています。

このスキルを使用するタイミング

  • AWS CloudWatch または GCP Cloud Logging へのログエクスポートを設定するとき
  • CloudWatch または Datadog へのメトリクスエクスポートを設定するとき
  • SQL 監査ログが外部のシンクにエクスポートされていることを確認するとき
  • ログエクスポートのエラーやログの欠落をトラブルシューティングするとき
  • CockroachDB のログ量に基づいて、CloudWatch またはログサービスのコストを見積もるとき
  • Terraform を使用してログエクスポートを設定するとき

前提条件

  • CockroachDB Cloud Advanced プラン — ログエクスポートは Basic プランまたは Standard プランでは利用できません
  • ccloud CLI が Cluster Admin ロールで認証されていること
  • クラウドプロバイダーの設定:
    • AWS: CloudWatch Logs グループが作成済みで、CockroachDB Cloud にクロスアカウントアクセスを許可する IAM ロールがあること
    • GCP: Cloud Logging API が有効で、Logs Writer ロールを持つサービスアカウントがあること
  • クラスター ID: ccloud cluster list で確認できます

アクセスを確認します:

ccloud auth whoami
ccloud cluster info <cluster-name> -o json
# Look for "plan": "ADVANCED"

設定の選択

続行する前に、ユーザーの環境に該当するエクスポート先を確認してください。該当するオプションを尋ね、以下のうち該当するセクションだけに従います。

選択 1 — ログのエクスポート先:

  • AWS CloudWatch: クラスターが AWS 上で実行されており、ログを CloudWatch Logs に送信する場合に使用します。IAM のクロスアカウントロールを設定する必要があります。
  • GCP Cloud Logging: クラスターが GCP 上で実行されている場合に使用します。Logs Writer ロールを持つサービスアカウントが必要です。

選択 2 — メトリクスのエクスポート先:

  • CloudWatch: メトリクスを AWS CloudWatch に送信する場合に使用します。cloudwatch:PutMetricData 権限を持つ IAM ロールが必要です。
  • Datadog: メトリクスを Datadog に送信する場合に使用します。Datadog API キーとサイトが必要です。
  • スキップ: 現時点ではメトリクスをエクスポートする必要はありません。

手順

1. 現在のログエクスポート設定を確認する
# Check if log export is currently configured
ccloud cluster info <cluster-name> -o json
# Look for "log_export_config" in the output
2. AWS CloudWatch へのログエクスポートを設定する

このセクションは、選択 1 でユーザーが AWS CloudWatch を選んだ場合にのみ実行します。GCP Cloud Logging を使用する場合は、手順 3 に進みます。

2.1 CloudWatch ロググループを作成する
# Create a log group in AWS (if it doesn't exist)
aws logs create-log-group \
  --log-group-name cockroachdb-<cluster-name> \
  --region <aws-region>

# Set retention policy (recommended)
aws logs put-retention-policy \
  --log-group-name cockroachdb-<cluster-name> \
  --retention-in-days 90 \
  --region <aws-region>
2.2 CockroachDB Cloud 用の IAM ロールを作成する

完全な IAM ロールポリシーについては、クラウドプロバイダー設定のリファレンスを参照してください。

IAM ロールには、次の要件があります。

  • CockroachDB Cloud の AWS アカウントを許可されたプリンシパルとして信頼する
  • logs:CreateLogStream、logs:PutLogEvents、logs:DescribeLogGroups、logs:DescribeLogStreams の権限を付与する
  • 特定のロググループにスコープを限定する
2.3 ログエクスポートを有効にする
# Enable log export to CloudWatch
ccloud cluster log-export create <cluster-id> \
  --log-group-name cockroachdb-<cluster-name> \
  --auth-principal <iam-role-arn> \
  --type AWS_CLOUDWATCH \
  --region <aws-region>
3. GCP Cloud Logging へのログエクスポートを設定する

このセクションは、選択 1 でユーザーが GCP Cloud Logging を選んだ場合にのみ実行します。AWS CloudWatch を使用する場合はスキップします。

3.1 Cloud Logging API を有効にする
gcloud services enable logging.googleapis.com
3.2 CockroachDB Cloud のサービスアカウントにアクセス権を付与する
# Get the CockroachDB Cloud service account from ccloud cluster info
# Grant Logs Writer role
gcloud projects add-iam-policy-binding <gcp-project-id> \
  --member="serviceAccount:<cockroachdb-service-account>" \
  --role="roles/logging.logWriter"
3.3 ログエクスポートを有効にする
ccloud cluster log-export create <cluster-id> \
  --auth-principal <gcp-project-id> \
  --type GCP_CLOUD_LOGGING
4. メトリクスエクスポートを設定する

選択 2 でユーザーが「スキップ」を選んだ場合は、このセクションをスキップします。選択したメトリクスのエクスポート先に応じて、該当するサブセクション(4.1 または 4.2)のみを実行します。

メトリクスエクスポートでは、CockroachDB のパフォーマンスメトリクスを CloudWatch または Datadog に送信します。

4.1 CloudWatch へのメトリクスエクスポート
ccloud cluster metric-export create cloudwatch <cluster-id> \
  --role-arn <iam-role-arn> \
  --target-region <aws-region>

メトリクスエクスポート用の IAM ロールには、cloudwatch:PutMetricData 権限が必要です。

4.2 Datadog へのメトリクスエクスポート
ccloud cluster metric-export create datadog <cluster-id> \
  --api-key <datadog-api-key> \
  --site <datadog-site>

Datadog のサイト値: datadoghq.com(US)、datadoghq.eu(EU)、us3.datadoghq.com(US3)、us5.datadoghq.com(US5)

5. ログとメトリクスのエクスポートを確認する
# Check log export status
ccloud cluster log-export list <cluster-id> -o json
# Status should be ENABLED

# Check metric export status
ccloud cluster metric-export list <cluster-id> -o json

CloudWatch でログの配信を確認する:

# Check for recent log streams
aws logs describe-log-streams \
  --log-group-name cockroachdb-<cluster-name> \
  --order-by LastEventTime \
  --descending \
  --limit 5 \
  --region <aws-region>

# Tail recent log events
aws logs tail cockroachdb-<cluster-name> \
  --since 1h \
  --region <aws-region>

監査ログがエクスポートされていることを確認する:

クラスターで SQL 監査ログが有効になっている場合、監査ログはログエクスポートに含まれます。確認するには:

-- Check audit logging is enabled
SHOW CLUSTER SETTING sql.log.admin_audit.enabled;
SHOW CLUSTER SETTING sql.log.user_audit;

監査ログが有効になっているにもかかわらず、監査イベントが CloudWatch に表示されない場合は、次の点を確認してください:

  1. ログエクスポートのステータスが ENABLED である
  2. IAM ロールに適切な権限がある
  3. ロググループ名が設定済みのエクスポート先と一致している
  4. 初回のログ配信まで 5~10 分待つ
6. Terraform でログエクスポートを設定する
resource "cockroach_log_export_config" "main" {
  id         = cockroach_cluster.main.id
  auth_principal = "<iam-role-arn>"
  log_name       = "cockroachdb-${cockroach_cluster.main.name}"
  type           = "AWS_CLOUDWATCH"
  region         = "<aws-region>"
}

resource "cockroach_metric_export_cloudwatch_config" "main" {
  id         = cockroach_cluster.main.id
  role_arn       = "<iam-role-arn>"
  target_region  = "<aws-region>"
}

既知の Terraform の問題: ログエクスポートと CMEK を同じ terraform apply でクラスターと同時に作成すると、競合状態が発生することがあります。まずクラスターを適用し、その後の適用でログエクスポートと CMEK の設定を追加してください。

安全性に関する考慮事項

影響の種類重大度推奨事項
ログエクスポートの有効化低クラスターの動作への影響はありません
ログエクスポートの無効化低ログ配信は停止しますが、クラスターには影響しません
IAM の設定ミス中ログエクスポートはエラーを通知せずに失敗します。配信の途切れがないか監視してください
コストへの影響中大量のログを生成するクラスターでは、CloudWatch/ログ記録のコストが大きくなる可能性があります
Terraform の競合状態中ログ/CMEK の設定より先にクラスターを作成してください

コスト計画:

  • CockroachDB Cloud では、クエリ量と監査設定に応じて、ノードあたり 1 日に 1~10 GB のログが生成されることがあります
  • CloudWatch Logs の料金:取り込みは約 $0.50/GB、ストレージは約 $0.03/GB/月(リージョンによって異なります)
  • ストレージコストを抑えるため、ログ保持ポリシーを有効にしてください
  • 監査ログを有効にするとログ量が大幅に増加するため、それを考慮して計画してください

次のことは行わないでください:

  • ログエクスポートが有効な状態で CloudWatch のロググループを削除する(配信エラーが発生します)
  • 先にログエクスポートを無効にせず、IAM 権限を取り消す
  • ログ量の増加を考慮せずに、クラスター全体の SQL 監査ログを有効にする

ロールバック

# Disable log export
ccloud cluster log-export delete <cluster-id>

# Disable metric export
ccloud cluster metric-export delete cloudwatch <cluster-id>
ccloud cluster metric-export delete datadog <cluster-id>

ログエクスポートは、いつでも同じ設定または異なる設定で再度有効にできます。過去のログは再送信されません。再度有効にした後に新しく生成されたログのみがエクスポートされます。

参考資料

スキルの参考資料:

関連スキル:

CockroachDB 公式ドキュメント:

コメント