在Ubuntu系統中集成Node.js日志與錯誤追蹤系統,可以幫助你更好地監控和管理你的應用程序。以下是一個基本的步驟指南,介紹如何集成常見的日志和錯誤追蹤系統:
winston
進行日志管理winston
是一個流行的Node.js日志庫,可以輕松地集成到你的應用程序中。
安裝 winston
npm install winston
配置 winston
創建一個日志配置文件,例如 logger.js
:
const { createLogger, format, transports } = require('winston');
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp(),
format.json()
),
transports: [
new transports.File({ filename: 'error.log', level: 'error' }),
new transports.File({ filename: 'combined.log' })
]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new transports.Console({
format: format.simple()
}));
}
module.exports = logger;
在應用程序中使用 winston
const logger = require('./logger');
logger.info('Hello, world!');
logger.error('Something went wrong!');
Sentry
進行錯誤追蹤Sentry
是一個強大的錯誤追蹤平臺,可以幫助你實時監控和修復應用程序中的錯誤。
安裝 @sentry/node
npm install @sentry/node
配置 Sentry
在你的應用程序入口文件(例如 app.js
)中添加以下代碼:
const Sentry = require('@sentry/node');
const express = require('express');
const app = express();
Sentry.init({
dsn: 'YOUR_SENTRY_DSN',
environment: 'production'
});
app.use((err, req, res, next) => {
Sentry.captureException(err);
res.status(500).send('Something broke!');
});
app.get('/', (req, res) => {
throw new Error('Test error');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
部署應用程序
確保在部署應用程序時,環境變量 SENTRY_DSN
已經設置。
Prometheus
和 Grafana
進行監控和報警Prometheus
是一個開源的監控系統,而 Grafana
是一個可視化工具,可以幫助你更好地理解你的應用程序的性能和健康狀況。
安裝 prom-client
npm install prom-client
配置 Prometheus
客戶端
在你的應用程序中添加以下代碼:
const client = require('prom-client');
const register = client.register;
const httpRequestDurationMicroseconds = new client.Histogram({
name: 'http_request_duration_ms',
help: 'Duration of HTTP requests in ms',
labelNames: ['method', 'route', 'code'],
buckets: [0.10, 5, 15, 50, 100, 200, 300, 400, 500]
});
app.use((req, res, next) => {
res.locals.startEpoch = Date.now();
res.on('finish', () => {
const responseDuration = Date.now() - res.locals.startEpoch;
httpRequestDurationMicroseconds
.labels(req.method, req.route.path, res.statusCode)
.observe(responseDuration);
});
next();
});
app.get('/metrics', async (req, res) => {
res.set('Content-Type', register.contentType);
res.end(await register.metrics());
});
設置 Prometheus
和 Grafana
Prometheus
服務器。Grafana
,并添加 Prometheus
作為數據源。通過以上步驟,你可以在Ubuntu系統中集成Node.js日志與錯誤追蹤系統,從而更好地監控和管理你的應用程序。