ES日志收集与AI智能分析程序
🚀 一个集成了MiniMax AI能力的日志分析小应用,提供智能化的运维监控和报告生成服务。

项目概述
ES日志收集与Kibana的AI日志智能分析,是一套的智能化日志监控解决方案,鉴于该服务需要收费,则基于目前的ES日志收集做了一个小型的日志报告应用。该系统通过集成Elasticsearch强大的数据存储能力和MiniMax AI的智能分析能力,为企业提供实时、准确的日志分析和告警服务。
目前ES查询的规则是固定的,如果要用需要根据自己的日志筛查规则对ES筛查部分代码进行微调(AI就能搞定)
技术架构
系统组成
本系统采用模块化设计,主要包含以下核心组件:
- 数据收集模块 (
es_collector.py): 负责从Elasticsearch集群中高效收集日志数据 - AI分析引擎 (
ai_analyzer.py): 集成MiniMax API,提供智能日志分析能力 - 配置管理 (
config.yaml): 统一的系统配置管理,支持灵活的环境适配 - 报告生成器: 自动生成专业的HTML格式分析报告
技术栈
- 数据存储: Elasticsearch 8.x - 高性能分布式搜索引擎
- AI引擎: MiniMax AI (MiniMax-M2模型) - 专业的大语言模型
- 开发语言: Python 3.8+ - 现代化的编程语言支持
- 客户端库 :
elasticsearch==8.11.1- ES官方Python客户端anthropic==0.39.0- MiniMax API客户端
如何接入MiniMax AI
第一步:获取MiniMax API访问权限
- 注册MiniMax账号 : 访问MiniMax官网完成账号注册
- 申请API Key : 联系MiniMax技术支持获取专属的API访问凭证

