AWS ログの送信
最終更新日: 11 年 2024 月 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スタックオプション
Description | |
FunctionName |
(必須)ログ転送Lambda関数の名前。 デフォルトは LMLogsForwarder . |
LMIngestEndpoint |
(必須)LogicMonitorアカウントのURL: https://<account>.logicmonitor.com どこLogicMonitorサンドボックスアカウントまたは会社名です。 |
LMAccessId |
(必須)LogicMonitorAPIトークンのアクセスID。 APIのみのユーザーを作成することをお勧めします。 |
LMAccessKey |
(必須)LogicMonitorAPIトークンアクセスキー。 |
LMRegexScrub |
(オプション)ログメッセージから一致するテキストを削除するための正規表現パターン。 このパラメーターを使用して、機密情報を含むログをフィルターで除外し、それらのログがLogicMonitorに送信されないようにすることをお勧めします。 |
FunctionMemorySize |
(オプション)ログ転送ラムダ関数のメモリサイズ。 |
FunctionTimeoutInSeconds |
(オプション)ログ転送ラムダ関数のタイムアウト。 |
ResourceType |
(オプション) AWS ログの送信元を示します。また、デプロイされたサービスの場所も示します。 |
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の説明 これらのログを取り込むため。
EKS ログの送信
前提条件:
EKS クラスターで、次の操作を行います。
- クラスター上にノードグループを作成します。
- Add Amazon CloudWatch の可観測性 プラグイン(アドオン)。
–または–
EC2 インスタンス ログを LM ログに転送する前に、CloudWatch ログに収集する必要があります。さまざまな EKS ログを cloudwatch に転送します。
- アプリケーションメトリクスをCloudWatchに転送するには、 クラスターメトリクスを収集するための CloudWatch エージェントの設定 Amazonから。
- アプリケーションログをCloudWatchに転送するには、 CloudWatch Logs にログを送信する Amazonから。
- Fluenbitを使用してログを転送するには、 Fluent Bit を DaemonSet として設定し、ログを CloudWatch Logs に送信する Amazonから。
プラグインを追加すると、クラスター名を使用して次の 5 つの異なるログ グループが CloudWatch に作成されます。
- /aws/コンテナインサイト/ /応用
- /aws/コンテナインサイト/ /ホスト
- /aws/コンテナインサイト/ /パフォーマンス
- aws/コンテナインサイト/ /データプレーン
- AWS の/クラスタ
EKS ログの送信
送信する特定のログ グループに対して次の操作を実行します。
- Cloudwatchに移動し、ログを転送したいEKSのロググループを選択します。 > ラムダを作成する サブスクリプションフィルター.
- In Lambda サブスクリプションフィルターを作成する選択 ラムダ関数 をクリックして LMLogsForwarder (またはスタック作成時にLambda関数に付けた名前)を選択し、 ストリーミングを開始する.
岩盤ログの送信
- AWS Bedrock では次の 2 種類のログがサポートされており、AWS Cloudwatch に送信できます。
- モデル呼び出しログ。モデル呼び出しログの設定については、 CloudWatch Logs を使用してモデルの呼び出しを監視する Amazonから。
- ナレッジベースのログ。ナレッジベースからCloudwatchにログを送信するには、 CloudWatch Logs を使用してナレッジベースを監視する Amazonから。
- CloudWatch に「bedrock」を含む名前のログ グループを作成します。
ご注意: modelInvocation ログと knowledge-base ログを区別するために、デフォルトでは、modelinvocation ログの場合、ログストリーム名に文字列「modelinvocations」が含まれ、ナレッジベース ログの場合、ログ グループ名に「knowledge-base」または「vendedlogs」が含まれます。
- 上記のように bedrock によって作成されたログ グループに移動します。
- 案内する > サブスクリプション フィルター > Lambda サブスクリプション フィルターを作成します。
- 選択 ラムダ関数 をクリックして LMLogsForwarder (またはスタック作成時にLambda関数に付けた名前)を選択し、 ストリーミングを開始する.
ログは、Lambda を介して LogIngest に伝播し始めます。
モデル呼び出しログは Logicmonitor で作成された Bedrock モデル リソースにマッピングされ、ナレッジベース ログは Logicmonitor で作成された AWS アカウント リソースにマッピングされます。
EventBridge (CloudWatch) イベントの送信
Amazon EventBridge (CloudWatch) イベントは、AWS リソースの変更を記述するリアルタイムのイベントストリームを提供します。シンプルなルールを使用して、イベントを設定、一致、および AWS EventBridge を介して関数またはストリームにルーティングできます。詳細については、 CloudWatchイベント Amazon のドキュメントより。
要件
AWSとLogicMonitorの統合を設定します。詳細については、 AWS ログの送信.
Amazon EventBridge ルールの作成
1 つのサービスに対して 1 つのルールを作成する必要があります。ルール内のイベント パターンは、ターゲットに送信されるサービス イベントを指定します。ターゲットには、LMLogsForwarder または LM にログを送信する Lambda 関数を指定します。現在 CloudWatch イベントでサポートされているサービスは次のとおりです。 S3, ラムダ, ECS, キネシス, SQS, EC2, アカウント.
CloudWatch イベントを設定するためのルールを作成するには、次の手順を実行します。
- に行く アマゾンイベントブリッジ ウェブページを選択して キャンペーンのルール.
- ソフトウェア設定ページで、下図のように ルールの詳細を定義する ページで、ルールの名前と説明を入力します。
- を選択するには ルールタイプ、 選択する イベントパターンのあるルールこれにより、イベントが生成されるたびに、そのイベントがターゲットに送信されるようになります。
- 方法、 を選択 パターンフォームを使用する 特定のサービス用の既成パターンを取得する方法。
- イベント·ソース フィールド、選択 AWSサービス.
- AWSサービス フィールド、サービスを選択します。LogicMonitorは現在、 S3、Lambda、ECE、Kinesis、SQS、EC2、 と アカウント CloudWatch イベントのサービス。
- イベントタイプ フィールド、選択 Cloudtrail 経由の AWS API 呼び出し。 現在の実装では、LogicMonitorは以下のみをサポートしています。 Cloudtrail経由のAWS API呼び出し他のタイプからのイベントは無視されます。
- ソフトウェア設定ページで、下図のように ターゲットを選択してください タブで、次の操作を行います。
- ターゲットの種類、 選択する AWSサービス.
- ターゲットを選択してください、 選択する ラムダ関数.
- 演算、 選択する LMLogsForwarder or LM にログを送信する Lambda。
- 選択 次へ ルールを確認してから選択してください 創造する.
ルールが正常に作成されると、LMでログを表示できます。 ログ ページは以下のようになります。概要パネルで JSON 形式でメッセージを表示することもできます。
詳細については、を参照してください。 イベントに反応する Amazon EventBridge ルールを作成する Amazonから。
AWS ログのメタデータ
次の表に、AWS ログと LM ログの統合のメタデータ フィールドを示します。 統合では、ログ レコード内でこのデータが検索され、生のメッセージ文字列とともにデータがログに追加されます。
プロパティ | Description | LMマッピング | デフォルト |
arn | Amazon リソースネーム、AWS リソースの一意の識別子。 | arn | いいえ |
awsRegion | AWS リソースのリージョン。 | region | いいえ |
eventsource | イベントを送信するソース サービス。 | _type | はい |
ResourceType | AWS ログの送信元を示します。また、デプロイされたサービスの場所も示します。 | ResourceType | はい |
トラブルシューティング
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 ランタイムに移行するには、次の手順を実行します。
- 最新の lambda.zip を次の場所からダウンロードします。 s3 URL.
- Amazon コンソールに移動して、次のように検索します Cラウドフォーメーション.
- 上で Cラウドフォーメーション スタック > lmフォワーダー.
- ソフトウェア設定ページで、下図のように リソース タブでラムダフォワーダーを選択します。
- [Lambda 関数] ページで、 Code タブ、[選択 からアップロード > 。ZIPファイル.
- 最新のものをアップロードする ラムダ.zip 前にダウンロードしたファイルについては、ステップ 1 を参照してください。
- に移動します ランタイム設定 セクション、選択 編集 そして次のことを行います。
- ランタイム フィールド、選択 Amazon Linux 2 のカスタム ランタイム.
- ハンドラ フィールド、タイプ ブートストラップ.
- 選択 Save.