CentOS Golang日志中的关键指标是什么
小樊
45
2025-11-23 23:38:13
CentOS上Golang日志的关键指标
一 日志本身的关键字段
- 基础字段:
- timestamp(时间戳,建议统一为RFC3339/ISO8601)、level(如 DEBUG/INFO/WARN/ERROR)、msg(消息)、logger/component(模块名)。
- 请求上下文:
- request_id、trace_id、span_id(用于串联分布式调用链)、method、path、status(HTTP状态码)、user_id/tenant_id(业务标识)。
- 性能与资源:
- latency_ms(请求耗时)、db_duration_ms、cache_hit/miss、goroutine_count、mem_alloc_bytes、gc_pause_ms。
- 错误与诊断:
- error(错误类型/消息)、stack_trace(异常堆栈)、retry_count、downstream_status、timeout。
- 建议:统一使用结构化日志(JSON),便于被 ELK/EFK 或 Loki 解析与检索;在 Gin/Echo 等框架中间件中自动注入 request_id/trace_id 与耗时。
二 从日志可计算的核心业务指标
- 请求量与错误率:
- 请求总数 QPS = 请求数/时间窗口;错误率 = 错误数/请求总数;按 status 分组(如 5xx、4xx)统计。
- 延迟与分布:
- P50/P95/P99 延迟(从日志中的 latency_ms 计算分位数),以及 平均/最大延迟。
- 可用性:
- 服务可用性 = 1 −(失败请求数/总请求数),按路由/接口维度聚合。
- 数据库与缓存:
- 慢查询数、平均 DB 耗时、缓存命中率 = 命中数/(命中数+未命中数)。
- 业务转化与质量:
- 注册成功率、下单转化率、消息投递成功率 等(在日志中打点相应事件)。
- 方法:在 Golang 中使用 Histogram 记录延迟分布,配合 Counter 累计请求与错误,便于在 Prometheus/Grafana 中计算上述指标。
三 系统资源与运行时指标
- 主机层面(可在 Go 应用中用 gopsutil 采集并写入日志):
- CPU 使用率、内存使用率/可用量、磁盘 I/O 与空间、网络吞吐/错误包。
- Go 运行时:
- Goroutine 数、堆内存分配与对象数、GC 次数与停顿时间、线程数。
- 建议:将系统/运行时指标以固定频率打点到日志,便于与业务日志时间对齐做根因分析。
四 在CentOS上的采集与告警实践
- 日志采集与轮转:
- 使用 rsyslog/filebeat 采集日志到 ELK/EFK 或 Loki;用 logrotate 做按日/按大小轮转,控制单文件大小与保留天数。
- 指标与可视化:
- 在 Go 服务暴露 /metrics 端点,使用 Prometheus 抓取,并在 Grafana 构建仪表盘(QPS、P95/P99、错误率、可用性等)。
- 性能剖析:
- 引入 net/http/pprof,按需抓取 CPU/Heap 等性能数据,定位瓶颈。
- 告警:
- 在 Prometheus 配置阈值告警(如 5xx 比例 > 1%、P95 延迟 > 1s、服务不可用),联动 邮件/企业微信/钉钉 通知。