すぐできる!VMCとネイティブAWSの統合ログ管理!
今回はVMware Cloud on AWSのログ管理についての続きです。
VMware Cloud on AWSを利用する場合、ネイティブAWSも利用することが多いのではないでしょうか
今回はそんなVMCとネイティブAWSのログの統合管理方法をご紹介します。
前回、VMCのログをLog Intelligence(LINT)で収集する方法を記載しましたが、
LINTではネイティブAWS環境のログを取得することができません。
そのため、VMCはLINTでログ管理・ネイティブAWSはCloudWatch Logsなどの別サービスを利用したログ管理となり、ログを一元的に管理することができません。
そこで今回はLINTで収集したログをAWS CloudWatch Logに転送して一元管理する方法をご紹介します。
イメージはこんな感じ
LINTのログをLambdaにPOSTしてCloudWatch Logsに書き込む形です。
では早速やり方を見てみましょう。
まず、Lambdaで新しい関数を作成します。
関数名は任意の値を入力し、ランタイムはpython3.6以降を選択します。
LINT側で設定するURLを取得するため、トリガーを追加します。
作成されるとこんな画面になります。
続いて画面下のAPI Gatewayの名前をクリックします。
アクションからメソッドを作成します。
POSTを選択し、先ほど作成したLambda関数を指定して保存します。
Lambda画面に戻り関数コードに以下のコードを記入します。
貼り付け用------------------
import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
body = json.loads(event['body'])
for index, item in enumerate(body):
logging.info("VMC : " + json.dumps(item))
return {
'statusCode': 200,
'body': json.dumps({'Messsage':'Successfully received Webhook from VMC'})
}
貼り付け用------------------
関数を記入後は右上の保存を押下します。
Lambdaのホーム画面のAPI gateway APIエンドポイントのURLをコピーします。
(検証環境ですが念のため、https以降を白塗りにしてます)
続いてLINT画面のLog Managemnt→Log Forwardingへ遷移します。
※ちなみに有償版のLINTでないとLogを転送できませんので注意
Destination:Cloud
EndpointURLに先ほどのコピーしたAPI Gatewayのアドレスを入力します。
右上でログにフィルターをかけられますが今回は全てのログを転送します。
入力し終わったらsaveします。
CLoudWatchLogを見るとロググループが作成されています。
グループをクリックするとログストリームが表示されます。
ログストリームをクリックするとログの詳細を表示できます。
NSX Controllerのログがきてますね~
例によって白塗りしています。
フィルタをかけることで特定のログを表示させることができます。
以上のように簡単にログをCloudWatch Logsに集めることができました。
また、LINTのWebhockを利用するとアラームを検知した場合だけログを送信することもできます。
ほとんど同じ手順ですが詳細は以下のサイトで詳しく紹介されてます
ではまた~