Node.js アプリケーションの効果的なロギングとモニタリング

Susan Sarandon
リリース: 2024-11-01 02:30:02
オリジナル
518 人が閲覧しました

Effective Logging and Monitoring for Node.js Applications

あらゆるアプリケーション、特に運用環境では、監視とロギングは重要なコンポーネントです。これらは、アプリケーションの健全性、パフォーマンス、および潜在的な問題についての洞察を提供します。 Node.js アプリケーションでは、モニタリングにより応答時間、メモリ使用量、エラー率などのメトリクスを追跡するのに役立ち、ログ記録によりユーザー アクティビティ、エラー、システム パフォーマンスに関する重要なデータがキャプチャされます。この記事では、Node.js アプリケーションの効果的なログ記録と監視手法について、実際の例とコード スニペットを交えて説明します。

  1. ロギングとモニタリングの重要性
  2. Node.js でのログインのセットアップ
  3. Winston を使用した柔軟なロギング
  4. Prometheus と Grafana によるモニタリング
  5. ヘルスチェックの実施
  6. 実際の使用例: 本番環境でのロギングとモニタリング

ロギングとモニタリングの重要性

ログとモニタリングにより、以下に関する洞察が得られます。

  • アプリケーションの健全性: エラー、クラッシュ、または重大な問題に関するリアルタイムのアラート。
  • パフォーマンス メトリクス: サーバーの応答時間、メモリ使用量、負荷処理に関するデータ。
  • ユーザーアクティビティ: ユーザーリクエスト、成功したアクション、エラーを追跡します。
  • デバッグ: エラー ログとトレースを通じて問題を正確に特定することで、トラブルシューティングを迅速化します。

Node.js でのログインのセットアップ

Node.js には、基本的なログ機能 (console.log()、console.error() など) を提供する組み込みコンソール オブジェクトがあります。ただし、スケーラブルなアプリケーションの場合、構造化され構成可能なロギングが不可欠です。

基本的なロギングの例:

// Basic logging in Node.js
console.log("Application started");
console.error("An error occurred");
ログイン後にコピー
ログイン後にコピー

本番グレードのアプリケーションの場合は、WinstonBunyan などの構造化ロガーを使用します。

Winston を使用した柔軟なロギング

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 によるモニタリング

Prometheus はアプリケーションのメトリクスを収集するための強力なツールであり、Grafana を使用すると、詳細なダッシュボードを通じてこれらのメトリクスを視覚化できます。

ステップ 1: Node.js 用の Prometheus クライアントをインストールする

prom-client パッケージをインストールします:

npm install prom-client
ログイン後にコピー
ログイン後にコピー

ステップ 2: Prometheus メトリクスのセットアップ

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();
});
ログイン後にコピー

ステップ 3: メトリクスエンドポイントを公開する

Prometheus にメトリクスを公開するエンドポイントを作成します:

// Basic logging in Node.js
console.log("Application started");
console.error("An error occurred");
ログイン後にコピー
ログイン後にコピー

ステップ 4: Grafana で視覚化する

Prometheus を Grafana に接続し、カスタム ダッシュボードを作成して、リクエスト レート、レイテンシー、メモリ使用量などのメトリクスを視覚化します。

ヘルスチェックの実施

ヘルスチェックはアプリケーションの状態を監視し、可用性に影響を与える可能性のある問題を警告します。サーバーの応答、メモリ使用量、データベース接続などの基本的なチェックを含めることができます。

例: 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");
ログイン後にコピー
ログイン後にコピー

ヘルスチェックを AWS CloudWatchGoogle Cloud Monitoring などのモニタリング ツールと統合して、問題が発生したときにアラートを作成します。

実際の使用例: 本番環境でのロギングとモニタリング

AWS で e コマース アプリケーションを実行し、1 秒あたり数百のリクエストを処理していると仮定します。堅牢なロギングとモニタリングを設定する方法は次のとおりです:

ステップ 1: Winston を使用してロギングを実装する

Winstonを使用して、ユーザーリクエスト、成功したトランザクション、エラーなどの重要なアクションをすべて記録します。

npm install prom-client
ログイン後にコピー
ログイン後にコピー

ステップ 2: メトリクス収集用に Prometheus をセットアップする

Prometheus を使用して、リクエスト期間、アクティブなリクエスト、メモリ使用量などのメトリクスを追跡します。これは、トラフィックが多い時間帯のパフォーマンスの問題を特定するのに役立ちます。

ステップ 3: モニタリング用の Grafana ダッシュボードを作成する

Prometheus データを Grafana に接続し、応答時間、CPU 使用率、エラー率をリアルタイムで監視するためのダッシュボードをセットアップします。エラー率の急増やメモリ使用量の増加などの異常が通知されるようにアラートを構成します。

結論

特に本番環境では、Node.js アプリケーションの管理とスケーリングには、効果的なロギングと監視が不可欠です。 Winston などのログ フレームワークを使用すると、構造化されたログをキャプチャできます。また、Prometheus や Grafana などの監視ツールを使用すると、パフォーマンス メトリクスを可視化し、問題のトラブルシューティングを迅速に行うことができます。これらのツールを実装すると、Node.js アプリケーションがスムーズに実行され、トラフィックが効率的に処理され、信頼性の高いエクスペリエンスをユーザーに提供できるようになります。

次の記事では、Node.js アプリケーションの保護について検討し、HTTPS、CORS、データ暗号化などの技術について説明します。乞うご期待!

以上がNode.js アプリケーションの効果的なロギングとモニタリングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート