これらの重要なメトリクスを使用して Node.js 監視をレベルアップします

WBOY
リリース: 2024-08-09 07:15:42
オリジナル
553 人が閲覧しました

Level Up Your Node.js Monitoring with These Essential Metrics

Node.js 開発者として、アプリケーションをスムーズに実行し続けることは非常に重要です。しかし、内部で何が起こっているかをどうやって知ることができるのでしょうか?そこでメトリクスが登場します。この記事では、プロのように Node.js アプリケーションを監視し、最適化するのに役立ついくつかの主要なメトリクスについて説明します。

詳細については、ブログ投稿全文をご覧ください。

1. CPU使用率

?アプリの脳を健全に保ちます。

CPU 使用率を監視して、アプリケーション自体が過負荷になっていないことを確認します。

const os = require('os');

function getCPUUsage() {
  const cpus = os.cpus();
  const totalUsage = cpus.reduce((acc, cpu) => acc + cpu.times.user + cpu.times.system, 0);
  const totalIdle = cpus.reduce((acc, cpu) => acc + cpu.times.idle, 0);
  return totalUsage / (totalUsage + totalIdle) * 100;
}
ログイン後にコピー

2. メモリ使用量

?アプリがメモリを大量に消費しないようにしてください。

メモリ使用量を追跡してリークを防ぎ、パフォーマンスを最適化します。

const v8 = require('v8');

function getMemoryUsage() {
  const memoryUsage = process.memoryUsage();
  const heapStats = v8.getHeapStatistics();
  return {
    rss: memoryUsage.rss,
    heapTotal: memoryUsage.heapTotal,
    heapUsed: memoryUsage.heapUsed,
    external: memoryUsage.external,
    heapSizeLimit: heapStats.heap_size_limit
  };
}
ログイン後にコピー

3. イベントループラグ

⏱️ アプリの応答性を維持します。

イベント ループ ラグを監視して、非同期操作をスムーズに実行できるようにします。

const lag = require('event-loop-lag');

const lagMonitor = lag(1000);

function getEventLoopLag() {
  return lagMonitor();
}
ログイン後にコピー

4. HTTPリクエストレート

?アプリの人気を追跡します。

受信 HTTP リクエストの速度を監視してトラフィックを測定し、スケーリングを計画します。

const http = require('http');

let requestCount = 0;

http.createServer((req, res) => {
  requestCount++;
  // Your server logic here
}).listen(3000);

function getRequestRate() {
  const rate = requestCount;
  requestCount = 0;
  return rate;
}

setInterval(() => {
  console.log(`Request rate: ${getRequestRate()} requests/second`);
}, 1000);
ログイン後にコピー

5. データベース接続プール

?‍♂️ データベース接続をチェックしてください。

接続プールを監視して、リソースの効率的な使用を確保します。

const mysql = require('mysql');

const pool = mysql.createPool({
  connectionLimit: 10,
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database'
});

function getConnectionPoolStats() {
  return {
    total: pool._allConnections.length,
    free: pool._freeConnections.length,
    queued: pool._connectionQueue.length
  };
}
ログイン後にコピー

6. ガベージ コレクションのメトリクス

?️ アプリのメモリをクリーンな状態に保ちます。

ガベージ コレクションを監視してメモリ管理を最適化します。

javascriptCopyconst v8 = require('v8');

const gcStats = v8.getHeapStatistics();

function getGCMetrics() {
  return {
    totalHeapSize: gcStats.total_heap_size,
    usedHeapSize: gcStats.used_heap_size,
    heapSizeLimit: gcStats.heap_size_limit
  };
}
ログイン後にコピー

7. アクティブなハンドルとリクエスト

?進行中の操作を追跡します。

アクティブなハンドルとリクエストを監視して、適切なリソース管理を確保します。

javascriptCopyfunction getActiveHandlesAndRequests() {
  return {
    activeHandles: process._getActiveHandles().length,
    activeRequests: process._getActiveRequests().length
  };
}
ログイン後にコピー

8. エラー率

❌ 問題を常に把握してください。

アプリケーションのエラー率を監視して、問題を迅速に特定して解決します。

javascriptCopylet errorCount = 0;

process.on('uncaughtException', (error) => {
  errorCount++;
  // Log or handle the error
});

function getErrorRate() {
  const rate = errorCount;
  errorCount = 0;
  return rate;
}

setInterval(() => {
  console.log(`Error rate: ${getErrorRate()} errors/minute`);
}, 60000);
ログイン後にコピー

9. 応答時間

⏱️ ユーザーを満足させてください。

応答時間を監視して、迅速なユーザー エクスペリエンスを確保します。

javascriptCopyconst responseTime = require('response-time');
const express = require('express');

const app = express();

app.use(responseTime((req, res, time) => {
  console.log(`${req.method} ${req.url} - Response time: ${time}ms`);
}));

// Your routes here
ログイン後にコピー

10. サードパーティサービスの依存関係

?外部サービスによって速度が低下しないようにしてください。

アプリが依存するサードパーティ サービスのパフォーマンスを監視します。

javascriptCopyconst axios = require('axios');

async function checkExternalService(url) {
  const start = Date.now();
  try {
    await axios.get(url);
    const duration = Date.now() - start;
    console.log(`External service ${url} response time: ${duration}ms`);
  } catch (error) {
    console.error(`Error checking external service ${url}: ${error.message}`);
  }
}

// Check external services periodically
setInterval(() => {
  checkExternalService('https://api.example.com');
}, 60000);
ログイン後にコピー

おまけのヒント: 監視ツールを使用する

?️ モニタリングを強化しましょう!メトリクス収集を自動化し、より深い洞察を得るには、専用の監視ツールの使用を検討してください。
人気のあるオプションは次のとおりです:

  • プロメテウスとグラファナ
  • ニューレリック
  • データドッグ
  • AppDynamics

これらのツールは、Node.js アプリケーションのパフォーマンスを視覚化するための、すぐに使える監視ソリューションと美しいダッシュボードを提供します。
これらの追加のメトリクスとヒントを組み込むことで、Node.js アプリケーションの健全性とパフォーマンスをさらに包括的に把握できるようになります。効果的なモニタリングの鍵は、データを収集するだけでなく、データから得られる洞察を理解し、それに基づいて行動することであることを忘れないでください。モニタリングを楽​​しんでください!

結論

これらの重要なメトリクスを監視することで、Node.js アプリケーションのパフォーマンスと状態に関する貴重な洞察を得ることができます。知識は力であることを忘れないでください。これらの指標をすぐに利用できるため、アプリを最適化し、スムーズに実行し続けるための準備が整います。

アプリの監視についてサポートが必要な場合は、https://alerty.ai をチェックして、簡単なフロントエンド監視の詳細を確認してください。

監視を続けていただき、Node.js アプリが常に最高のパフォーマンスを発揮しますように! ?

以上がこれらの重要なメトリクスを使用して Node.js 監視をレベルアップしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!