运维工程师需根据日志量、实时性、存储成本、查询效率、扩展性等因素选择工具,优先考虑支持分布式采集、灵活查询(如全文检索/字段过滤)、易集成(如Kafka/Prometheus)及成本可控的方案,例如ELK Stack适合开源场景,Splunk适合企业级需求。
知识点延伸——日志结构化处理:
日志结构化指将原始文本转化为统一格式(如JSON),提取关键字段(timestamp、level、service等)。以Nginx访问日志为例,原始日志为:
127.0.0.1 - alice [10/Oct/2023:14:15:32 +0000] "GET /api HTTP/1.1" 200 34
通过Grok模式解析后生成结构化数据:
{"client_ip":"127.0.0.1","user":"alice","timestamp":"2023-10-10T14:15:32Z","method":"GET","path":"/api","status":200,"bytes":34}
结构化后可通过Elasticsearch创建倒排索引,实现毫秒级响应"status:500 AND path:/payment"类查询,相较全文检索效率提升90%。工具层面需验证正则表达式预编译、字段类型自动识别(如将数字转为long而非text)等核心能力。