https://github.com/ddpie/log-analyzer
基于 Strands Agents SDK 的智能日志分析工具,用最少代码实现自然语言查询日志数据
https://github.com/ddpie/log-analyzer
ai-agent elasticsearch log-analysis opensearch strands-agents
Last synced: about 2 months ago
JSON representation
基于 Strands Agents SDK 的智能日志分析工具,用最少代码实现自然语言查询日志数据
- Host: GitHub
- URL: https://github.com/ddpie/log-analyzer
- Owner: ddpie
- Created: 2025-08-07T03:35:58.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-12-23T14:50:28.000Z (6 months ago)
- Last Synced: 2025-12-25T03:24:47.287Z (6 months ago)
- Topics: ai-agent, elasticsearch, log-analysis, opensearch, strands-agents
- Language: Python
- Homepage:
- Size: 78.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 日志分析助手
基于 Strands Agents SDK 的日志分析工具,展示了如何用最少的代码构建实用的 AI 应用。
## 为什么用 Strands Agents SDK
传统方式构建 AI 应用需要处理模型调用、工具集成、对话管理等复杂逻辑。Strands Agents SDK 把这些都简化了:
```python
# 传统方式需要几十行代码处理的逻辑
from strands import Agent
from strands_tools import current_time
agent = Agent(
system_prompt="你是日志分析助手",
tools=[current_time] # 内置工具直接用
)
response = agent("分析今天的错误日志") # 就这么简单
```
## 功能
- 自然语言查询日志数据
- 自动检测时间异常
- 支持多种数据源(OpenSearch、Elasticsearch 等)
- 命令行交互界面
## 快速开始
### 安装
```bash
cd project
pip install -r requirements.txt
```
### 配置
```bash
cp mcp.json.example mcp.json
# 编辑 mcp.json,配置数据源连接信息
```
### 运行
```bash
python3 main.py
```
## 使用
启动后输入查询:
```
> 显示今天的错误日志统计
> 分析最近一周的访问趋势
> 查找响应时间超过5秒的请求
```
输入 `exit` 退出程序。
## 项目结构
```
project/
├── main.py # 程序入口 (50行)
├── log_analyzer_agent.py # 智能体核心 (80行)
├── time_tools.py # 自定义工具 (100行)
├── mcp_manager.py # MCP 连接 (60行)
├── cli_interface.py # 界面逻辑 (120行)
├── config_manager.py # 配置处理 (70行)
├── output_formatter.py # 格式化 (150行)
└── requirements.txt # 依赖包
```
**总计**: 约 630 行代码实现完整的日志分析工具,其中智能体核心逻辑仅 80 行。
## SDK 开发体验
### 1. 创建智能体 - 3行代码
```python
from strands import Agent
agent = Agent(system_prompt="你是日志分析助手")
response = agent("查询今天的错误日志")
```
### 2. 添加工具 - 装饰器搞定
```python
from strands import tool
@tool
def validate_timestamps(data: str) -> dict:
"""验证时间戳"""
return {"valid": True, "count": 100}
# 智能体自动学会使用这个工具
agent = Agent(tools=[validate_timestamps])
```
### 3. 连接数据源 - 配置即可用
```python
# mcp.json 配置好后,工具自动可用
from strands.tools.mcp import MCPClient
client = MCPClient(lambda: stdio_client(params))
tools = client.list_tools_sync() # 获取所有工具
agent = Agent(tools=tools) # 智能体立即具备数据查询能力
```
### 4. 内置工具生态
```python
from strands_tools import current_time, calculator, python_repl
# 丰富的预构建工具,开箱即用
agent = Agent(tools=[current_time, calculator, python_repl])
```
## 配置示例
```json
{
"mcpServers": {
"opensearch": {
"command": "uvx",
"args": ["opensearch-mcp-server-py"],
"env": {
"OPENSEARCH_URL": "https://your-domain.es.amazonaws.com",
"OPENSEARCH_USERNAME": "username",
"OPENSEARCH_PASSWORD": "password"
}
}
}
}
```
## 开发效率对比
**不用 Strands Agents SDK**:
- 需要手动处理模型 API 调用
- 自己实现工具调用逻辑
- 处理对话上下文管理
- 错误处理和重试机制
- 通常需要 200+ 行代码
**使用 Strands Agents SDK**:
- 核心逻辑 50 行代码搞定
- 工具集成只需装饰器
- 内置对话管理
- 自动错误处理
- 专注业务逻辑即可
## 系统要求
- Python 3.8+
- macOS / Linux / Windows
## 常见问题
**连接失败**: 检查 mcp.json 配置和网络
**查询无结果**: 确认数据源中有对应数据
**时间异常**: 程序会自动检测并提示
## 依赖
- strands-agents: 智能体框架
- mcp: 模型上下文协议
- rich: 终端界面美化