はじめに
今回は、ProgatePathを通して、監視ソフトNewRelic
とNewRelicの主要機能であるAPM
(ApplicationPerformanceMonitoring)について、確認していこうと思います。
監視ソフトとNewRelic
ProgatePathの内容に入る前に、主要な監視ソフトと併せてNewRelicの特徴を確認しておきたいと思います。
まず、主要な監視ソフトとして、以下のようなものが有名で現場でも見かけることが多いと思います。
それぞれの概要は以下の通りです。
(AIに聞いたので詳細は公式を確認しましょう!)
1.Datadog
- 特徴: クラウドベースの監視および分析プラットフォーム。インフラ、アプリケーション、ログ、メトリクス、分散トレーシング、セキュリティ、ユーザーエクスペリエンスを統合的に監視できるのが強み。マルチクラウド環境やコンテナ化されたインフラストラクチャに特に強く、アラートやダッシュボードのカスタマイズ性も高い。
- 適用分野: マイクロサービスアーキテクチャ、クラウドネイティブアプリケーション、大規模な分散システム。
2. Zabbix
- 特徴: オープンソースのエンタープライズ向け監視ツール。インフラストラクチャ(サーバー、ネットワークデバイス、VM、クラウドサービスなど)の監視が主な目的であり、エージェントを使用して詳細な監視が可能。大規模な環境でも効率的に動作し、コミュニティによる豊富なサポートがある。
- 適用分野: 企業やデータセンターのインフラ監視、中小規模から大規模環境。
3. Prometheus
Prometheus – Monitoring system & time series database
- 特徴: オープンソースの時系列データベースとモニタリングシステム。マイクロサービスアーキテクチャに適しており、Kubernetesなどのコンテナ化環境で広く使われています。特に、メトリクスの収集とアラート機能が優れており、プル型のデータ収集方式を採用しています。Grafanaとの連携により、強力な可視化も可能です。
- 適用分野: クラウドネイティブなアプリケーション、Kubernetes環境、DevOps。
4. Nagios
- 特徴: 長年にわたり使用されているオープンソースの監視ツール。ホストやサービスのステータスを監視し、問題が発生した場合にアラートを送信します。プラグインによる機能拡張が容易で、ネットワークデバイスやアプリケーション、インフラの監視に適しています。
- 適用分野: ネットワークやサーバーの監視、中小規模のIT環境。
5. Grafana
Grafana: オープンなオブザーバビリティ・プラットフォーム | Grafana Labs
- 特徴: 時系列データの可視化に特化したオープンソースツール。Prometheus、Graphite、InfluxDBなど複数のデータソースと連携してデータを収集し、美しいダッシュボードで表示できます。アラート機能もあり、データ分析とモニタリングを統合的に行えます。
- 適用分野: 時系列データの可視化、ダッシュボードの作成、複数データソースの統合監視。
6. Splunk
- 特徴: 大量の機械生成データを収集・分析・可視化するためのプラットフォーム。特にログデータの収集・検索・分析に強く、セキュリティ情報イベント管理(SIEM)としても利用されています。データドリブンなインサイトを得るためのツールとして、多様な業界で利用されています。
- 適用分野: ログ管理、セキュリティ監視、データ分析、大規模エンタープライズ環境。
7. Elastic Stack (ELK Stack)
ELK Stack = Elasticsearch、Kibana、Beats、Logstash | Elastic
- 特徴: Elasticsearch、Logstash、Kibanaの3つを中心に構成されたオープンソースツール群。Elasticsearchがデータ検索、Logstashがデータ収集・処理、Kibanaがデータ可視化を担当。大量のログデータやイベントデータの分析に強く、リアルタイムのダッシュボード作成が可能です。
- 適用分野: ログ管理、リアルタイムデータ分析、検索エンジン。
8. AppDynamics
- 特徴: エンタープライズ向けのAPMツール。アプリケーションのパフォーマンスを監視し、ビジネスに直接影響を与える問題を検出・解決します。ビジネス変数とアプリケーションパフォーマンスを関連付けることで、ITとビジネス部門のギャップを埋めることが可能です。
- 適用分野: 大規模エンタープライズアプリケーション、トランザクション監視。
9. Dynatrace
Dynatrace | Modern cloud done right
- 特徴: AI駆動のモニタリングプラットフォームで、フルスタックの監視と自動化されたルート原因分析を提供。マイクロサービス、クラウド、コンテナ、仮想化環境に強く、アプリケーション、インフラストラクチャ、ユーザーエクスペリエンスの包括的な可視化が可能です。
- 適用分野: 大規模エンタープライズ、クラウドネイティブアプリケーション、DevOps。
NewRelicの最大の特徴として、オールインワンプラットフォームであらゆる統合が可能な点や近年主流となっているマイクロサービスアーキテクチャへの対応が挙げられるかと思います。
- 包括的なモニタリング機能
- フルスタック監視: New Relicは、アプリケーションパフォーマンス管理(APM)に加えて、インフラストラクチャ、ログ、分散トレーシング、リアルユーザーモニタリング(RUM)、およびブラウザやモバイルのパフォーマンス監視など、すべてを統合的に提供しています。これにより、単一のプラットフォームでエンドツーエンドの可視化が可能になります。
- 高度な分散トレーシング
- 複雑なマイクロサービスアーキテクチャに対応: New Relicの分散トレーシング機能は、マイクロサービスやコンテナ化されたアプリケーションにおいて、リクエストがどのように複数のサービスを経由して処理されるかを詳細に追跡できます。これにより、パフォーマンスのボトルネックや問題の根本原因を迅速に特定することができます。
公式でも紹介されています。あらゆるメトリクスを収集して可観測性を高められる点は魅力的ですね!今回はそんなNewRelicについて、ProgatePathを進めながら理解を深めていきたいと思います!
ProgatePath
以下のURLを開きます、「New Relic を使ってアプリケーションを改善しよう」という講座にアクセスできるはずです。まずはアカウントの準備から進めていきましょう。
事前準備
上記のURLを開き、Progateのアカウントを作成してログインしましょう。
以下の説明があるように、実際にアプリケーションの監視と得られた情報から改善するところまで体験できるようです。
Express(Node.js) の API と React のフロントで構成された SNS のアプリケーションを題材に、New Relic APM と New Relic Browser を導入し、 New Relic の機能を活用してアプリケーションを改善する方法を学びます。
「はじめる」を押すと以下のような画面になるので、緑色の「オンラインIDEを起動する」を選択しましょう。ローカル環境に必要なパッケージをインストールして、演習を進めることもできますが、環境構築やパッケージバージョンの差異などでつまづくと面倒なので、オンラインIDEを使用することを強くお勧めします。
GitHubの認証を促されるのでログインすると、以下のような画面になるので、緑色の「Resume this codespace」を選択します。ブラウザ上で開発環境が開かれます。
あとは、ProgatePathの手順に従って、サンプルアプリケーションのセットアップを行っていきましょう。
下記のようなサンプルアプリをlocalhostで開くことができたら準備完了です。
次にNewRelicのアカウントを作成していきます。
NewRelicでは、全機能使い放題のユーザー1名と100GBのデータ転送が無料のフリープランがあります。
アカウントを作成してログインすると、以下のような画面になりますので、引き続きProgatePathのガイドに従って、NewRelicへの連携を進めていきます。
NewRelicAPMとNewRelicBrowserを導入する
こちらはProgatePathを実際に進めて体感していただく方がよいかと思いますので、手順などは割愛させていただきます。
少しだけお伝えすると、NewRelicの主要機能APMとBrowserについて、NewRelicコンソールから確認できるようにAPIキーの連携作業を行います。この章では、どのような手順で自身のアプリケーションの情報をNewRelicに連携するのかを知ることができます。
APMは、サンプルアプリケーションのパフォーマンスとして、サービスレベルを可視化したり内部で実行されている処理を確認できるような機能です。
APMによるアプリのパフォーマンス改善 | New Relic Documentation
当社のAPM(Application Performance Monitoring)は、貴社の全てのアプリケーションとマイクロサービスについて統合されたモニタリングサービスを提供します。最新のスタックの数百もの依存関係から、アプリのシンプルなウェブトランザクションタイムとスループットまで、すべての項目を監視します。事前に構築されたカスタムダッシュボードを通じて、メトリクス、イベント、ログ、トランザクション(MELT)を監視することで、アプリの健全性をリアルタイムで追跡します。
Browserは、ユーザーが使用するブラウザのパフォーマンスをモニタリングする機能です。
Browserモニタリングを使用した、ウェブサイトのパフォーマンス改善方法 | New Relic Documentation
当社のブラウザ監視は、リアルユーザーモニタリング(RUM)ソリューションを提供します。さまざまなウェブブラウザ、デバイス、オペレーティングシステム、ネットワークからサイトに移動する際の、エンドユーザーの速度とパフォーマンスを測定します。ただし、ブラウザモニタリングは、初回ページの読み込みについて、情報提供をはるかに超えるものです。これを使用して、全ページのライフサイクルデータを測定し、顧客満足度の確保に必要な情報の取得を開始します。
連携が完了すると以下のようにアプリごとの管理画面にアクセスすることができるようになります。
Browserの場合、以下のような画面になります。
シミュレーションの実施
ダウンロードしたプロジェクトの中にシミュレーション用のスクリプトが含まれており、こちらを実行することで、擬似的なアプリケーションへのアクセスが行われNewRelicに諸々のメトリクスが連携されていきます。
上記のNewRelicコンソールのAPMの方を開いてグラフをみてみると、データが連携されたことがわかります。
Browserは以下のように表示されました。
ユーザーがアプリケーションにアクセスした際のページの表示や切り替わり速度やアクセス元エリア、ユーザー体験を確認することがわかります。
エラーの検知と対処
Browserという機能のsummary画面でErrorRateという指標で突出したエラーが表示されています。該当のグラフを選択すると、以下のようになんのエラーが起きているか確認することができます。
今回のシミュレーションではTypeErrorが起きているようです。
エラーの原因となっているページにサンプルアプリケーション側で遷移してブラウザの開発者ツールでエラーを確認して、改善対応を行なっていきます。このあたりも実際にProgatePathを通して実践してみることをお勧めいたします。
実際に対応してみると、NewRelicでは、ブラウザから取得できる情報が多いので、適切に対処できることが体感できます。
パフォーマンスの課題を見つける
今回のサンプルアプリケーションはSPAであり、ページ更新に必要なデータを非同期通信で取得します。その際にデータ取得に時間がかかっている部分をAJAXというメニューで確認することができます。
Sort by
の項目を Response time
に変更して、応答時間順で並べ替えて確認しています。GET /api/postsで時間がかかっていることがわかりました。
続いて、APMに戻り、sort by
を Slowest average response time
に変更して、平均応答時間の長い順に確認してみます。
GET /api/postsのトランザクションで時間がかかっていることがわかります。
同じ画面の下部のtracesから該当のTransactionのGET /api/postsを選択します。
transaction内の詳細な処理と所要時間が確認できました。またページ後半のTransaction traceでは、時間がかかっている処理として、Prisma post findUniqueを特定することができました。
Query optimization | Prisma Documentation
こちらもサンプルアプリケーションのコード修正を行い、パフォーマンスが正常なったことを確認するところまで実践することができます。
まとめ
今回は、ProgatePathのNewRelic講座を通して、NewRelicのAPMとBrowser機能について確認していきました。NewRelicは豊富に機能が用意されていますので、他の機能も要チェックですね!
最後までご覧いただきありがとうございました。
コメント