2021/01/25

AWS X-Rayを利用するメリット3つ!連携できるサービスや使い方を紹介

 
  

AWS X-Rayとはどんなサービス?

AWS X-RayとはAmazonが提供するアプリケーションの分散トレースサービスです。X-Ray の使用で、アプリケーションやその基盤サービスの実行状況をサービスマップで全体的に分かりやすく、かつ詳細に把握することが可能になります。 また、高性能なトレース機能があり、アプリケーションのパフォーマンスの問題やエラーの根本原因を迅速に特定して、トラブルシューティングができます。 X-Rayは小規模~大規模(数千のサービスからなる)なアプリケーションまで柔軟に分析ができます。

AWS X-Rayの基本情報

対応アプリケーション 下記のサービス上で実行されるアプリケーション・Amazon Elastic Compute Cloud (EC2) ・Amazon EC2 Container Service (Amazon ECS) ・AWS Lambda・AWS Elastic Beanstalk
X-Rayエージェント(※1)の対応OS ・Amazon Linux AMI・Red Hat Enterprise Linux (RHEL)・Windows Server 2012 R2以降のOS
対応言語 ・node.js・java・.net
料金※2 無料枠・トレースの記録は10万件/月まで・トレースの取得とスキャンは合計100万件/月まで追加料金X-Ray Tracing・トレースの記録 5.00USD/100万件(トレース 1 件あたり 0.000005 USD) ・トレースの取得 0.50USD/100万件(トレース 1 件あたり 0.0000005 USD) ・トレースのスキャン 0.50USD/100万件(トレース 1 件あたり 0.0000005 USD) X-Ray Insightsトレースの記録 1.00USD/100万件 (トレース 1 件あたり 0.000001USD)
※1…X-Rayエージェントはログファイルからデータを収集し、X-Rayサービスに送信します。これによりAPIで直接通信するよりも簡単にデータの収集・分析が可能です。 ※2…2020/11/19現在の料金です。今後、リージョンによっては料金が変更になることがあります。

AWS X-Rayを利用するメリット3つ

AWS X-Rayを利用することで現在運用しているアプリケーション、または開発中のアプリケーションに対してさまざまなメリットがあります。そのうちの主なメリットとして次の3つを紹介します。

AWS X-Rayのメリット1:パフォーマンスの向上

AWS X-Ray を使うことで、アプリケーションのパフォーマンスに対するボトルネックを特定し改善できます。 AWS X-Ray のサービスマップにより、アプリケーション内のサービスやリソースの関係性、高いレイテンシーが発生している部分などをリアルタイムに視覚化して表示できるため、パフォーマンスに影響を与える部分を効率的にドリルダウンすることが可能です。

AWS X-Rayのメリット2:アプリケーションの実行状況を確認できる

AWS X-Rayでは、アプリケーション全体でのユーザーリクエストをトレースできます。 アプリケーションを構成する個々のコンポーネントによりデータを収集するため、エンドツーエンドでアプリケーションの実行状況を把握することが可能です。

AWS X-Rayのメリット3:根本問題を検出できる

AWS X-Rayを使うことで、アプリケーションの問題について根本原因を調べられます。 X-Rayではトレースデータに注釈のメタデータを付与してフィルタリングする機能があり、これによって原因のパターンを発見・解決できます。

AWS X-Rayと連携できるサービス4つ

AWS X-Ray は以下の4つのサービスと連携できます。 ・Amazon EC2 ・Amazon EC2 Container Service (Amazon ECS) ・AWS Lambda ・AWS Elastic Beanstalk まだ上記のAWSを利用してサービスを構築したことがない、これから構築しようと考えている方は、AWSのblackbeltなどに参加してみるのも良いでしょう。

AWS X-Rayと連携できるサービス1:Amazon EC2

