Debian上JS日志记录哪些关键信息
导读:Debian上Node.js日志应记录的关键信息 一、日志条目应包含的关键字段 时间戳:记录事件发生时间,建议使用ISO 8601或与系统一致的时区格式,便于排序与跨系统对齐。 日志级别:如 ERROR、WARN、INFO、DEBUG、F...
Debian上Node.js日志应记录的关键信息
一、日志条目应包含的关键字段
- 时间戳:记录事件发生时间,建议使用ISO 8601或与系统一致的时区格式,便于排序与跨系统对齐。
- 日志级别:如 ERROR、WARN、INFO、DEBUG、FATAL,用于过滤与告警。
- 服务/应用标识:如 service.name=myapp、app.version=v1.2.3,便于多服务聚合。
- 实例/主机标识:如 hostname=web-01、pid=12345,定位到具体进程与机器。
- 请求/事务上下文:如 req.id=abc-123、trace.id=uuid、userId=10086、session.id=s%3A…,串联一次业务全链路。
- 事件/操作:如 event=order.created、action=db.query、route=/api/v1/orders,说明发生了什么。
- 结果与状态码:如 status=200/4xx/5xx、error.code=E_CONNREFUSED、success=false。
- 消息与错误详情:简要描述 + 可机器解析的 error.message,必要时附带 error.stack(生产环境建议采样或脱敏)。
- 来源位置:如 file=app.js、line=123、function=handleRequest,加速定位。
- 性能与资源:如 duration=123ms、db.duration=45ms、memory.rss=120MB、cpu=2.1%,用于瓶颈分析。
- 网络与上下游:如 method=POST、url=https://api.xx、remote.ip=203.0.113.5、ua=Mozilla/5.0、statusCode=502。
- 安全与审计:如 auth.method=jwt、auth.result=success/fail、ip.geo=CN、rate_limit.remaining=98。
- 追踪与链路:如 trace.id=…、span.id=…、parent.id=…,对接 OpenTelemetry/Jaeger。
- 可观测性扩展:tags(如 env、region)、metrics(计数器/直方图)、span.kind(client/server/internal)。
- 示例(JSON,单行):
{ “ts”:“2025-12-18T10:23:45.123Z”,“level”:“error”,“service”:“order”,“host”:“web-01”,“pid”:12345,“req.id”:“abc-123”,“trace.id”:“u-456”,“event”:“payment.failed”,“method”:“POST”,“url”:“/pay”,“status”:502,“error”:{ “code”:“ECONNREFUSED”,“message”:“connect ECONNREFUSED 10.0.1.10:443”} ,“duration”:312,“ua”:“Mozilla/5.0”,“remote.ip”:“203.0.113.5” } 。
二、不同场景的必记信息
- HTTP 服务:请求方法/路径、查询参数摘要、请求/响应体大小、状态码、来源 IP、User-Agent、路由匹配、耗时、上游响应状态、限流与鉴权结果。
- 数据库/缓存:目标库/表、语句摘要或类型、影响行数、耗时、连接池状态、重试与超时、错误码。
- 消息队列/异步任务:队列/主题、消息 ID、生产者/消费者、重试次数、延迟、死信标记、分区/分片。
- 外部 API 调用:目标域名/端点、协议、HTTP 状态码、超时/重试、响应大小、鉴权方式、错误码与原因。
- 认证与授权:认证方式(如 JWT/OAuth)、用户标识、权限校验结果、失败原因、来源 IP 与地理信息。
- 启动与运行期:进程启动/重启、配置加载结果、依赖健康检查、监听端口、未捕获异常与 Promise rejection、内存泄漏告警、优雅关闭。
- 安全事件:暴力登录、权限越权尝试、异常访问模式、输入校验失败、敏感操作审计。
- 性能与错误:慢查询/慢请求阈值告警、P95/P99 延迟、异常峰值、错误率、熔断/降级触发与恢复。
三、日志级别与采样策略
- ERROR:影响功能/可用性,需立即关注与告警(如数据库不可用、支付失败)。
- WARN:异常但不阻断主流程(如降级、重试、超时)。
- INFO:关键业务事件与状态变更(如服务启动、订单创建成功)。
- DEBUG:开发/排障细节(如请求入参与中间结果),生产建议按需开启或采样。
- FATAL/CRITICAL:进程不可恢复错误(如未捕获异常导致退出),应附带核心上下文与堆栈。
- 采样与脱敏:对高频 DEBUG/TRACE 与敏感字段(如 password、token、card)进行采样与脱敏,避免性能与隐私风险。
四、结构化与输出建议
- 结构化优先:使用 JSON 输出,字段命名统一(如 camelCase 或 snake_case),便于 ELK/Graylog/Loki 解析与检索。
- 多目标输出:同时输出到控制台(便于容器/本地调试)与文件(便于落盘归档),错误单独文件便于告警。
- 可读性与性能:开发环境可用 pino-pretty / bunyan-pretty 美化;生产环境优先 JSON 与异步写入,减少阻塞。
- 关联上下文:在请求入口生成并透传 req.id / trace.id,在日志、指标、追踪间建立一对一关系。
五、在Debian上的落地与运维要点
- systemd 服务日志:将 Node.js 托管为服务(如 myapp.service),用 journalctl -u myapp.service 查看;按时间过滤可用 –since/–until,便于定位区间问题。
- 日志轮转:
- 应用内:使用 winston-daily-rotate-file 按天/大小切分。
- 系统级:在 /etc/logrotate.d/myapp 配置 daily、rotate 14、compress、missingok、notifempty、create 0640 app app,并可在 postrotate 触发服务重载。
- 集中化与告警:将日志汇聚到 ELK/Graylog 或云日志服务,结合阈值与异常模式配置告警,缩短 MTTR。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上JS日志记录哪些关键信息
本文地址: https://pptw.com/jishu/775389.html
