AWS

DatadogのCloud FunctionsでLambdaのパフォーマンスを確認するまで。X-Ray経由ですけどね。

はじめに

DatadogでLambdaを監視する方法を紹介します。
最初はインテグレーションして簡単にできると思っていましたが、思った以上に面倒でした。
DatadogはLambdaから直接、パフォーマンスなどを取得することはできません。X-Rayから間接的に取得します。
また、メトリックスはLAYERの設定を行ったり、Logに関しては新たに関数を作成して別途取得する必要があります。

今回はサンプルとしてAPI Gateway + DynamoDB + Lambda(Python)で動作する環境を監視してみたいと思います。

環境構築は下記を参考に作成してください(ありがたしクラスメソッド)。
初めてのサーバーレスアプリケーション開発 ~DynamoDBにテーブルを作成する~
初めてのサーバーレスアプリケーション開発 ~LambdaでDynamoDBの値を取得する~
初めてのサーバーレスアプリケーション開発 ~API GatewayからLambdaを呼び出す~

他の前提として
・DatadogでAWSのインテグレーション済み

X-Ray SDKをLambdaに仕込んでX-Ray、Datadogで監視する

一番手っ取り早い方法として、SDK(今回はPython)をアップロードするZIPに梱包する方法です。

開発環境、といってもAmazon Linux2を立ち上げてPython(2.7)を使える環境を整えただけです。
pipを利用するのでインストールしておきます。

まず最初に、作業用ディレクトリを作成、移動します。

次にX-Ray SDKを作業用ディレクトリにインストールします。

Python2.7の場合(だけ?)、X-Ray SDK以外にも依存関係がありsetuptools も必要です。

X-Ray SDKを利用するには、下記の行を挿入するだけです。

lambda_function.py を作業用ディレクトリに作成する。

ZIPで保存。

保存したZIPをLambdaにUploadし、保存します。
AWSで行っている場合は、一度クライアント側にSCPで持ってくるなど必要です。
RuntimeをPython2.7に変更します。

LambdaがX-Rayで見れるよう、Debugging and error handlingのactive tracingを有効にします。

API GatewayをX-Rayでトレースできるよう設定します。
Logs/Tracing からX-Ray Tracingを有効化します。
実行ロールに「AWSXrayWriteOnlyAccess」を付与。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/enabling-x-ray.html

あとはAPI Gateway経由でアクセスしfunctionを動作させます。
その後 しばらくするとX-Rayで表示されることを確認します。

Service Map

Trace

Details

ではX-Rayで表示を確認できたためDatadog側の表示を確認します。
Cloud functionsで確認を行います。

上記の画像ではLogの収集が行われていないことが分かります。
ログの取得は下記の手順通りです。
https://docs.datadoghq.com/integrations/amazon_web_services/?tab=allpermissions#set-up-the-datadog-lambda-function

設定を行うことで、Logの取得が行われDatadog側にも反映されます。

また、メトリックスを取得したい場合は下記を参考にしLAYERを設定します。
https://docs.datadoghq.com/integrations/amazon_lambda/#custom-metrics

下記はサンプルですが、バージョンに合わせてPython36の箇所を変更します。Python27、Python37。

サンプルコード

以上で基本的な設定は完了です。
あとは頑張って分析してください。

あと残念ながらDatadog APMでService Mapは表示されません。

まとめ

パフォーマンスが上がらないのはインフラが悪いからと言わずにX-Rayを利用して原因(ボトルネック)を探してみましょう。APM系な話はインフラ屋だけでも出来ないし、デベロッパーだけでも出来ません。一緒になって頑張りましょう。

APMってあまり日本で使われている感じがしないのは気のせいだろうか?

Related post

  1. Azure

    Power BIはモテると誰かがいっていたのでOMSのデータを表示させてみる。

    はじめにくどうです。Power BIはモテると誰かが言って…

  2. Azure

    他社さんの、社内勉強会に行ってきた。

    はじめにくどうです。9/8にNTTPCコミュニケーションズさんの…

  3. AlibabaCloud

    Virtual KubeletでAlibaba Cloud ECIを操作する。

    はじめにAlibaba Cloud ECI をMS謹製のVirtu…

  4. AWS

    AWSのx86_64とarmのベンチマーク

    UnixBenchをとってみたt2.small …

  5. Azure

    Azure Functions を起動した(だけ)。だけど、これは面白そうだ。

    はじめにくどうです。Azure Functions が出ま…

  6. AWS

    Azure ADとAWS Directory Serviceで同期してみよう。

    はじめにどうも、くどうです。今回は、Microsoft Azure…

  1. Azure

    仮想マシンのコア数制限について。
  2. 日記

    MVP for Azure なのでMVP Global Summit に参加して…
  3. 未分類

    TeraStationが故障したときにバックアップを復元する方法 追記
  4. 未分類

    Hotwired Japan → WIRED VISION
  5. 未分類

    CentOS で VMware をインストール後vmware-config.pl…
PAGE TOP