- 选择合适的模型 : 推荐使用
MiniMax-M2模型
第二步:配置MiniMax API集成
在config.yaml文件中配置MiniMax相关参数:
yaml
# MiniMax API 配置
minimax:
api_key: "your_minimax_api_key_here" # 替换为您的API Key
base_url: "https://api.minimaxi.com/anthropic" # MiniMax API地址
model: "MiniMax-M2" # 使用的AI模型
max_tokens: 16000 # 最大输出token数
temperature: 1.0 # 创造性参数
第三步:API调用实现
系统使用Anthropic SDK与MiniMax API进行交互:
python
# 初始化Anthropic客户端(指向MiniMax)
self.client = anthropic.Anthropic(
api_key=mm_config['api_key'],
base_url=mm_config['base_url']
)
# 发送分析请求
response = self.client.messages.create(
model=self.model,
max_tokens=self.max_tokens,
temperature=self.temperature,
system=system_prompt,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": user_message
}
]
}
]
)
第四步:系统集成配置
确保网络环境满足以下要求:
- 外网访问: 服务器需要能够访问MiniMax API端点
- 端口开放: 确保9200端口可访问Elasticsearch服务
快速开始
环境要求
- Python版本: Python 3.8或更高版本
- Elasticsearch: 8.x版本集群
- 网络环境 :
- 内网访问ES集群
- 外网访问MiniMax API
安装步骤
方式一:Docker部署(推荐)
Docker部署方式更加简单快捷,适合快速体验和容器化部署。
- 构建Docker镜像
bash
# 构建镜像
docker build -t es-log-analyzer:latest .
# 查看镜像
docker images | grep es-log-analyzer
- 配置环境
bash
# 确保配置文件 config.yaml 存在且配置正确
# 确保 reports 目录存在
mkdir -p reports
- 运行容器
bash
# 使用 docker-compose 运行(推荐)
docker-compose up
# 或直接使用 docker 命令运行
docker run --rm \
--name es-log-analyzer \
--network host \
-v $(pwd)/config.yaml:/app/config.yaml:ro \
-v $(pwd)/reports:/app/reports \
-e TZ=Asia/Shanghai \
-e PYTHONUNBUFFERED=1 \
es-log-analyzer:latest
注意:容器配置为 restart: "no",意味着任务执行完成后会自动退出。
- 查看报告
bash
# 查看生成的报告
ls -la reports/
- Docker部署注意事项
⚠️ 重要提醒:
- 网络模式 : 使用
--network host模式,确保容器可以访问宿主机的VPN连接 - 配置文件挂载: 使用只读模式挂载配置文件,防止意外修改
- 报告目录 : 确保
reports目录有写权限,用于存储生成的报告文件 - 时区设置 : 设置
TZ=Asia/Shanghai确保时间显示正确 - 日志输出 : 设置
PYTHONUNBUFFERED=1实时输出日志信息
🔧 Docker部署优势:
- ✅ 环境隔离,避免依赖冲突
- ✅ 一键部署,快速启动
- ✅ 统一配置,便于管理
- ✅ 便于CI/CD集成
- ✅ 跨平台兼容性强
方式二:Python环境部署
- 检查Python版本
bash
python3 -V
# 或
python3.8 -V
- 安装依赖包
bash
# Python 3.8+
python3 install -r requirements.txt
# 或指定版本
python3.8 -m pip install -r requirements.txt
- 配置系统参数
编辑config.yaml文件,设置:
- Elasticsearch连接信息
- MiniMax API密钥
- 查询过滤条件
- 运行分析程序
bash
# 流式模式(推荐,实时显示AI分析过程)
python3 main.py --stream
# 或标准模式
python3 main.py
常用命令参数
--config <file>: 指定配置文件路径(默认: config.yaml)--stream: 启用流式模式,实时显示AI分析过程--no-save: 不保存报告到文件
核心功能特性
1. 专业报告生成
AI生成的HTML报告包含:
- 执行摘要: 系统状态的整体评估
- 关键发现: 重要问题的智能识别
- 告警分析: 详细的告警统计和趋势分析
- 错误分布: 直观的图表展示错误分布情况
- 日志样本: 具体的错误日志案例展示
2. 实时流式分析
流式分析模式提供:
- AI思考过程可视化: 实时显示AI的分析思路
- 渐进式结果生成: 边分析边展示结果
- 详细进度反馈: 完整的分析过程跟踪
配置详解
Elasticsearch配置
yaml
elasticsearch:
host: your es ip # ES服务器地址
port: 9200 # ES服务端口
username: elastic # 用户名
password: "password" # 密码
use_ssl: true # 启用SSL
verify_certs: false # 禁用证书验证
index: .ds-filebeat-* # 目标索引
days_back: 7 # 查询最近7天数据
查询过滤配置
yaml
query_filters:
alarm_flag: "backend_error" # 只查询错误告警
namespace: "default" # 指定命名空间
报告配置
yaml
report:
output_dir: reports # 报告输出目录
output_format: html # HTML格式输出
max_logs_to_analyze: 50000 # 最大分析日志数
故障排查
常见问题及解决方案
Docker部署问题
-
容器无法启动
- 检查镜像是否构建成功:
docker images | grep es-log-analyzer - 使用docker-compose查看日志:
docker-compose logs - 查看容器日志:
docker logs es-log-analyzer - 确认配置文件存在且格式正确
- 检查镜像是否构建成功:
-
docker-compose运行问题
- 检查docker-compose.yml语法:
docker-compose config - 清理旧的容器:
docker-compose down - 重新构建镜像:
docker-compose build - 强制重建:
docker-compose up --build
- 检查docker-compose.yml语法:
-
无法访问Elasticsearch
- 检查VPN连接状态
- 确认网络模式设置(docker-compose.yml中已配置为host模式)
- 测试网络连接:
docker run --rm --network host es-log-analyzer:latest curl -k https://your es ip:9200
-
报告文件权限问题
- 检查reports目录权限:
ls -la reports/ - 确保目录有写权限:
chmod 755 reports/
- 检查reports目录权限:
-
配置文件中API Key泄露
- Docker部署时配置文件为只读挂载,更安全
- 定期更换API Key
- 不要将API Key提交到版本控制系统
Python环境问题
-
Python版本不兼容
- 错误提示: ImportError或版本不兼容错误
- 解决方案: 升级到Python 3.8+
-
无法连接Elasticsearch
- 检查项: 确认VPN已连接(Sangfor aTrust)
- 测试命令:
curl -k https://your es ip:9200
-
API调用失败
- 检查项: 验证config.yaml中的API Key配置
- 网络要求: 确认服务器能够访问外网
-
依赖安装失败
- 解决方案: 使用
pip3 install -r requirements.txt --user
- 解决方案: 使用
性能优化建议
- 数据量控制 : 根据服务器性能调整
max_logs_to_analyze参数 - 查询优化: 合理设置查询过滤条件,减少不必要的数据传输
- 并发处理: 利用Python的并发处理能力,提升数据收集效率
docker-compose.yml配置详解
您的docker-compose.yml文件已经配置好了一切:
yaml
version: '3.8'
services:
es-log-analyzer:
image: es-log-analyzer:latest # 使用已构建好的镜像
container_name: es-log-analyzer
restart: "no" # 运行完退出
# 挂载配置文件和报告目录
volumes:
- ./config.yaml:/app/config.yaml:ro # 只读挂载配置
- ./reports:/app/reports # 报告输出目录
# 网络模式(使用宿主机网络,便于访问VPN)
network_mode: host
# 环境变量
environment:
- TZ=Asia/Shanghai
- PYTHONUNBUFFERED=1
# 日志配置
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
配置要点:
restart: "no": 任务执行完成后容器自动退出,适合一次性分析任务network_mode: host: 使用宿主机网络,确保可以访问VPN连接的内网ESvolumes: 配置文件只读挂载,报告目录可写logging: 限制日志文件大小,防止占用过多磁盘空间