AWS LogsIngestionの設定
最終更新日: 26 年 2023 月 XNUMX 日アマゾンウェブサービス(AWS)の統合 LMログ ログイベントを転送するように設定されたLambda関数を使用して、AmazonCloudWatchログをLogicMonitorに送信します。 LogicMonitorは、このプロセスを自動化するためのXNUMXつの方法を提供します。 AWSCloudFormationスタックテンプレート と Terraform構成.
必須条件
- LogicMonitorAPIトークン ログ取り込みAPIへのすべてのリクエストを認証します。
AWS CloudFormation を使用したデプロイ
LMログ用のCloudFormationスタックテンプレートを使用してLambda関数をデプロイするには:
1。 上の LMLogsリポジトリのAWS統合、 "クリック発射スタック"
2. スタックオプションを構成する テンプレート内。
スタックを作成すると、Lambda関数がデプロイされ、特定のCloudWatch Logsグループにサブスクライブされて、ログがLogicMonitorに転送されます。
注意: FunctionName のデフォルト値は LMLogsForwarder. 新しい関数が作成されると、CloudWatch ログ グループが同じ名前で作成されます (LMLogsForwarder この場合)と /aws/ラムダ/ プレフィックス。 関数の作成時に別の FunctionName を指定すると、ログ グループは同じ名前で作成されます。 (aws/ラムダ/myfunctionname).
3.を参照してください AWSログの転送 転送するログがまだ含まれていない場合にCloudWatchロググループにログを送信するためのサービス固有の手順については(含まれている場合は、以下の情報をスキップできます)。
ログが適切なCloudWatchLogsグループに送信されると、Lambda関数はログをログ取り込みAPIに自動的に転送します。 その後すぐに、ログとログの異常がUI([ログ]ページと[アラート]ページの両方)に表示されます。
CloudFormationスタックオプション
商品説明 | |
FunctionName |
(必須)ログ転送Lambda関数の名前。 デフォルトは LMLogsForwarder . |
LMIngestEndpoint |
(必須)LogicMonitorアカウントのURL: https://<account>.logicmonitor.com どこLogicMonitorサンドボックスアカウントまたは会社名です。 |
LMAccessId |
(必須)LogicMonitorAPIトークンのアクセスID。 APIのみのユーザーを作成することをお勧めします。 |
LMAccessKey |
(必須)LogicMonitorAPIトークンアクセスキー。 |
LMRegexScrub |
(オプション)ログメッセージから一致するテキストを削除するための正規表現パターン。 このパラメーターを使用して、機密情報を含むログをフィルターで除外し、それらのログがLogicMonitorに送信されないようにすることをお勧めします。 |
FunctionMemorySize |
(オプション)ログ転送ラムダ関数のメモリサイズ。 |
FunctionTimeoutInSeconds |
(オプション)ログ転送ラムダ関数のタイムアウト。 |
LogRetentionInDays |
(オプション)指定されたロググループに送信されたログのCloudWatchログ保持 |
CloudFormation のアクセス許可
CloudFormationスタックをデフォルトのオプションでデプロイするには、LogicMonitor認証情報をシークレットとして保存し、フォワーダーのコード(zipファイル)を保存するS3バケットを作成し、Lambda関数(実行ロールとログを含む)を作成するための以下の権限が必要です。グループ)。
{
"Effect": "Allow",
"Action": [
"cloudformation:*",
"secretsmanager:CreateSecret",
"secretsmanager:TagResource",
"secretsmanager:DeleteSecret",
"s3:CreateBucket",
"s3:GetObject",
"s3:PutEncryptionConfiguration",
"s3:PutBucketPublicAccessBlock",
"s3:DeleteBucket",
"iam:CreateRole",
"iam:GetRole",
"iam:PassRole",
"iam:PutRolePolicy",
"iam:AttachRolePolicy",
"iam:DetachRolePolicy",
"iam:DeleteRolePolicy",
"iam:DeleteRole",
"lambda:CreateFunction",
"lambda:GetFunction",
"lambda:GetFunctionConfiguration",
"lambda:GetLayerVersion",
"lambda:InvokeFunction",
"lambda:PutFunctionConcurrency",
"lambda:AddPermission",
"lambda:RemovePermission",
"logs:CreateLogGroup",
"logs:DescribeLogGroups",
"logs:PutRetentionPolicy",
"logs:PutSubscriptionFilter",
"logs:DeleteSubscriptionFilter"
],
"Resource": "*"
}
CloudFormationスタックを作成するには、次の機能が必要です。
CAPABILITY_AUTO_EXPAND
、フォワーダーテンプレートはマクロを使用するためです。CAPABILTY_IAM
,CAPABILITY_NAMED_IAM
、フォワーダーがIAMロールを作成するためです。
Terraform を使用したデプロイ
以下を実行します terraform
Lambda関数をデプロイするコマンド(必要な変数を入力):
# terraform apply --var 'lm_access_id=<lm_access_id>' --var 'lm_access_key=<lm_access_key>' --var 'lm_company_name=<lm_company_name>'
詳細については、以下を参照してください LMログフォワーダーの構成例.
AWSログの転送
Lambda関数をデプロイした後、ログをLambda関数に送信するように個々のAWSサービスを設定する必要があります。 サポートされているAWSサービスの手順は以下にあります。
EC2 インスタンス ログの送信
EC2インスタンスログをLMログに転送する前に、CloudWatchログに収集する必要があります。 詳細については、を参照してください。 CloudWatchAgentのインストール.
注意: EC2 ログを LogicMonitor に送信する場合、ログストリーム名はインスタンス ID にする必要があります (通常、これがデフォルトです)。
CloudWatchロググループでEC2ログの受信を開始した後:
1. CloudWatchで、ロググループ(EC2ログの転送元)を選択します。
2。 下 アクション> Lambdaサブスクリプションフィルターを作成する、「Lambda関数」を選択し、「LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)を選択します。
3。 クリック ストリーミングを開始する.
ELB アクセス ログの送信
Amazon ELBアクセスログをLMログに送信するには:
1. EC2ナビゲーションページで、 ロードバランサー ロードバランサーを選択します。
2。 下 属性>アクセスログ、 "クリックアクセスログを構成する"
3。 」を選択しますアクセスログを有効にする」と入力し、ログを保存するS3バケットを指定します。 (バケットが存在しない場合は作成できます。)
4. S3バケット(ステップ3から)に移動し、 詳細設定>イベント、「の通知を追加しますすべてのオブジェクト作成イベント"
5.「ラムダ関数"を選択し、LMLogsフォワーダー」(またはスタック作成時にLambda関数に名前を付けたもの)。
6。 クリック ストリーミングを開始する.
S3 バケット アクセス ログの送信
AmazonアクセスログをS3バケットからLMログに送信するには:
1.ソースバケットの下 プロパティ、イネーブル サーバーアクセスログ.
を選択する必要があります ターゲットバケット アクセスログが保存される場所。 このターゲットバケットが存在しない場合は、作成する必要があります。 (これはソースバケットとは異なります。)
2.ターゲットバケットに移動し、 詳細設定>イベント、「の通知を追加しますすべてのオブジェクト作成イベント"
3.「ラムダ関数"を選択し、LMLogsフォワーダー」(またはスタック作成時にLambda関数に名前を付けたもの)。
4。 クリック 変更を保存します.
RDS からのログの送信
Amazon RDSログをLMログに送信するには:
1.ログをCloudWatchに送信するようにRDSインスタンスを設定します。
2. CloudWatchで、ロググループ(RDSログの転送元)を選択します。
3。 下 アクション> Lambdaサブスクリプションフィルターを作成する、「Lambda関数」を選択し、「LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)を選択します。
4。 クリック 変更を保存します.
Lambda ログの送信
LambdaログをLMログに送信するには:
1. CloudWatchで、Lambdaのロググループ(ログの転送元)を選択します。
2。 下 アクション> Lambdaサブスクリプションフィルターを作成する、「Lambda関数」を選択し、「LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)を選択します。
3。 クリック 変更を保存します。
LambdaログはロググループからLogicMonitorに転送する必要があります。
EC2 からのフロー ログの送信
EC2フローログをLMログに送信するには:
1.Lambdaのロールポリシーの権限に次の行を追加します。
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
2. [信頼関係]の下の[サービスタグの役割]に次の行を追加します。
"vpc-flow-logs.amazonaws.com"
3.CloudWatchのロググループは次の名前で作成する必要があります /aws/ec2/networkInterface
4. [ネットワークインターフェイス]ページでEC2インスタンスIDを検索します。 そのネットワークインターフェイス行を選択し、次の設定でフローログを作成します。
- 宛先ロググループ:
/aws/ec2/networkInterface
- IAMロール:ステップ1と2で作成したロール。
5.ログレコード形式で、[カスタム形式]を選択します。 ログ形式の最初の値は次のようになります instance-id
。 要件に応じて他の値を設定します。 詳細については、を参照してください。 フローログに使用できるフィールド.
6. / aws / ec2 / networkInterfaceロググループに移動します。 [アクション]> [サブスクリプションフィルター]> [Lambdaサブスクリプションフィルターの作成]で、「LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)を選択し、サブスクリプションフィルター名を指定します。 [ストリーミングの開始]をクリックします。
ログはLambdaを介してLogIngestionAPIに伝播し始めます。
NAT ゲートウェイからのフロー ログの送信
NATゲートウェイフローログをLMログに送信するには:
1.Lambdaのロールポリシーの権限に次の行を追加します。
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
2. [信頼関係]の下の[サービスタグの役割]に次の行を追加します。
"vpc-flow-logs.amazonaws.com"
3.CloudWatchのロググループは次の名前で作成する必要があります /aws/natGateway/networkInterface
4. [ネットワークインターフェイス]ページでNATゲートウェイIDを検索します。 そのネットワークインターフェイス行を選択し、次の設定でフローログを作成します。
- 宛先ロググループ:
/aws/natGateway/networkInterface
- IAMロール:ステップ1と2で作成したロール。
5. / aws / ec2 / networkInterfaceロググループに移動します。 [アクション]> [サブスクリプションフィルター]> [Lambdaサブスクリプションフィルターの作成]で、「LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)を選択し、サブスクリプションフィルター名を指定します。 [ストリーミングの開始]をクリックします。
ログはLambdaを介してLogIngestionAPIに伝播し始めます。
CloudTrail からのログの送信
AWS CloudTrailからLMログにログを送信するには:
1. AWSポータルのCloudTrailページで、[ トレイルを作成する.
2.提供する トレイル名.
3.ログファイルをSSE-KMSで暗号化しない場合は、「ログファイルSSE-KMS暗号化」のチェックを外します。
4.「CloudWatchLogsEnabled」をチェックし、ロググループ名を次のように指定します。 / aws / cloudtrail
5.既存のIAMロールCloudTrail権限がある場合は、IAMロールボックスに入力として指定します。 それ以外の場合は、新しい役割を作成することもできます。必ず新しい役割の名前を指定してください。
6.次のページで、収集するログのイベントタイプを選択します。 参照する CloudTrailの概念に関するAWSドキュメント.
7.次のページで、提供された構成を確認し、をクリックします トレイルを作成する.
8. CloudWatchのロググループページに移動し、 / aws / cloudtrail ロググループ。
9. [アクション]> [サブスクリプションフィルター]> [ラムダサブスクリプションフィルターを作成]で。 ラムダ関数で「LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)を選択し、サブスクリプションフィルター名を指定します。 [ストリーミングの開始]をクリックします。
ログはLMログへの伝播を開始します。 AWSアカウント名リソースでログを確認できます。
CloudFront からのログの送信
AWS CloudFrontからLMログにログを送信するには:
1. AWSポータルのCloudFrontページで、ログを収集するディストリビューションを選択します。
2.「オン」を選択します 標準ロギング.
3.ログのS3バケットで、ログを保存するバケットを選択します。
4. [ディストリビューションの作成]をクリックします。
5番目のステップで選択したS3バケットに移動します。
6。 に行く プロパティ >イベント通知 をクリックし イベント通知を作成する.
7.提供する イベント名.
8。 で 宛先のラムダ関数 タブで、「LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)を選択します。
9。 クリック 変更を保存します.
S3バケットのログをLMログで確認できます。
Kinesis Data Streams からのログの送信
Amazon Kinesis DataStreamsからのログはAWSCloudTrailからフィルタリングされるため、 CloudTrailの説明 これらのログを取り込むため。
Kinesis Data Firehose からのログの送信
Amazon Kinesis Data Firehoseは、APIログとエラーログのXNUMX種類のログで構成されています。 APIログはCloudTrailから収集され、次のことができます。 CloudTrailの説明 これらのログを取り込むため。
エラーログを取り込むには:
1. [配信システムの作成]> [システムの構成]で、[有効]を選択します。 エラーログ.
これにより、CloudWatchに配信システムの名前が/ aws / kinesisfirehose /の形式でロググループが作成されます。
2. [アクション]> [サブスクリプションフィルター]> [ラムダサブスクリプションフィルターを作成]で。 ラムダ関数で「LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)を選択し、サブスクリプションフィルター名を指定します。 [ストリーミングの開始]をクリックします。
ログはラムダを介してLogIngestに伝播し始めます。 KinesisFirehose配信システムの名前が付いたログを表示できます。
ECS からのログの送信
AmazonECSからのログはAWSCloudTrailからフィルタリングされるため、 CloudTrailの説明 これらのログを取り込むため。
トラブルシューティング
Amazon CloudWatchから転送されたログのトラブルシューティングを支援するには、Lambdaログでデバッグログを有効にします。
1. AWSコンソールで、 AWSLambda>関数 そして「LMLogsForwarder」(またはセットアップ中にログ転送Lambda関数に名前を付けたもの)。
2.キーを使用して環境変数を追加します DEBUG
と価値 true
.