在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日志与错误追踪系统,从而更好地监控和管理你的应用程序。