アプリケーションがクラッシュして、何も分からない状況に陥ったことはありますか?
クライアントはサービスが停止していることをあなたに通知しましたか?
これは難しい状況に違いありません。長年にわたり、NodeJS は、迅速なマイクロサービスと API 開発のために広く使用される JavaScript フレームワークになりました。 NodeJS 上でワークロードを実行する場合、重要なメトリクスを適切に監視することが重要になります。
アプリケーションとサーバーのパフォーマンスやその他のメトリクスの監視に役立つ、次の Node.JS 監視ツールを見てみましょう。
PM2
PM2 は、 新人開発者や熟練開発者がアプリケーションを常に稼働状態にするために使用する最も有名なツールです。 PM2 は、ライブ運用ワークロードを実行し、CLI または Web インターフェイスから監視するために使用されます。これを NPM モジュールとしてインストールできます。
PM2 はエンタープライズ対応のソリューションであり、すぐに使用できる次の機能を提供します。
- 単一サーバー上の複数の NodeJS アプリケーションの管理
- アプリケーションとエラーのログ管理
- アプリケーションの健全性とメトリクスを監視するための Web インターフェイスの統合
- NodeJS アプリケーションの自動クラスタリング
- アプリケーションのホットリロード。
- 起動スクリプトのサポート
- Web インターフェースへのログストリーミング
PM2 を始める
PM2 をインストールするには、 NPM が インストールされていることを確認してください。 NPM のインストールとバージョンを検証するには、以下のコマンドを使用します。
npm --version
NPM がインストールされている場合、このコマンドにより NPM のバージョンが表示されます。
さらに、以下のコマンドを使用して PM2 をインストールします。
npm install -g pm2
グローバル フラグ
-g
モジュールをインストールし、コマンドとしてグローバルに使用できるようにします。 PM2 を使用してアプリケーションを起動するには、NodeJS プロジェクトが含まれるフォルダーに移動し、以下のコマンドを実行します。
pm2 start <start-filename> --name myapp
上記のコマンドは、最初の引数で指定されたファイルを使用して NodeJs アプリケーションを起動します。また、アプリケーションに
myapp
という名前を付けます。
pm2
を使用して NodeJS アプリケーションを実行すると、サービスが停止しないことが保証され、停止した場合はアプリケーションの自動再起動が試行されます。
Web インターフェースでライブ監視を有効にするには、 ここで 登録する必要があります。キーが生成されると、サーバー上の PM2 を Web インターフェイスに接続する手順が表示されます。
セマテキスト
Sematext は フルスタック監視を提供します。フルスタックとは、インフラストラクチャとアプリケーションの可用性とパフォーマンス、メトリクス、ログ、フロントエンドのユーザー エクスペリエンス、API の健全性とパフォーマンス、SSL 証明書などを完全に可視化できることを意味します。
Sematext には、NodeJS を含む 100 以上の統合があります。その一部を次に示します。
- Web サーバー – Nginx、Apache
- データベース – MySQL、MariaDB、PostgreSQL、Redis
- コンテナ – Kubernetes、Docker、Rancher
- その他の言語 – PHP、Scala、Python、Go、Java
- AWS – EC2、ELB、S3、Aurora
他にもたくさん…
NodeJS モニタリングは 、レイテンシ、リクエスト レート、ガベージ コレクション、異常、ワーカー、イベント、ハートビートなどのモニタリングに役立ちます。美しい既製のダッシュボードでデータを視覚化することも、必要に応じてカスタムのダッシュボードを作成することもできます。
問題が発生した場合は、Slack、WebHook、PageDuty、MS Teams などを通じて通知を受け取ります。Sematext は、オールインワンの包括的な監視およびログ分析ソリューションを提供します。 デモを 確認してプラットフォームを体験できます。
稼働時間の向上
Better Uptime は 、稼働時間の監視、インシデント管理、およびステータス ページを 1 つの美しくデザインされた製品に組み合わせた最新の監視サービスです。
セットアップには 3 分かかります。その後、Node.js アプリが正しく動作しないか、完全に動作しなくなった場合は、電話、メール、または Slack アラートが届きます。主な機能は次のとおりです。
- HTTP、Ping、API、SSL および TLD の有効期限、Cron ジョブのチェック
- 無制限の通話アラート
- 簡単なオンコールスケジュール設定
- インシデントのスクリーンショットとエラーログ
- Slack、Teams、Heraku、AWS、その他 100 以上の統合
アプメトリクス
Appmetrics は 、IBM によって管理および保守されているオープンソース プロジェクトです。このプロジェクトは、データ トランザクション、ネットワーク速度、データベース クエリのパフォーマンス、CPU とメモリの使用率、ガベージ コレクションなど、さまざまなアクティビティにわたる優れたアプリケーション メトリクスを収集するための最低限の機能を提供することに重点を置いています。
appmetrics-dash のようなプラグインと結合すると、アプリケーションを監視するための優れた Web インターフェイスが提供される可能性があります。
Appmetrics をミドルウェアとして使用して、監視アプリケーションを構築できます。
光線銃
Raygun は、 NodeJS を含む複数のプログラミング言語のアプリケーションのパフォーマンスを管理および監視するためのプラットフォームです。クラッシュ ログを使用して問題をリアルタイムでデバッグし、アプリケーション コードを分析し、コード自体から適切なエラー ポイントを見つけるのに役立ちます。
機能の一部を以下に示します。
- ライブで正確なエラーレポートを提供します
- フルスタックエラーレポートをサポート
- リアルタイムのユーザーセッション監視
- サーバーのパフォーマンス監視とボトルネックのリアルタイム検出
Raygun は、ミッションクリティカルなアプリケーションに時間と資金を投資する価値があります。優れた ROI につながる洞察が得られます。
エクスプレスステータスモニター
Express Status Monitoring は 、ExpressJS の監視専用のオープンソース ツールです。 ExpressJS が NodeJS で使用される最も人気のある Web フレームワークであることは周知の事実です。
上のスナップショットからわかるように、応答時間、リクエスト頻度、ステータス コード、CPU/メモリ使用率、平均負荷を監視できます。
クリニックJS
Clinic.js は 、NodeJS アプリケーションと統合して重要なパフォーマンス パラメーターを監視し、そこから取得するために使用できるライブラリです。これは、 Doctor 、 Bubbleprof 、 Flame の 3 つの主要なツールを組み合わせたものです。これらの各ツールは、さまざまなメトリクスの監視に使用されます。
クリニックJSドクター
- 健全性とヒューリスティックのメトリクスを収集する
- アプリケーションにプローブを自動的に挿入する
- アプリケーションのパフォーマンスとライブメトリクスを表示するためのグラフィカルインターフェイスを提供します
- アプリケーションを最適化するための推奨事項を生成する
ClinicJS Bubbleprof
- 内部アプリケーションの実行を説明するバブル グラフをプロットする
- 関数実行グラフを表示することでエラーを特定するのに役立ちます
- 非同期フックを使用してメトリクスを収集します
- 関数呼び出し間のレイテンシ情報を提供します
ClinicJS Flame
- 専用のCPUメトリクス監視
- アプリケーションの CPU パフォーマンスをライブ監視するためのグラフィカル UI
- メトリクスがヒットする最大値を特定するのに役立つフレーム グラフを生成します
- アプリケーションの CPU 消費アクティビティに関する洞察を提供します
ビジネスに必要な場合は、商用サポートをご利用いただけます。
アプリシグナル
AppSignal は 、Node.js HTTP 呼び出し、Express、Next.js、Postgress への自動インストルメンテーションを提供する商用製品です。
これを開始するには、必要なメトリクスを収集する軽量の AppSignal エージェントをサーバーにインストールする必要があります。大まかに言うと、次のことを行います。
- パフォーマンスを監視 – コードまたはインフラストラクチャを見つけて修正し、アプリケーションの可用性とパフォーマンスを低下させます。
- メトリクス – 自分にとって重要なものをダッシュボード上で視覚化します。
- 異常を検出 – 事態が期待どおりにならない場合に通知を受け取ります。
- サーバーを監視 – 別のサーバー監視ソフトウェアを入手しないでください。 CPU、ディスク、メモリ、ネットワークなどの標準的なリソース メトリックをすべて取得できます。
プロメテウス + グラファナ
そのアイデアは、Prometheus と Grafana という 2 つの強力なソフトウェアを組み合わせることです。
Prometheus に は prom-client と呼ばれる Nodejs 用のクライアントがあり、メトリクスを収集するために NodeJS サーバーにインストールされます。その後、同じサーバーまたはリモートに Grafana をインストールして、Prometheus からメトリクスを取得して視覚化できます。
要件に基づいて Grafana ダッシュボードを最初から作成することも、次の 2 つを利用することもできます。
これには両方のツールを知っている必要があります。 Prometheus の学習についてサポートが必要な場合は、この Udemy コース をチェックしてください。
結論
監視は無視されることが多いですが、アプリケーションの可用性にとっては非常に重要です。開発コストが重要な要素であるため、コードを分析し、パフォーマンスを監視し、エラーに関する洞察を提供するツールは、確かに大きな価値があります。時間と労力を節約し、クライアントに迅速な解決策を提供することで SLA を満たすのに役立ちます。