Pengelogan dan pemantauan yang berkesan adalah penting untuk mengekalkan kesihatan aplikasi, mengenal pasti isu dengan cepat dan meningkatkan prestasi. Dalam artikel ini, kami akan menyelami pengelogan dan pemantauan untuk aplikasi Node.js, meliputi topik utama seperti memilih tahap pengelogan, menyediakan log berstruktur, menyepadukan dengan alatan pemantauan dan amalan terbaik untuk menggunakan Winston dan Elasticsearch.
Pengelogan membantu menangkap peristiwa masa nyata, ralat dan maklumat penting lain daripada aplikasi, manakala pemantauan melibatkan penjejakan metrik prestasi aplikasi dari semasa ke semasa. Bersama-sama, mereka memberikan cerapan kritikal tentang kesihatan aplikasi, membolehkan penyelesaian isu proaktif.
Objek konsol terbina dalam menyediakan fungsi pengelogan yang mudah, tetapi perpustakaan pengelogan khusus lebih mantap untuk aplikasi pengeluaran.
console.log("Server started on port 3000"); console.warn("This is a warning"); console.error("Error occurred while processing request");
Walau bagaimanapun, pengelogan konsol mempunyai had dalam aplikasi yang kompleks, seperti kekurangan kawalan tahap log dan tiada ketekunan log.
Winston ialah perpustakaan pembalakan popular untuk Node.js yang menawarkan berbilang peringkat log, pengangkutan (destinasi log) dan pembalakan berstruktur.
npm install winston
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");
Tahap log mengkategorikan mesej log berdasarkan kepentingannya. Tahap log biasa ialah:
logger.level = "debug"; // Sets the minimum log level to debug, capturing all messages.
Dalam pengeluaran, adalah lebih baik untuk mengekalkan tahap log pada maklumat atau memberi amaran untuk mengelakkan data log yang tidak diperlukan.
Pengelogan berstruktur menjadikannya lebih mudah untuk menapis dan menganalisis log dengan mengekalkan format yang konsisten.
Metadata seperti user_id atau request_id boleh membantu menjejaki tindakan tertentu dalam log:
logger.info("User login successful", { user_id: "12345" }); logger.error("Failed to fetch user data", { user_id: "12345", error: "Database unavailable" });
Elasticsearch digunakan secara meluas untuk pengurusan log terpusat dan keupayaan carian.
console.log("Server started on port 3000"); console.warn("This is a warning"); console.error("Error occurred while processing request");
npm install winston
Persediaan ini akan menghantar log ke Elasticsearch, membolehkan anda menggunakan Kibana untuk carian dan analisis log masa nyata.
Pemantauan menjejaki metrik prestasi aplikasi seperti penggunaan CPU, memori dan masa tindak balas, membantu memastikan aplikasi yang stabil.
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");
logger.level = "debug"; // Sets the minimum log level to debug, capturing all messages.
logger.info("User login successful", { user_id: "12345" }); logger.error("Failed to fetch user data", { user_id: "12345", error: "Database unavailable" });
Grafana ialah alat yang berkuasa untuk mencipta papan pemuka daripada metrik Prometheus. Sepadukan Prometheus sebagai sumber data dalam Grafana, kemudian gambarkan metrik seperti masa tindak balas dan kadar ralat.
Pertimbangkan platform e-dagang di mana pengelogan dan pemantauan adalah penting untuk mengekalkan prestasi tinggi dan kebolehpercayaan.
Persediaan ini memberikan pandangan menyeluruh tentang kesihatan aplikasi, membolehkan pengesanan dan penyelesaian isu proaktif.
Melaksanakan pengelogan dan pemantauan yang teguh dalam Node.js adalah penting untuk mengekalkan kebolehpercayaan dan memastikan penyelesaian masalah yang cepat. Menggunakan alatan seperti Winston, Elasticsearch, Prometheus dan Grafana, anda boleh menangkap log berstruktur, memusatkannya dan memantau metrik prestasi kritikal dengan berkesan.
Atas ialah kandungan terperinci Pembalakan dan Pemantauan dalam Node.js: Amalan Terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!