|
|
监控与可观测性是现代系统运维中无法回避的核心命题。日志与指标作为两种主要的采集方式,它们的分工与互补性常被低估。日志记录的是事件的完整上下文,比如请求的完整参数、错误堆栈、用户行为路径,它的价值在于事后复盘和根因分析。而指标是实时的、聚合的数值,比如每秒请求数、响应延迟分位数,它的价值在于实时预警和系统健康度监控。两者的根本差异在于:日志回答“什么发生了”,指标回答“系统是否正常”。
在实际实践中,两者往往共同存在。一个典型的架构是:业务层通过日志记录所有请求和异常,同时通过Prometheus或Grafana Loki等工具采集时序指标。这种组合能覆盖从慢查询到突发流量的完整监控需求。但很多团队存在误区,比如将日志当作监控工具,或者仅依赖指标忽略异常行为的语义信息。日志丢失会直接导致无法追踪特定用户请求的完整轨迹,而指标过载则会淹没真正值得关注的异常。
接入层面也有明显的区别。日志接入通常依赖Filebeat、Fluent Bit等工具进行采集,再通过Kafka或Logstash传入ELK或Loki,处理复杂时可能涉及日志解析、字段提取和下游分析。指标则通过exporter(比如Node Exporter、Prometheus Java Exporter)采集,经过Pushgateway或直接写入Prometheus,配置相对线性。日志的处理链条更长,但信息密度更高。
一个值得参考的实践是,将日志按严重性分级:INFO级别的可去中心化存储,ERROR级别的入中央日志分析系统,并设置告警规则。这样能平衡存储成本与可观测性需求。此外,不要忽视日志的结构化问题——未结构化的日志在搜索和分析时效率低下,使用JSON格式配合日志解析规则是基本要求。
最后,监控系统的核心不是选哪个工具,而是是否建立了清晰的监控标准:哪些系统关键?哪些指标能预测故障?哪些日志值得追踪?工具只是手段,标准才是本质。 |
|