大模型日志接入elk的核心前提是日志必须结构化为标准json,否则grok规则易失效;需先验证日志格式,再用filebeat或logstash的json解析器直接处理,禁用grok兜底非结构化日志。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

将大模型运行日志(如LLM推理、训练过程中的GPU显存、token吞吐、请求延迟等结构化指标)稳定接入ELK系统,核心障碍不是Logstash连不上Elasticsearch,而是日志原始格式不满足机器可解析前提——Grok正则匹配仅用于兜底非结构化日志,一旦日志含嵌套JSON、多行堆栈或时间戳格式混乱,Grok规则极易失效且维护成本陡增。
确认日志源头是否真正结构化
第一步:检查大模型服务输出的日志文件首10行,用head -n 10 /var/log/llm-service/*.log命令查看。
若每行都是标准JSON(开头{,结尾},无换行、无多余空格、字段名不含点号或括号),说明已满足结构化前提;若出现类似[INFO] 2026-06-12T21:38:00.123Z | gpu_util: 87% | tokens/sec: 42这样的混合文本,则必须先改造日志输出逻辑,否则后续所有Grok配置都将反复失败。
第二步:确认Go/Python/Java服务是否启用结构化日志库。Python需用structlog或loguru开启JSON输出;Go必须用zap.NewProductionEncoderConfig();Java推荐logback-json-classic并配置
Filebeat启用JSON解析并提权字段
编辑filebeat.yml中对应input段:
在parsers下添加json解析器,并强制将字段提到根层级:
复制AI写代码
1 2 3 4 5 6 7 8 9 10 11
input:
- type: filestream
paths:
- /var/log/llm-service/*.log
parsers:
- json:
keys_under_root: true
overwrite_keys: true
add_error_key: true
overwrite_keys: true是硬性要求——否则Filebeat会注入自己的@timestamp、host.name等字段,与日志内原有time、host冲突,导致Kibana里字段重复或覆盖丢失。
重启Filebeat后,用filebeat test config && filebeat test output验证配置生效;若报错“Failed to connect to Elasticsearch”,说明网络或认证未通,此时Grok尚未介入,无需排查正则。
Logstash跳过Grok,直连JSON插件
方法一:完全弃用Grok,改用json{} filter
在logstash.conf的filter块中删除全部grok{},替换为:
filter {
json {
source => "message"
skip_on_invalid_json => true
}
}
skip_on_invalid_json => true防止某条日志JSON格式损坏导致整条pipeline阻塞,坏日志会被丢弃而非卡死进程。
方法二:若必须保留部分Grok(例如解析非JSON的启动日志),需严格隔离输入源
在input块中拆分路径:
input {
file {
path => "/var/log/llm-service/runtime-*.log"
codec => "json"
}
file {
path => "/var/log/llm-service/startup.log"
codec => "plain"
}
}
这样runtime日志走原生JSON解析,startup日志才进Grok流程,避免混用导致字段污染。
在Kibana中创建匹配@timestamp的索引模式
第一步:确保Elasticsearch中已有数据写入,访问http://localhost:9200/_cat/indices?v确认logs-llm-*索引存在且health=green。
第二步:登录Kibana → Stack Management → Index Patterns → Create index pattern。
第三步:输入logs-llm-* → Next step → 在Time field选择框中【必须选@timestamp】,不能选time或timestamp——Filebeat默认注入的@timestamp是ISO8601格式且带时区,Kibana依赖它做时间轴对齐;若选错字段,所有图表时间范围筛选将失效。
第四步:点击Create index pattern完成。此时Discover页即可按毫秒级精度查看GPU利用率突增、token生成延迟毛刺等真实时序行为。