Amazon Elastic Compute Cloud (Amazon EC2)は安全でサイズ変更が可能な仮想サーバをクラウド内で提供するウェブサービスです。 数分で仮想サーバを作ることができ、サイズ変更や可用性の設定なども自由にカスタマイズ可能です。最小限のコストで始められ、必要に応じてプロセッサやネットワーク、GPUなどのリソースを追加できます。また、同じAWS上のあらゆるサービスと容易にかつ安全に連携することが可能です。 X-Rayと連携することでEC2上に構築されたサーバがたとえ膨大であっても、サービスマップで開発ユーザーに対して分かりやすく可視化できます。EC2とX-Rayを連携するには、サーバでX-Rayデーモンを実行する必要があります。インスタンスの起動時にユーザーデータスクリプトを使用してデーモンを自動的に開始させます。 Linuxの場合(例) #!/bin/bash curl https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-3.x.rpm -o /home/ec2-user/xray.rpm yum install -y /home/ec2-user/xray.rpm Windows(例) if ( Get-Service "AWSXRayDaemon" -ErrorAction SilentlyContinue ) { sc.exe stop AWSXRayDaemon sc.exe delete AWSXRayDaemon } $targetLocation = "C:\Program Files\Amazon\XRay" if ((Test-Path $targetLocation) -eq 0) { mkdir $targetLocation } $zipFileName = "aws-xray-daemon-windows-service-3.x.zip" $zipPath = "$targetLocation\$zipFileName" $destPath = "$targetLocation\aws-xray-daemon" if ((Test-Path $destPath) -eq 1) { Remove-Item -Recurse -Force $destPath } $daemonPath = "$destPath\xray.exe" $daemonLogPath = "$targetLocation\xray-daemon.log" $url = "https://s3.dualstack.us-west-2.amazonaws.com/aws-xray-assets.us-west-2/xray-daemon/aws-xray-daemon-windows-service-3.x.zip" Invoke-WebRequest -Uri $url -OutFile $zipPath Add-Type -Assembly "System.IO.Compression.Filesystem" [io.compression.zipfile]::ExtractToDirectory($zipPath, $destPath) New-Service -Name "AWSXRayDaemon" -StartupType Automatic -BinaryPathName "`"$daemonPath`" -f `"$daemonLogPath`"" sc.exe start AWSXRayDaemon

AWS X-Rayと連携できるサービス2:Amazon EC2 Container Service

Amazon Elastic Container Service (Amazon ECS) は、フルマネージド型のコンテナサービスです。Amazon ECSではAWS Fargateというサーバレスコンピューティングエンジンを利用できます。 プロビジョニングが不要でアプリケーション単位でリソースの指定、管理ができるため、EC2と比べてよりコストの削減、セキュリティの強化が期待できます。 x-rayと連携するメリットとしてはEC2と同様でサービスマップの可視化による全体像の把握が容易になる点が挙げられます。 ECSとx-rayを連携するにはECSにてx-rayデーモンを実行します。x-rayデーモンを実行するには公式のdockerイメージを使用します。

AWS X-Rayと連携できるサービス3:AWS Lambda

AWS Lambdaはサーバをプロビジョニングすることなく、コードを実行するときだけ必要な分のみリソースを利用するサービスです。料金は、コードの実行に使用した時間分のみ発生します。 コードの実行に必要なスケーリングも自動的に行われるため、ユーザーはリソースの管理を一切する必要がありません。lambdaとX-Rayを連携することで、手元で開発したコードのパフォーマンスを迅速にモニタリングできます。

AWS X-Rayと連携できるサービス4:AWS Elastic Beanstalk

AWS Elastic BeanstalkはJava、.NET、php、Node.js、Python、ruby、Go および docker を使用して開発されたアプリケーションやサービスを、apache、nginx、passenger、IIS など使用するのに慣れたサーバでデプロイおよびスケーリングするための、使いやすいサービスです。 ユーザーがコードをアップロードするだけで、サーバのデプロイから、ロードバランシング、自動スケーリング、さらにアプリケーションのヘルスチェックまでを自動的に行ってくれます。 また、AWS Elastic BeanstalkにはAWS X-Rayエージェントが予め含まれているため、アプリケーションをX-Ray SDKと統合するのみで使用を開始できます。

AWS X-Rayの使い方

x-rayの使い方はとても簡単です。各サービス上でX-Rayデーモンを実行する必要があります。AWS X-RayデーモンはUDP2000を使用して生のセグメントデータを収集、X-Ray SDKと連携しX-Rayサービスに送信します。 この記事ではAWS Elastic Beanstalk にて用意されているサンプルアプリのテンプレートをデプロイし、X-Rayを使う方法を簡単に解説したいと思います。

