あらゆるアプリケーション、特に運用環境では、監視とロギングは重要なコンポーネントです。これらは、アプリケーションの健全性、パフォーマンス、および潜在的な問題についての洞察を提供します。 Node.js アプリケーションでは、モニタリングにより応答時間、メモリ使用量、エラー率などのメトリクスを追跡するのに役立ち、ログ記録によりユーザー アクティビティ、エラー、システム パフォーマンスに関する重要なデータがキャプチャされます。この記事では、Node.js アプリケーションの効果的なログ記録と監視手法について、実際の例とコード スニペットを交えて説明します。
ログとモニタリングにより、以下に関する洞察が得られます。
Node.js には、基本的なログ機能 (console.log()、console.error() など) を提供する組み込みコンソール オブジェクトがあります。ただし、スケーラブルなアプリケーションの場合、構造化され構成可能なロギングが不可欠です。
// Basic logging in Node.js console.log("Application started"); console.error("An error occurred");
本番グレードのアプリケーションの場合は、Winston や Bunyan などの構造化ロガーを使用します。
Winston は、構成可能なログ レベルを可能にし、複数のトランスポート (ファイル、コンソール、HTTP など) をサポートする Node.js の人気のログ ライブラリです。
const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ] }); // Log messages logger.info("This is an informational message"); logger.error("This is an error message");
Prometheus はアプリケーションのメトリクスを収集するための強力なツールであり、Grafana を使用すると、詳細なダッシュボードを通じてこれらのメトリクスを視覚化できます。
prom-client パッケージをインストールします:
npm install prom-client
Node.js アプリケーションでリクエスト期間やアクティブなリクエストなどのメトリクスを定義します。
const client = require('prom-client'); // Create metrics const requestDuration = new client.Histogram({ name: 'http_request_duration_seconds', help: 'Duration of HTTP requests in seconds', labelNames: ['method', 'status'] }); const activeRequests = new client.Gauge({ name: 'active_requests', help: 'Number of active requests' }); // Record metrics app.use((req, res, next) => { const end = requestDuration.startTimer(); activeRequests.inc(); res.on('finish', () => { end({ method: req.method, status: res.statusCode }); activeRequests.dec(); }); next(); });
Prometheus にメトリクスを公開するエンドポイントを作成します:
// Basic logging in Node.js console.log("Application started"); console.error("An error occurred");
Prometheus を Grafana に接続し、カスタム ダッシュボードを作成して、リクエスト レート、レイテンシー、メモリ使用量などのメトリクスを視覚化します。
ヘルスチェックはアプリケーションの状態を監視し、可用性に影響を与える可能性のある問題を警告します。サーバーの応答、メモリ使用量、データベース接続などの基本的なチェックを含めることができます。
const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ] }); // Log messages logger.info("This is an informational message"); logger.error("This is an error message");
ヘルスチェックを AWS CloudWatch や Google Cloud Monitoring などのモニタリング ツールと統合して、問題が発生したときにアラートを作成します。
AWS で e コマース アプリケーションを実行し、1 秒あたり数百のリクエストを処理していると仮定します。堅牢なロギングとモニタリングを設定する方法は次のとおりです:
Winstonを使用して、ユーザーリクエスト、成功したトランザクション、エラーなどの重要なアクションをすべて記録します。
npm install prom-client
Prometheus を使用して、リクエスト期間、アクティブなリクエスト、メモリ使用量などのメトリクスを追跡します。これは、トラフィックが多い時間帯のパフォーマンスの問題を特定するのに役立ちます。
Prometheus データを Grafana に接続し、応答時間、CPU 使用率、エラー率をリアルタイムで監視するためのダッシュボードをセットアップします。エラー率の急増やメモリ使用量の増加などの異常が通知されるようにアラートを構成します。
特に本番環境では、Node.js アプリケーションの管理とスケーリングには、効果的なロギングと監視が不可欠です。 Winston などのログ フレームワークを使用すると、構造化されたログをキャプチャできます。また、Prometheus や Grafana などの監視ツールを使用すると、パフォーマンス メトリクスを可視化し、問題のトラブルシューティングを迅速に行うことができます。これらのツールを実装すると、Node.js アプリケーションがスムーズに実行され、トラフィックが効率的に処理され、信頼性の高いエクスペリエンスをユーザーに提供できるようになります。
次の記事では、Node.js アプリケーションの保護について検討し、HTTPS、CORS、データ暗号化などの技術について説明します。乞うご期待!
以上がNode.js アプリケーションの効果的なロギングとモニタリングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。