debian

Debian JS日志如何实现自动化管理

小樊
45
2025-12-04 12:53:34
栏目: 编程语言

Debian 上实现 JS 日志自动化管理

一 架构与总体思路

二 应用侧日志切分与保留

示例(winston,按大小滚动):

// logger.js
const winston = require('winston');
const { createLogger, format, transports } = winston;
const { combine, timestamp, printf } = format;

const myFormat = printf(({ level, message, timestamp }) => {
  return `${timestamp} ${level}: ${message}`;
});

const logger = createLogger({
  level: 'info',
  format: combine(timestamp(), myFormat),
  transports: [
    new transports.File({
      filename: '/var/log/yourapp/app.log',
      maxsize: 2_000_000, // 2MB
      maxFiles: 7
    })
  ]
});

module.exports = logger;

三 系统侧自动化轮转与清理

示例(/etc/logrotate.d/yourapp):

/var/log/yourapp/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 youruser yourgroup
    copytruncate
}

调试与执行:

sudo logrotate -d /etc/logrotate.d/yourapp   # 干跑调试
sudo logrotate -f /etc/logrotate.d/yourapp   # 强制执行一次

四 集中化收集与自动化分析告警

示例(fluentd 采集到 stdout,便于调试):

<source>
  @type tail
  path /var/log/yourapp/app.log
  pos_file /var/log/fluentd-yourapp.log.pos
  tag nodejs
  <parse>
    @type json
  </parse>
</source>
<match nodejs>
  @type stdout
</match>

示例(cron 定时分析 ERROR):

0 2 * * * /usr/bin/node /opt/scripts/logAnalyzer.js >> /var/log/logAnalyzer.log 2>&1

五 日常运维命令与快速排障

0
看了该问题的人还看了