Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AKIBA.SaaS ONLINE 「サーバーレスウェブアプリケーションにおける監視」

AKIBA.SaaS ONLINE 「サーバーレスウェブアプリケーションにおける監視」

koki_minami

March 17, 2022
Tweet

Other Decks in Programming

Transcript

  1. 2 自己紹介 南 宏樹(Minami Koki)
 
 • 立命館大学情報理工学部 4年(先週に卒業確定しました)
 •

    クラスメソッドで去年の3月から
 内定者インターン中
 
 • 好きなサービス
 ◦ Lambda
 ◦ CDK
 • 趣味
 ◦ スカイスポーツ
 

  2. 5 アジェンダ 1) SaaS型の可観測性プラットフォーム New Relicとは 2) New Relicでどのように導入するのか?、どんなことが出来るの か?

    a) バックエンド i) Fargate構成の場合 ii) Lambda構成の場合 b) フロントエンド i) NewRelic Brower 3) まとめ
  3. 7 可観測性(オブザーバビリティ / Observability) Observability = Observe (観察する)+ ability (能力)

    システムを総合的・多角的にモニタリングし継続して分析する オブザーバビリティの利点 →問題の検出、調査が可能になる。 つまり、システムの開発と運用のサイクルを回してビジネスの継続 的な運営と成長を目指すDevOpsには必須
  4. 3 Pillars of Observability 可観測性(オブザーバビリティ / Observability) 「システムを総合的・多角的にモニタし継続して分析する」 そのための機能(性質)をシステムが備えていること Metric

    CPU%, Mem Usage, Traffic, Counter Log 高コンテキスト アプリ/インフラロ グ Trace 複数箇所からの関連 するデータを連結 Blackbox 外部/インフラスト ラクチャからの計測 Whitebox アプリ内部の計測 データ・APM Frontend 合成(Synthetic)監視 RealUser Monitoring 可視化 グラフ化, 分類, 図示 ダッシュボード 分析 相関, 推移・傾向予測, ふるまい検出, Severity 通知(Action) 通知(アラート/on-call), 自動処理(failover/recovery) 4 Golden Signals Latency, Errors, Saturation, Traffic 3 Dimmensions Functionally, Availability, Speed
  5. New Relicを導入するメリット • より統合されたモニタリング ◦ New Relicの各機能は、APMを中心に統合されておりCloudWatch の各機能とX-Rayなど、複数の画面を渡り歩く必要がない ◦ AWSのマルチアカウント環境もオンプレミスも一元化

    • 洗練されたダッシュボードと通知機能 ◦ 最初からダッシュボードを作り込む必要はない ◦ Applied Intelligenceによる「通知地獄」からの解放 • APM(Application Performance Management) ◦ 高い定評を誇るAPM機能がNew Relicの中心
  6. 13 Fargate構成の場合 • Fargate構成の場合 1. AWS Integrationの有効化 2. アプリケーションログを取得する為にLambda関数の実装 3.

    ECS Integrationを有効化し、タスク情報の取得 4. New Relic APMを有効化し、分散トレーシングの有効化
  7. 14 New Relicでどんなことが出来るか 1. AWS Integrationの有効化 ◦ AWS IntegrationとはCloudwatchのメトリクスデータをNewRelic に連携する仕組み。NewRelicを使う上の第一歩

    APIポーリング • 外部SasSとの連携で昔からよく使 われた手法 • 定期的なポーリングを行う為、遅 延が発生、かといってレートをあげ るとCW側の課金額が大変なこと に... CloudWatch Metric Streams • 2021年からの新しい手法 • CloudWatchのメトリクスデータをKinesis Data Firehoseに流し込むことが出来るよ うに! • これにより「ストリーミング化」、「ほとんど の場合コスト減」! おすすめ
  8. 15 New Relicでどんなことが出来るか 2. アプリケーションログを取得する為にLambda関数の実装 a. AWS Serverless Application Repositoryから

    「newrelic-log-ingestion」というLambda関数をデプロイ b. Lambdaのトリガー設定からストリーミングしたいロググループを選 択
  9. 16 Fargate構成の場合 3. ECS Integrationの導入 ◦ Amazon CloudWatch の標準メトリクスでは収集できないタスク・コン テナレベルのメトリクスを収集可能に

    ◦ 仕組みとしてはサイドカーパターン 導入方法は3パターン ◦ AWSCloudFormationを使用して導入する方法 ◦ 自動スクリプトを使用して導入する方法 ◦ 手動でインストールする方法 おすすめ
  10. 17 Fargate構成の場合 AWSCloudFormationを使用して導入する方法 a. CloudFormationテンプレートを利用し、ECS Integrationに必要な以 下の各種リソースを作成 i. ライセンスキーを保存するAWS Secret

    Managerのシークレット ii. ライセンスキーが保存されているシークレットにアクセスするためのIAMポリシー iii. 2のポリシーがアタッチされたタスク実行ロール b. 監視したいタスク定義にECSエージェントをサイドカーとして追加 i. テンプレートを使って、ARN部分を対象のものに変更
  11. 22 Lambda構成の場合 • 導入することで ◦ コールドスタートや実行時間などの様々なパフォーマンスデータ ◦ API Gateway 、SQS、DynamoDBなど、各AWS

    Lambda呼び出しをトリガーしたイベント についてのコンテキストと属性を提供するAWS Lambdaイベントソース情報 ◦ Lambda機能の詳細な動作が一元的に可視化 ◦ ドリルダウンで調査することが出来る
  12. 26 • CDK、SAMの場合は ◦ ハンドラーの変更、アカウントIDなどの環境変数、ポリシー、New RelicのLayerの追加などが必要 • Serverless Frameworkの場合 ◦

    serverless-newrelic-lambda-layersというプラグインを使うことで、ア カウントID, APIキー等を設定するだけでOK
  13. 28 フロントエンド • New Relic Browser ◦ New Relic Browserを導入することでリアルユーザーモニタリング

    (RUM)が可能 ◦ フロントエンド からバックエンドを一貫して分散トレーシングも可能 に
  14. 29 フロントエンド • 導入方法 a. New Relic Browserの新規作成 ▪ CORSの設定など

    b. 生成されたスニペットを追加 c. バックエンド側の修正 ▪ 「newrelic」というキーでヘッダーを追加 ▪ newrelic.interaction()メソッド内でAJAX の呼び出し