對於任何應用程序,特別是在生產環境中,監控和日誌記錄都是關鍵組件。它們可以深入了解應用程式的運作狀況、效能和潛在問題。在 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 是 Node.js 中流行的日誌記錄庫,它允許配置日誌記錄等級並支援多種傳輸(例如檔案、控制台、HTTP)。
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 讓您可以透過詳細的儀表板來視覺化這些指標。
安裝舞會客戶端包:
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 上執行電子商務應用程序,每秒處理數百個請求。以下是如何設定強大的日誌記錄和監控:
使用 Winston 記錄所有關鍵操作,包括使用者請求、成功的交易和錯誤。
npm install prom-client
使用 Prometheus 追蹤請求持續時間、活動請求和記憶體使用等指標。這可以幫助識別高流量期間的效能問題。
將 Prometheus 資料連接到 Grafana 並設定儀表板來即時監控回應時間、CPU 使用率和錯誤率。配置警報以接收任何異常情況的通知,例如錯誤率激增或記憶體使用率過高。
有效的日誌記錄和監控對於管理和擴展 Node.js 應用程式至關重要,尤其是在生產環境中。 Winston 等日誌框架可讓您擷取結構化日誌,而 Prometheus 和 Grafana 等監控工具可提供效能指標的可見度並幫助您更快地解決問題。透過實作這些工具,您可以確保 Node.js 應用程式平穩運行、高效處理流量並為使用者提供可靠的體驗。
在下一篇文章中,我們將探討如何保護您的 Node.js 應用程序,討論 HTTPS、CORS、資料加密等技術。請繼續關注!
以上是Node.js 應用程式的有效日誌記錄和監控的詳細內容。更多資訊請關注PHP中文網其他相關文章!