- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
観測可能性パイプラインワーカーは、さまざまなソースからログを取り込むことができます。AWS CloudTrail や CloudWatch などの外部システムからログを受信している Amazon S3 バケットがある場合、これらのログを取り込むようにワーカーを構成することができます。この設定では、観測可能性パイプラインワーカーの Amazon S3 ソースを使用し、S3 バケットからイベント通知を受け取るために Amazon SQS キューを構成する必要があります。そして、イベント通知は、S3 バケットに新しいログイベントを収集するようにワーカーに通知します。
このガイドでは、以下の手順で説明します。
Amazon SQS コンソールで、この構成に固有の新しいキューをプロビジョニングします。これにより、使用中の他のログ分析ツールから、それに加えるすべての変更を分離しておくことができます。
${REGION}
、${AWS_ACCOUNT_ID}
、${QUEUE_NAME}
、${BUCKET_NAME}
を、先ほど入力した該当の AWS アカウント情報、キュー名、バケット名に置き換えます。{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "SQS:SendMessage",
"Resource": "arn:aws:sqs:${REGION}:${AWS_ACCOUNT_ID}:${QUEUE_NAME}",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "${AWS_ACCOUNT_ID}"
},
"StringLike": {
"aws:SourceArn": "arn:aws:s3:*:*:${BUCKET_NAME}"
}
}
}
]
}
SQS キューは、ワーカーが処理するためのメッセージを受信するようになっているはずです。
“Unable to validate the following destination configurations” (以下の宛先構成を検証することができません) エラーが発生した場合は、SQS のアクセスポリシーが正しく設定されているか確認してください。
必要な権限だけが与えられるように、ワーカーのために別の IAM ロールを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sqs:DeleteMessage",
"s3:GetObject",
"sqs:ReceiveMessage",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::${BUCKET_NAME}/*",
"arn:aws:s3:::${BUCKET_NAME}",
"arn:aws:sqs:${REGION}:${ACCOUNT_ID}:${QUEUE_NAME}"
]
}
]
}
${REGION
}、${AWS_ACCOUNT_ID}
、${QUEUE_NAME}
、${BUCKET_NAME}
を、該当する AWS アカウント情報、使用するキュー名とバケット名に置き換えます。ロールを EC2 インスタンスにアタッチしたり、ユーザーから引き受けたりしたい場合は、さらにロールの権限を変更する必要があります。実行中の観測可能性パイプラインのプロセスにロールを適用します。EC2 インスタンスにロールをアタッチするか、指定されたユーザープロファイルからロールを引き受けることでこれを行うことができます。
sources:
cloudtrail:
type: aws_s3
region: ${REGION}
sqs:
queue_url: ${SQS_URL}
${REGION}
は AWS アカウントのリージョンに置き換えてください。${SQS_URL}
をコンソールの SQS キューの Details セクションに記載されている HTTP URL に置き換えます。その他のオプションについては、Amazon S3 ソースドキュメントを参照してください。
Amazon S3 のソースをセットアップした後は、データを操作するための変換と、ユースケースに応じた宛先にログを出力するためのシンクを追加することができます。ソース、変換、シンクの詳細については、構成を参照してください。
ほとんどのサービス (例えば CloudTrail) は S3 にログをバッチで送信するので、ワーカーが受け取る各イベントは複数のログで構成されていることになります。以下の例では、Records
はバッチされた 3 つのログイベントの配列です。
{
"Records": [
{
"log event 1": "xxxx"
},
{
"log event 2": "xxxx"
},
{
"log event 3": "xxxx"
}
]
}
以下の explode
と map
変換を追加して、バッチされたログイベントを個々のイベントに分離し、シンクで正しく処理できるようにします。
transforms:
explode:
type: remap
inputs:
- cloudtrail
source: |-
.message = parse_json!(.message)
. = unnest!(.message.Records)
map:
type: remap
inputs:
- explode
source: |-
merge!(., .message.Records)
del(.message)
この例では、parse_json
関数が文字列を JSON にパースしています。
unnest
関数は、バッチされたログイベントを個々のログイベントの配列に分離します。
[
{"Records": {"log event 1": "xxx"}},
{"Records": {"log event 2": "xxx"}},
{"Records": {"log event 3": "xxx"}}
]
次に、merge
関数が .Records
のデータをトップレベルに折り畳み、各ログイベントが個々のログ行になるようにします。del
関数は、余計なフィールドを削除します。
{"log event 1": "xxx"}
{"log event 2": "xxx"}
{"log event 3": "xxx"}
お役に立つドキュメント、リンクや記事: