Instana Build306以降のIDOTで、以下のCloudwatch Reciever設定をすることで
Instanaエージェントによりログ連携ができるようになります。
IDOTサポート状況:
https://github.com/instana/instana-otel-collector/blob/main/docs/receivers.md
以下は公開されている連携用のアーキテクチャダイアグラムと環境の前提要件になります。
【データフロー】
- ログ生成: アプリケーション、AWSサービスがCloudWatchロググループにログを書き込む
- Otelコレクタ収集: フォーマットされたCloudWatchログが、Otelコレクタにより
取得される - Otelコレクタ送信:テレメトリで、OTLPエンドポイント(Instana受け口)経由で、
Instanaに送信される - 監視: ログは Instana Logsダッシュボードに表示され、分析やアラートに利用
【前提条件】
AWS 要件
• 適切な権限を持つAWSアカウント
• CloudWatch Logsへのアクセス権限(アクセス権を持つAWS-IAMユーザプロファイル)
Instana 要件
• アクティブなInstanaユーザ
• OTLPエンドポイントURL
• 認証情報:
• InstanaAPIキー (x-instana-key)
• Instanaホスト識別子 (x-instana-host)
まず重要な設定として、IDOTでCloudwatch Recieverを有効にする以下pipelines設定の
箇所に"awscloudwatch"ワードを追加記載します。
IDOTを展開後、/opt/instana/collector/config配下、
config.yamlファイル: receivers: []の箇所にawscloudwatchを追記する!
# Data processing pipelines
pipelines:
# ===== OTLP Pipeline =====
# These pipelines handle data received via OTLP protocol from instrumented applications
# Log data pipeline for OTLP data
logs/otlp:
receivers: [otlp/receiver,awscloudwatch] # Collect logs from OTLP receiver
processors: [transform/severity_parse, batch] # Process logs with severity parsing
exporters: [otlphttp/exporter] # Send logs to Instana backend
以下は、Cloudwatch log監視用の5つのサンプルコンフィグになります。
①.
- 簡単かつ少ない設定
- ログの自動検出
- 全てのロググループとログストリームを収取するので企業利用では不便
②.
- ログの自動検出
- プレフィックスに一致するロググループのみを収集
- 検出されるロググループの数を制限
③.
- すべてのロググループの自動検出
- ログストリームをフィルタリング
④.
- 必要なロググループを指定して収集
- 自動検出はしない
⑤.
- 収集するロググループの名前を指定
- 自動検出は行いません
- プレフィックスに一致するログストリームからのみ収集
個人利用なら、自動検出する設定が楽ですが、、
企業利用なら細かい指定ができる5番目のコンフィグ一択かなと思います。
実環境に設定した実際サンプルコンフィグ
私の環境では、以下のコンフィグをこのコレクタ設定(config.yaml)に設定して
ロググループとログストリームを指定しました。
awscloudwatch:
region: us-west-2
profile: sasahara-test
logs:
poll_interval: 1m
groups:
named:
/aws/ec2/flowlog:
names: [eni-0d968dc1390b99cff-all]
**AWS Profileで、API連携用設定を事前に設定しています。
AWS Profile設定は、AWS CLIで実施しています。
$ aws configure --profile sasahara-test
AWS Access Key ID [None]: ****************DMH2
AWS Secret Access Key [None]: ****************bHBU
Default region name [None]: us-west-2
Default output format [None]:
事前に、AWS CLIで連携したいログを表示してその情報を記載するのが楽です。
[ec2-user@ip-172-31-34-210 config]$ aws logs describe-log-groups
{
"logGroups": [
{
"logGroupName": "/aws/ec2/flowlog",
"creationTime": 1758526597601,
"retentionInDays": 3,
"metricFilterCount": 0,
"arn": "arn:aws:logs:us-west-2:xxxxxxxxxx557:log-group:/aws/ec2/flowlog:*",
"storedBytes": 0,
"logGroupClass": "STANDARD",
"logGroupArn": "arn:aws:logs:us-west-2:xxxxxxxxxx557:log-group:/aws/ec2/flowlog"
}
]
}
*もちろんAWS管理コンソール、CloudwatchlogsのGUIからもLog Groups、Log Stream名は確認できます。
実際に、Instana上でCloudwatch logとの連携をOtelコレクタで取得したイメージ画面を貼っておきます。
背景
Instanaで、Cloudwatch logsイベントを監視したいという要件があります。
具体的にはVPCフローログや、ALBのアクセスログといったNW、基盤系イベント監視の要件でInstanaの標準機能ではサポートしていないため、Otel(Open Telemetry)で監視を検討してOtelコミュニティの方ではすでにそのコレクタイメージがリリースされている事を確認されたため、IDOTにも実装された背景があります。
参考情報
InstanaでOpenTelemetryログを監視する (公式マニュアル):
https://www.ibm.com/docs/ja/instana-observability/current?topic=logs-collecting-opentelemetry#collecting_logs_otel
AWS CLIで、Cloudwatch logsを確認するコマンド:
AWS CLIでAmazon CloudWatch Logsに保存されたログを見たい #awscli - Qiita
IDOTの公開情報:
https://github.com/instana/instana-otel-collector/blob/main/README.md
OtelコミュニティのCloudwatch log recieverの公開情報:
https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/awscloudwatchreceiver/README.md

