AWS ログの送信

最終更新日: 12 年 2023 月 XNUMX 日

LM ログのアマゾン ウェブ サービス (AWS) 統合は、ログイベントを転送するように設定された Lambda 関数を使用して、Amazon CloudWatch ログを LogicMonitor に送信します。 LogicMonitor は、プロセスを自動化するためのメソッドとして、AWS CloudFormation Stack テンプレートと 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 (オプション)ログ転送ラムダ関数のタイムアウト。

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。 で クラウドウォッチ、ログ グループ (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.「ラムダ関数"を選択し、LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)。

4。 選択 変更を保存します.

RDS からのログの送信

Amazon RDSログをLMログに送信するには:

1.ログをCloudWatchに送信するようにRDSインスタンスを設定します。

2。 で クラウドウォッチ、ログ グループ (RDS ログの転送元) を選択します。

3。 下 アクション> Lambdaサブスクリプションフィルターを作成する、「Lambda関数」を選択し、「LMLogsForwarder」(またはスタック作成時にLambda関数に名前を付けたもの)を選択します。

4。 選択 変更を保存します.

Lambda ログの送信

LambdaログをLMログに送信するには:

1。 で クラウドウォッチ、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。 要件に応じて他の値を設定します。 詳細については、を参照してください。 この AWS ドキュメント.

6. /aws/ec2/networkInterface ログ グループに移動します。 の アクション > サブスクリプションフィルター > Lambda の作成 サブスクリプション フィルターで、「LMLogsForwarder」(またはスタック作成時に Lambda 関数に付けた名前) を選択し、サブスクリプション フィルター名を指定します。

7。 選択 ストリーミングを開始する.

ログは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 関数に付けた名前) を選択し、サブスクリプション フィルター名を指定します。

6。 選択 ストリーミングを開始する.

ログはLambdaを介してLogIngestionAPIに伝播し始めます。

CloudTrail からのログの送信

AWS CloudTrailからLMログにログを送信するには:

1. AWS ポータルの CloudTrail ページで、 トレイルを作成する.

2.提供する トレイル名.

3.ログファイルをSSE-KMSで暗号化しない場合は、「ログファイルSSE-KMS暗号化」のチェックを外します。

4.「CloudWatchLogsEnabled」をチェックし、ロググループ名を次のように指定します。 / aws / cloudtrail

5.既存のIAMロールCloudTrail権限がある場合は、IAMロールボックスに入力として指定します。 それ以外の場合は、新しい役割を作成することもできます。必ず新しい役割の名前を指定してください。

6. 次のページで、 イベントタイプ 収集したいログの場合。 詳細については、を参照してください。 この AWS ドキュメント.

7. 次のページで、提供された構成を確認し、選択します。 トレイルを作成する.

8. CloudWatchのロググループページに移動し、 / aws / cloudtrail ロググループ。

9。 で アクション > サブスクリプションフィルター > Lambda サブスクリプションフィルターの作成—ラムダ関数で「LMLogsForwarder」(またはスタック作成時に Lambda 関数に付けた名前)を選択し、サブスクリプションフィルター名を指定します。

10。 選択 ストリーミングを開始する.

ログはLMログへの伝播を開始します。 AWSアカウント名リソースでログを確認できます。

CloudFront からのログの送信

AWS CloudFrontからLMログにログを送信するには:

1。 の中に CloudFrontを AWS ポータルのページで、ログを収集するディストリビューションを選択します。

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。 で アクション > サブスクリプションフィルター > Lambda サブスクリプションフィルターの作成—ラムダ関数で「LMLogsForwarder」(またはスタック作成時に Lambda 関数に付けた名前)を選択し、サブスクリプションフィルター名を指定します。

3。 選択 ストリーミングを開始する.

ログはラムダを介してLogIngestに伝播し始めます。 KinesisFirehose配信システムの名前が付いたログを表示できます。

ECS からのログの送信

AmazonECSからのログはAWSCloudTrailからフィルタリングされるため、 CloudTrailの説明 これらのログを取り込むため。

AWS ログのメタデータ

次の表に、AWS ログと LM ログの統合のメタデータ フィールドを示します。 統合では、ログ レコード内でこのデータが検索され、生のメッセージ文字列とともにデータがログに追加されます。

プロパティ説明LMマッピングデフォルト
arnAmazon リソースネーム、AWS リソースの一意の識別子。arnいいえ
awsRegionAWS リソースのリージョン。regionいいえ
eventsourceイベントを送信するソース サービス。_type有り

トラブルシューティング

Amazon CloudWatchから転送されたログのトラブルシューティングを支援するには、Lambdaログでデバッグログを有効にします。

1. AWSコンソールで、 AWSLambda>関数 そして「LMLogsForwarder」(またはセットアップ中にログ転送Lambda関数に名前を付けたもの)。

2.キーを使用して環境変数を追加します DEBUG と価値 true.

AWS Lambda ランタイムを Go1.x から Amazon Linux 2 に移行する

Lambda 関数フォワーダーは Golang で書かれています。 AWS は Go1.x ランタイムを非推奨にするため、顧客に Amazon Linux 2 ランタイムにアップグレードすることを推奨しています。

AWS Lambda ランタイムを Go1.x から Amazon Linux 2 ランタイムに移行するには、次の手順を実行します。

  1. 最新の lambda.zip を次の場所からダウンロードします。 s3 URL.
  2. Amazon コンソールに移動して、次のように検索します Cラウドフォーメーション.
  3. 上で Cラウドフォーメーション   スタック lmフォワーダー.
  4. ソフトウェア設定ページで、下図のように 関連情報 タブでラムダフォワーダーを選択します。
  5. [Lambda 関数] ページで、 Code タブ、[選択 からアップロード > 。ZIPファイル.
  6. 最新のものをアップロードする ラムダ.zip 前にダウンロードしたファイルについては、ステップ 1 を参照してください。
  7. に移動します ランタイム設定 セクション、選択 編集 そして次のことを行います。
    1.  ランタイム フィールド、選択 Amazon Linux 2 のカスタム ランタイム.
    2.  ハンドラ フィールド、タイプ ブートストラップ.
  8. 選択 Save.
記事上で