要点OpenTelemetry Collector の CloudWatch receiver を使用して、AWS CloudWatch Logs を ClickStack に転送します。指定したロググループ名と自動検出に対応しています。デモデータセットとあらかじめ用意されたダッシュボードが含まれています。
概要
- ログをメトリクスやトレースとあわせて単一のプラットフォームで分析する
- ClickHouse の SQL インターフェイスを使用してログをクエリする
- CloudWatch の保持期間を短縮したりアーカイブしたりすることで、コストを削減する
既存のCloudWatchロググループとのインテグレーション
前提条件
- 稼働中の ClickStack インスタンス
- CloudWatchロググループ を使用する AWS アカウント
- 適切な IAM 権限を持つ AWS 認証情報
ファイルベースのログインテグレーション (nginx、Redis) とは異なり、CloudWatch では CloudWatch API をポーリングするために、別途 OpenTelemetry Collector を実行する必要があります。この collector は AWS 認証情報と API へのアクセスを必要とするため、ClickStack のオールインワンイメージ内では実行できません。
1
ClickStack API keyを取得する
OpenTelemetry Collector はデータを ClickStack の OTLP endpoint に送信しますが、これには認証が必要です。- ClickStack の URL (例: http://localhost:8080) で HyperDX を開きます
- 必要に応じてアカウントを作成するか、ログインします
- Team Settings → API Keys に移動します
- インジェスト API key をコピーします
2
AWS 認証情報を設定する
AWS の認証情報を環境変数としてエクスポートします。設定方法は、認証の種類によって異なります。AWS SSO ユーザー向け (ほとんどの組織に推奨) :YOUR_PROFILE_NAME を AWS SSO のプロファイル名 (例: AccountAdministrators-123456789) に置き換えてください。長期利用の認証情報を使用する IAM ユーザーの場合:YOUR_ACCOUNT_ID は、ご使用の AWS アカウント ID に置き換えてください。3
CloudWatch receiver を設定する
CloudWatch receiver の設定を含むotel-collector-config.yaml ファイルを作成します。アカウントで利用可能なロググループを確認する
アカウントで利用可能なロググループを確認する
設定を編集する前に、リージョン内にあるロググループを一覧表示し、実際の名前を選べるようにします (あわせてリージョンが正しいことも確認できます) 。出力例:以下の例 1 の また、対象のグループが共通のプレフィックス (ここでは
groups.named ブロックでは、この一覧の名前をそのまま使用します。上記のアカウントの場合、named-groups セクションは次のようになります:/aws-glue/) を持つ場合は、個別に列挙する代わりに prefix: /aws-glue/ を指定した例 2 を使用できます。/aws/lambda というプレフィックスで始まる最大 100 個のロググループを自動検出して、ログを収集します。region: ロググループが存在する AWS リージョンpoll_interval: 新しいログを確認する間隔 (例:1m,5m)max_events_per_request: リクエストごとに取得するログイベントの最大数groups.autodiscover.limit: 検出するロググループの最大数groups.autodiscover.prefix: プレフィックスでロググループを絞り込むgroups.named: 収集するロググループ名を明示的に指定する
${CLICKSTACK_API_KEY}→ 先ほど設定した環境変数を使用しますhttp://localhost:4318→ 使用する ClickStack endpoint (リモートで実行している場合は ClickStack ホストを使用)us-east-1→ 使用する AWS リージョン- Log group names/prefixes → 実際の CloudWatch ロググループ名またはプレフィックス
CloudWatch receiver は、直近の時間ウィンドウ内のログのみを取得します (
poll_interval に基づきます) 。初回起動時は現在時刻から収集を開始します。過去のログはデフォルトでは取得されません。4
5
HyperDXでログを確認する
collector の実行後、次の手順を行います。- http://localhost:8080 で HyperDX を開きます (または ClickStack の URL にアクセスします)
- Logs ビューに移動します
- ログが表示されるまで 1~2 分待ちます (poll interval に応じます)
- CloudWatch ロググループのログを検索します
ResourceAttributes['aws.region']: AWS リージョン (例: “us-east-1”)ResourceAttributes['cloudwatch.log.group.name']: CloudWatch ロググループ名ResourceAttributes['cloudwatch.log.stream']: ログストリーム名Body: 実際のログメッセージの内容
デモデータセット
1
サンプルデータセットをダウンロードする
- Lambda functions: 支払い処理、注文管理、認証
- ECS services: レート制限とタイムアウトを伴う API ゲートウェイ
- Background jobs: 再試行パターンを含むバッチ処理
2
3
4
デモデータを確認する
インポートが完了したら、次の手順を実行します。- http://localhost:8080 で HyperDX を開いてログインします (必要に応じてアカウントを作成してください)
- Logs ビューに移動します
- 時間範囲を 2025-12-07 00:00:00 - 2025-12-08 00:00:00 (UTC) に設定します
cloudwatch-demoを検索するか、LogAttributes['source'] = 'cloudwatch-demo'でフィルタリングします
タイムゾーン表示HyperDX はタイムスタンプをブラウザーのローカルタイムゾーンで表示します。デモデータの対象期間は 2025-12-07 00:00:00 - 2025-12-08 00:00:00 (UTC) です。場所にかかわらずデモログを確実に表示するには、時間範囲を 2025-12-06 00:00:00 - 2025-12-09 00:00:00 に設定してください。ログが表示されたら、より見やすく可視化するために範囲を 24 時間に絞り込めます。
ダッシュボードと可視化
1
ダッシュボード設定をする
2
ダッシュボードをインポートする
- HyperDX を開き、Dashboards セクションに移動します
- 右上の三点メニューにある Import Dashboard をクリックします
cloudwatch-logs-dashboard.jsonファイルをアップロードし、Finish Import をクリックします
3
ダッシュボードを表示する
すべての可視化があらかじめ設定された状態でダッシュボードが作成されます。デモデータセットでは、時間範囲を 2025-12-07 00:00:00 - 2025-12-08 00:00:00 (UTC) に設定してください (ローカルのタイムゾーンに応じて調整してください) 。インポートしたダッシュボードには、デフォルトでは時間範囲が指定されていません。
トラブルシューティング
HyperDX にログが表示されない
logs:DescribeLogGroups および logs:FilterLogEvents 権限があることを確認します。
collector のログでエラーを確認します:
The security token included in the request is invalid: 認証情報が無効であるか、有効期限が切れています。一時的な認証情報 (SSO) の場合は、AWS_SESSION_TOKENが設定されていることを確認してください。operation error CloudWatch Logs: FilterLogEvents, AccessDeniedException: IAM 権限が不足していますfailed to refresh cached credentials, no EC2 IMDS role found: AWS 認証情報の環境変数が設定されていませんconnection refused: ClickStack エンドポイントに接続できません
古いログしか表示されない、または最新のログが表示されない
無効なセキュリティトークン / 認証情報の期限切れ
レイテンシが高い、または最新のログが表示されない
poll_interval は 1 分です。ログをほぼリアルタイムで取得したい場合は、これを短くします:
collector のメモリ使用量が多すぎる
次のステップ
- 重大なイベント (接続障害、エラーの急増) に対するアラートを設定する
- ログを ClickStack に取り込めたので、保持期間を調整するか S3 にアーカイブして CloudWatch のコストを削減する
- インジェスト量を減らすため、ノイズの多いロググループを collector の設定から削除する