ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI应用日志收集:用ELK+Filebeat搭建轻量级追踪系统日志收集

AI应用日志收集:用ELK+Filebeat搭建轻量级追踪系统日志收集 为什么AI应用需要专用日志管道AI应用如RAG问答、模型推理服务与传统Web服务不同日志中混杂着推理耗时、token消耗、向量检索命中、Prompt内容等关键指标。直接打印到stdout再人工grep既无法关联多节点也无法做实时告警。本文带你用Filebeat Elasticsearch Kibana搭建一个轻量级日志收集链路重点解决结构化JSON日志的采集与可视化。环境准备假设你已有一台Linux服务器Ubuntu 20.04Docker可用。我们将用Docker Compose启动ELKElasticsearch 8.11 Kibana 8.11并在宿主机上运行Filebeat采集Python日志。# docker-compose.yml简化版 version: 3 services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0 environment: - discovery.typesingle-node - xpack.security.enabledfalse ports: [9200:9200] kibana: image: docker.elastic.co/kibana/kibana:8.11.0 ports: [5601:5601] environment: - ELASTICSEARCH_HOSTShttp://elasticsearch:9200 depends_on: [elasticsearch]启动后验证curl localhost:9200应返回集群信息。第一步让Python应用输出结构化JSON日志在AI服务中我们推荐使用python-json-logger。修改你的日志配置import logging from pythonjsonlogger import jsonlogger logger logging.getLogger(ai_app) handler logging.StreamHandler() formatter jsonlogger.JsonFormatter( %(asctime)s %(levelname)s %(name)s %(message)s %(request_id)s %(model)s %(latency_ms)s %(tokens)s ) handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.INFO) # 使用示例 logger.info(rag_query, extra{ request_id: req_123, model: gpt-4o, latency_ms: 1250, tokens: 850 })输出形如{asctime:2025-01-01 12:00:00,levelname:INFO,message:rag_query,request_id:req_123,...}。这样Elasticsearch能自动映射字段类型便于后续聚合。第二步Filebeat采集与解析Filebeat读取日志文件并发送到ES。创建filebeat.ymlfilebeat.inputs: - type: filestream id: ai-app-logs paths: - /var/log/ai-app/*.log parsers: - ndjson: # 每行一个JSON对象 target: output.elasticsearch: hosts: [localhost:9200] index: ai-logs-%{yyyy.MM.dd} setup.template.name: ai-logs setup.template.pattern: ai-logs-*启动Filebeat二进制包或Docker均可filebeat -e -c filebeat.yml。确保日志文件路径存在且应用有写权限。第三步在Kibana中验证与可视化打开http://localhost:5601进入Management → Index Patterns创建ai-logs-*索引模式。然后到Discover查看日志筛选levelname: ERROR快速定位错误。用latency_ms 2000过滤慢请求。创建可视化面板在Dashboard中新建聚合查询按model桶聚合展示各模型平均tokens。添加request_id字段的曲线图观察并发量。进阶关联推理链路若你的AI应用内部有多个步骤如检索→Prompt→推理建议在日志中增加trace_id并提前打印到所有子步骤。Kibana中可以用trace_id做过滤查看一次完整请求的时间线。验证效果写个测试脚本随机产生日志5分钟后在Kibana中应能看到结构化字段latency_ms等可点击排序。搜索message: rag_query能返回所有推理记录。至此一套面向AI应用的轻量级日志监控系统已可用。后续可扩展告警ElastAlert或与Prometheus集成。
返回列表