環境構築方法

①まずは以下のX-Rayのページより「AWS X-Rayを開始する」ボタンを押します。 【公式】AWS X-Ray ②ルートユーザーでログインしたら 「今すぐ始める」ボタンを押します。 ③サンプルアプリケーションまたは独自のアプリケーションを選択画面で サンプルアプリケーションの起動 (Node.js)を選択し「続行」ボタンを押します。 ④「サンプルアプリケーションを起動」するボタンを押して、サンプルアプリケーションを起動します。 ⑤テンプレートの準備で「テンプレートの準備完了」、テンプレートソースで「Amazon S3 URL」が選択された状態で、「次へ」ボタンを押します。 ⑥サブネットとVPCを選択して、「次へ」ボタンで進み、最後に「スタックの作成」ボタンを押します。※スタック名はデフォルトで「X-Ray Sample」となっていますが変更しても構いません。 ⑦数分後、X-Ray Sampleが「Create_Complete」となっていれば、作成完了です。 ⑧出力タブからElasticBeanstalkEnvironmentURLを検索してブラウザでアクセスしてみます。 ⑨アプリケーションにアクセスできたら、元画面で「完了」を押すとX-Rayのサービスマップ画面が開きます。

フィルタリングの設定方法

フィルタリングを使用するには、グループを作成し、フィルター式を記述します。 [グループ]→[グループの作成] 名前:任意のグループ名を入力します。 フィルタ式:フィルター式を入力します。 (例)応答時間が5秒を超えるリクエスト responsetime > 5 [グループの作成]ボタンを押して作成完了です。 サービスマップに戻り、画面上部の検索窓左部分で作成したグループを選択すると 設定したトレース式に該当するトレースが表示されます。

複数条件で行う場合

複数条件で行う場合は、以下のようにフィルター式でANDを使い記述します。 (例)合計時間が5〜8秒のリクエスト duration >= 5 AND duration <= 8

AWS X-Rayの導入事例3選

X-Rayは数多くの企業のアプリケーションで導入され、さまざまな問題を解決しています。 下記が主な導入先企業の一例になります。 COMCAST ConnectWise THOMSOM REUTERS skyscanner AirAisa cookpad cimpress VTEX Zowdow

AWS X-Rayの導入事例1:ConnectWise

フロリダ州タンパを拠点とするConnectWiseのAWS X-Ray導入事例について紹介します。 ConnectWiseのソフトウェアは毎日約75,000人が利用しており、アプリケーションの問題に迅速な対応が求められております。数分で終わる処理が数時間もかかってしまうトラブルも起きていたこともあり、以前利用していたモニタリングソリューションでは解決できませんでした。 現在はAmazonCloudWatchとAWS X-Rayを利用してアプリケーションとインフラストラクチャの完全な可視性を実現することで、問題の特定から解決まで5分もかからなくなっています。

AWS X-Rayの導入事例2:Comcast

動画配信を提供するComcastでの導入事例です。 動画配信で日々サービスを拡張しているComcastでは、AWSを利用して毎週にようにインフラストラクチャのデプロイを行っており、その膨大なサービスのパフォーマンスの監視にX-Rayを導入しています。

AWS X-Rayの導入事例3:クックパッド

日本でもおなじみのお料理レシピアプリのクックパッドでは、積極的にAWSを活用してインフラストラクチャを構築していることもあり、AWS X-Rayを導入・検証中のようです。 ただし、クックッパッドではほとんどのサービスがRubyを用いて実装されており、当時AWS X-Rayが提供していたInstrumented libraryは、Ruby非対応であったため、クックパッドの開発者が自作されたようです。自作されたInstrumented libraryはOSSとして公開もされています。 公式な情報としてはx-rayは導入のみで、活用例は今のところ公開されていませんが、AWS上の自社サービスのパフォーマンス状況を可視化できているようです。

AWS X-Rayを活用しよう

AWS X-Rayは導入方法もシンプルで、設定によって非常に細かいところまでデータをトレースし活用できます。費用も無料枠が大きく、また追加料金も非常に低く設定されているため、利用コストを抑えられます。 サービスのパフォーマンス状況などを可視化して把握するために、まずは導入してみるのも良いでしょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】