virtual-oji’s diary

SIerに勤務するインフラエンジニアのブログ

すぐできる!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に転送して一元管理する方法をご紹介します。

 

イメージはこんな感じ

f:id:virtual-oji:20190729165629p:plain

LINTのログをLambdaにPOSTしてCloudWatch Logsに書き込む形です。

では早速やり方を見てみましょう。

 

まず、Lambdaで新しい関数を作成します。

関数名は任意の値を入力し、ランタイムはpython3.6以降を選択します。

f:id:virtual-oji:20190729171936p:plain

 

LINT側で設定するURLを取得するため、トリガーを追加します。

f:id:virtual-oji:20190729174451p:plain



トリガーはAPI Gatewayを指定します。

f:id:virtual-oji:20190729172249p:plain

作成されるとこんな画面になります。

f:id:virtual-oji:20190729174539p:plain

 

続いて画面下のAPI Gatewayの名前をクリックします。

アクションからメソッドを作成します。

f:id:virtual-oji:20190729172508p:plain

POSTを選択し、先ほど作成したLambda関数を指定して保存します。

f:id:virtual-oji:20190729172624p:plain

Lambda画面に戻り関数コードに以下のコードを記入します。

f:id:virtual-oji:20190729172820p:plain

貼り付け用------------------

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以降を白塗りにしてます)

f:id:virtual-oji:20190729173119p:plain

 

続いてLINT画面のLog Managemnt→Log Forwardingへ遷移します。

※ちなみに有償版のLINTでないとLogを転送できませんので注意

f:id:virtual-oji:20190729173343p:plain

Destination:Cloud

EndpointURLに先ほどのコピーしたAPI Gatewayのアドレスを入力します。

右上でログにフィルターをかけられますが今回は全てのログを転送します。

入力し終わったらsaveします。

 

CLoudWatchLogを見るとロググループが作成されています。

f:id:virtual-oji:20190729173551p:plain

グループをクリックするとログストリームが表示されます。

f:id:virtual-oji:20190729173644p:plain

ログストリームをクリックするとログの詳細を表示できます。

NSX Controllerのログがきてますね~

例によって白塗りしています。

f:id:virtual-oji:20190729173946p:plain

フィルタをかけることで特定のログを表示させることができます。

 

以上のように簡単にログをCloudWatch Logsに集めることができました。

また、LINTのWebhockを利用するとアラームを検知した場合だけログを送信することもできます。

ほとんど同じ手順ですが詳細は以下のサイトで詳しく紹介されてます

https://cloud.vmware.com/community/2019/07/15/forwarding-vmc-events-aws-lambda-cloudwatch-using-log-intelligence-webhook/

 

ではまた~