ホームページ ウェブフロントエンド jsチュートリアル Node.js でのログ記録とモニタリング: ベスト プラクティス

Node.js でのログ記録とモニタリング: ベスト プラクティス

Nov 07, 2024 am 12:56 AM

Logging and Monitoring in Node.js: Best Practices

アプリケーションの健全性を維持し、問題を迅速に特定し、パフォーマンスを向上させるには、効果的なロギングと監視が不可欠です。この記事では、Node.js アプリケーションのロギングと監視について詳しく説明し、ロギング レベルの選択、構造化ログの設定、監視ツールとの統合、Winston と Elasticsearch を使用するためのベスト プラクティスなどの重要なトピックを取り上げます。

ロギングとモニタリングの概要

ロギングは、アプリケーションからリアルタイムのイベント、エラー、その他の重要な情報を取得するのに役立ちますが、モニタリングにはアプリケーションのパフォーマンス メトリクスを長期にわたって追跡することが含まれます。これらを組み合わせることで、アプリケーションの健全性に関する重要な洞察が提供され、プロアクティブな問題解決が可能になります。

Node.js での基本的なログの設定

組み込みのコンソール オブジェクトは単純なログ機能を提供しますが、実稼働アプリケーションでは専用のログ ライブラリの方が堅牢です。

基本的なコンソールのロギング

console.log("Server started on port 3000");
console.warn("This is a warning");
console.error("Error occurred while processing request");
ログイン後にコピー
ログイン後にコピー

ただし、複雑なアプリケーションでは、コンソール ログには、ログ レベル制御の欠如やログの永続性の欠如などの制限があります。

ウィンストンの紹介

Winston は、複数のログ レベル、トランスポート (ログ宛先)、および構造化ログを提供する Node.js の人気のログ ライブラリです。

  1. ウィンストンをインストールします:
   npm install winston
ログイン後にコピー
ログイン後にコピー
  1. ウィンストンのセットアップ
   const winston = require("winston");

   // Configure logger
   const logger = winston.createLogger({
       level: "info",
       format: winston.format.combine(
           winston.format.timestamp(),
           winston.format.json()
       ),
       transports: [
           new winston.transports.Console(),
           new winston.transports.File({ filename: "app.log" })
       ]
   });

   // Logging examples
   logger.info("Server started on port 3000");
   logger.error("Database connection failed");
ログイン後にコピー
ログイン後にコピー

適切なログレベルの選択

ログ レベルは、重要性に基づいてログ メッセージを分類します。一般的なログ レベルは次のとおりです:

  • エラー: データベースやサーバーの障害など、即時の対応が必要な重大な問題。
  • 警告: 非推奨の API など、重大ではない問題。
  • 情報: サーバーの起動やシャットダウンなどの一般的なアプリケーション情報。
  • デバッグ: 変数値など、開発中に役立つ詳細情報。

Winston でのログ レベルの構成

logger.level = "debug"; // Sets the minimum log level to debug, capturing all messages.
ログイン後にコピー
ログイン後にコピー

本番環境では、不要なログ データを避けるために、ログ レベルを info または warn に保つことが最善です。

一貫性を保つための構造化されたロギング

構造化ログにより、一貫した形式を維持することで、ログのフィルタリングと分析が容易になります。

ログへのメタデータの追加

user_id や request_id などのメタデータは、ログ内の特定のアクションを追跡するのに役立ちます:

logger.info("User login successful", { user_id: "12345" });
logger.error("Failed to fetch user data", { user_id: "12345", error: "Database unavailable" });
ログイン後にコピー
ログイン後にコピー

Elasticsearch との統合による一元的なロギング

Elasticsearch は、一元的なログ管理と検索機能に広く使用されています。

  1. Elasticsearch と Elasticsearch Transport をインストールします
console.log("Server started on port 3000");
console.warn("This is a warning");
console.error("Error occurred while processing request");
ログイン後にコピー
ログイン後にコピー
  1. Elasticsearch トランスポートを構成する
   npm install winston
ログイン後にコピー
ログイン後にコピー

この設定により Elasticsearch にログが送信され、リアルタイムのログ検索と分析に Kibana を使用できるようになります。

Prometheus と Grafana を使用したアプリケーション メトリクスの監視

モニタリングは、CPU 使用率、メモリ、応答時間などのアプリケーションのパフォーマンス指標を追跡し、アプリケーションの安定性を確保します。

Node.js を使用した Prometheus のセットアップ

  1. Prometheus クライアント ライブラリをインストールします
   const winston = require("winston");

   // Configure logger
   const logger = winston.createLogger({
       level: "info",
       format: winston.format.combine(
           winston.format.timestamp(),
           winston.format.json()
       ),
       transports: [
           new winston.transports.Console(),
           new winston.transports.File({ filename: "app.log" })
       ]
   });

   // Logging examples
   logger.info("Server started on port 3000");
   logger.error("Database connection failed");
ログイン後にコピー
ログイン後にコピー
  1. メトリクスの作成とエクスポート
logger.level = "debug"; // Sets the minimum log level to debug, capturing all messages.
ログイン後にコピー
ログイン後にコピー
  1. メトリクスエンドポイントを公開
logger.info("User login successful", { user_id: "12345" });
logger.error("Failed to fetch user data", { user_id: "12345", error: "Database unavailable" });
ログイン後にコピー
ログイン後にコピー

Grafana で視覚化する

Grafana は、Prometheus メトリクスからダッシュボードを作成するための強力なツールです。 Prometheus を Grafana のデータ ソースとして統合し、応答時間やエラー率などの指標を視覚化します。

実際の使用例: 電子商取引でのログ記録と監視

高いパフォーマンスと信頼性を維持するためにログ記録と監視が重要である電子商取引プラットフォームを考えてみましょう。

  1. すべてのトランザクションをログに記録: order_id や user_id などのメタデータを含む、構造化されたログを使用して注文と支払いのイベントをキャプチャします。
  2. エラー追跡: Winston を使用して、支払い失敗などのエラーをスタック トレースやメタデータとともにログに記録し、デバッグを高速化します。
  3. サーバーの状態を監視: 応答時間とリクエスト数を監視するように Prometheus を設定し、Grafana で視覚化してリアルタイムの洞察を得ることができます。
  4. アラートの設定: メトリクスに基づいてアラートを構成します。たとえば、リクエスト期間がしきい値を超えた場合、管理者にアラートを送信します。

この設定により、アプリケーションの健全性を包括的に把握できるようになり、問題を事前に検出して解決できるようになります。

結論

Node.js での堅牢なログ記録と監視の実装は、信頼性を維持し、迅速なトラブルシューティングを確実に行うために不可欠です。 Winston、Elasticsearch、Prometheus、Grafana などのツールを使用すると、構造化ログをキャプチャして一元管理し、重要なパフォーマンス メトリクスを効果的に監視できます。

以上がNode.js でのログ記録とモニタリング: ベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

JavaScriptとWeb:コア機能とユースケース JavaScriptとWeb:コア機能とユースケース Apr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScript in Action:実際の例とプロジェクト JavaScript in Action:実際の例とプロジェクト Apr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptエンジンの理解:実装の詳細 JavaScriptエンジンの理解:実装の詳細 Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Python vs. JavaScript:開発環境とツール Python vs. JavaScript:開発環境とツール Apr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScript通訳者とコンパイラにおけるC/Cの役割 JavaScript通訳者とコンパイラにおけるC/Cの役割 Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーション Webサイトからアプリまで:JavaScriptの多様なアプリケーション Apr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

See all articles