ClickStack を使用した AWS CloudWatch Logs の監視
このガイドでは、OpenTelemetry Collector の AWS CloudWatch receiver を使用して、AWS CloudWatch のログを ClickStack に転送する方法を説明します。次の内容を学びます:
- OpenTelemetry Collector を構成して CloudWatch からログを取得する
- AWS の認証情報および IAM 権限を設定する
- OTLP 経由で CloudWatch Logs を ClickStack に送信する
- ロググループのフィルタリングと自動検出を行う
- 事前構築済みのダッシュボードを使用して CloudWatch ログパターンを可視化する
本番の AWS 環境を設定する前に統合をテストしたい場合のために、サンプルログを含むデモデータセットを利用できます。
所要時間の目安: 10〜15 分
概要
AWS CloudWatch は、AWS のリソースとアプリケーション向けの監視サービスです。CloudWatch はログの集約機能を提供しますが、ログを ClickStack に転送することで次のことが可能になります。
- メトリクスやトレースとあわせて、単一のプラットフォーム上でログを分析できる
- ClickHouse の SQL インターフェイスでログをクエリできる
- CloudWatch の保持期間を短縮したりアーカイブすることでコストを削減できる
このガイドでは、OpenTelemetry Collector を使用して CloudWatch のログを ClickStack に転送する方法を説明します。
既存の CloudWatch ロググループとの連携
このセクションでは、既存の CloudWatch ロググループからログを取得し、それらを ClickStack に転送するように OpenTelemetry Collector を設定する方法について説明します。
本番環境の設定を行う前に連携を試したい場合は、デモデータセットのセクションにあるデモデータセットを使ってテストできます。
前提条件
- 稼働中の ClickStack インスタンス
- CloudWatch ロググループがある AWS アカウント
- 適切な IAM 権限を持つ AWS 認証情報
ファイルベースのログ連携(nginx、Redis)とは異なり、CloudWatch では CloudWatch API をポーリングするための別の OpenTelemetry Collector を実行する必要があります。この collector は AWS 認証情報と API へのアクセスが必要なため、ClickStack のオールインワンイメージ内では実行できません。
ClickStack APIキーを取得する
OpenTelemetry CollectorはClickStackのOTLPエンドポイントにデータを送信します。このエンドポイントには認証が必要です。
- ClickStack の URL(例: http://localhost:8080)から HyperDX を開きます
- 必要に応じてアカウントを作成するかログインしてください
- Team Settings → API Keys に移動してください
- インジェスト API key をコピーしてください

これを環境変数として保存してください:
AWS認証情報の設定
AWS認証情報を環境変数としてエクスポートしてください。方法は認証タイプによって異なります:
AWS SSOユーザーの場合(ほとんどの組織で推奨):
YOUR_PROFILE_NAME を実際の AWS SSO プロファイル名に置き換えます(例:AccountAdministrators-123456789)。
長期認証情報を使用するIAMユーザーの場合:
必要なIAM権限:
これらの認証情報に関連付けられているAWSアカウントには、CloudWatchログを読み取るための以下のIAMポリシーが必要です:
YOUR_ACCOUNT_ID を実際の AWS アカウント ID に置き換えてください。
CloudWatch receiverを設定する
CloudWatchレシーバー設定を含むotel-collector-config.yamlファイルを作成してください。
例1: 名前付きログ・グループ(推奨)
この設定は、特定の名前付きログ グループからログを収集します:
例2: プレフィックスによるログループの自動検出
この設定は、プレフィックス /aws/lambda で始まる最大100個のロググループからログを自動検出して収集します:
設定パラメータ:
region: ロググループが配置されている AWS リージョンpoll_interval: 新しいログをチェックする間隔(例:1m、5m)max_events_per_request: 1 回のリクエストで取得するログイベントの最大数groups.autodiscover.limit: 自動検出するロググループ数の上限groups.autodiscover.prefix: プレフィックスでロググループをフィルタリングするgroups.named: 収集対象とするロググループ名を明示的に指定します
その他の設定オプションについては、CloudWatch receiverのドキュメントを参照してください。
以下を置き換えます:
${CLICKSTACK_API_KEY}→ 先ほど設定した環境変数を使用しますhttp://localhost:4318→ ClickStack のエンドポイント(リモートで稼働している場合は ClickStack のホスト名を使用)us-east-1→ お使いの AWS リージョン- ロググループ名/プレフィックス → 実際に使用している CloudWatch ロググループ
CloudWatchレシーバーは、最近の時間枠のログのみを取得します(poll_intervalに基づく)。初回起動時は現在時刻から開始されます。過去のログはデフォルトでは取得されません。
HyperDXでログを検証する
コレクターが起動したら:
- http://localhost:8080(または ClickStack の URL)で HyperDX を開きます
- Logs ビューへ移動します
- ログが表示されるまで 1~2 分待ちます(ポーリング間隔に応じます)
- CloudWatch のロググループ内のログを検索する

ログ内で以下の主要な属性を探してください:
ResourceAttributes['aws.region']: AWS リージョン(例: "us-east-1")ResourceAttributes['cloudwatch.log.group.name']: CloudWatch Logs のロググループ名ResourceAttributes['cloudwatch.log.stream']: ログストリームの名前Body: 実際のログメッセージ本文

デモデータセット
本番の AWS 環境を設定する前に CloudWatch Logs との連携をテストしたいユーザー向けに、複数の AWS サービスからの現実的なパターンを示す事前生成ログを含むサンプルデータセットを提供しています。
サンプルデータセットをダウンロードする
このデータセットには、複数のサービスからの 24 時間分の CloudWatch Logs が含まれます:
- Lambda functions: 決済処理、注文管理、認証
- ECS services: レート制限とタイムアウトを伴う API ゲートウェイ
- Background jobs: リトライパターンを伴うバッチ処理
デモデータを確認する
インポートが完了したら:
- http://localhost:8080 で HyperDX を開き、ログインします(必要に応じてアカウントを作成します)
- Logs ビューに移動します
- タイムレンジを 2025-12-07 00:00:00 - 2025-12-08 00:00:00 (UTC) に設定します
cloudwatch-demoを検索するか、LogAttributes['source'] = 'cloudwatch-demo'でフィルタします
複数の CloudWatch ロググループからのログが表示されるはずです。

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 時間に絞り込むことができます。
ダッシュボードと可視化
ClickStack で CloudWatch Logs を監視しやすくするために、主要な可視化を含んだあらかじめ用意されたダッシュボードを提供しています。
ダッシュボードをインポートする
- HyperDX を開き、「Dashboards」セクションに移動します
- 右上の三点リーダー(…)メニューから Import Dashboard をクリックします

cloudwatch-logs-dashboard.jsonファイルをアップロードし、Finish Import をクリックします

ダッシュボードを表示する
ダッシュボードは、すべての可視化が事前に設定された状態で作成されます。

デモ用データセットでは、タイムレンジを 2025-12-07 00:00:00 - 2025-12-08 00:00:00 (UTC) に設定してください(ローカルタイムゾーンに応じて調整してください)。インポートされたダッシュボードには、デフォルトではタイムレンジが指定されていません。
トラブルシューティング
HyperDX にログが表示されない
AWS の認証情報が正しく構成されているか確認する:
これが失敗する場合は、認証情報が無効であるか、期限切れになっています。
IAM 権限を確認:
AWS 認証情報に必要な logs:DescribeLogGroups と logs:FilterLogEvents の権限が付与されていることを確認します。
コレクターのログでエラーを確認:
一般的なエラー:
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 エンドポイントへの接続が拒否されています
CloudWatch のロググループが存在し、直近のログが出力されていることを確認する:
古いログしか表示されない、または最新のログが表示されない
CloudWatch receiver はデフォルトで「現在時刻」から処理を開始します:
collector が最初に起動すると、その時点の現在時刻をチェックポイントとして作成し、それ以降のログのみを取得します。過去のログは取得されません。
直近の履歴ログを収集するには:
collector を停止してチェックポイントを削除し、その後再起動します:
レシーバーは新しいチェックポイントを作成し、現在時刻以降のログを取得します。
セキュリティトークンが無効 / 認証情報の有効期限切れ
一時的な認証情報(AWS SSO、引き受けたロールなど)を使用している場合、一定時間が経過すると有効期限が切れます。
新しい認証情報をエクスポートし直します:
レイテンシーが高い、または直近のログが欠けている
ポーリング間隔を短くする:
デフォルトの poll_interval は 1 分です。ほぼリアルタイムでログを取得したい場合は、これを短く設定してください:
注記: ポーリング間隔を短く設定すると AWS API 呼び出し回数が増え、CloudWatch API のコストが増加する可能性があります。
コレクターがメモリを使いすぎている
バッチサイズを小さくするか、タイムアウトを長くする:
自動検出範囲を制限する:
次のステップ
CloudWatch のログが ClickStack に流れ込むようになったら、次のステップとして以下を検討してください。
- 重大なイベント(接続失敗、エラー急増)に対するアラートを設定する
- ログが ClickStack にあるので、保持期間の調整や S3 へのアーカイブによって CloudWatch コストを削減する
- 収集設定から除外することでノイズの多いロググループをフィルタリングし、インジェスト量を削減する
本番環境への移行
このガイドでは、テスト用途として Docker Compose を用いて OpenTelemetry Collector をローカルで実行する方法を示します。本番環境での運用では、アクセスキーを管理する必要をなくすために、AWS へのアクセス権限を持つインフラ(IAM ロール付きの EC2、IRSA を使用する EKS、タスクロール付きの ECS など)上で Collector を実行してください。レイテンシーとコストを抑えるために、Collector は CloudWatch ロググループと同じ AWS リージョンにデプロイします。
本番デプロイパターンおよび Collector 設定例については、OpenTelemetry を使用した取り込み を参照してください。