Linux日志分析系统 - 完整技术文档
目录
-
-
-
2.1 架构设计
-
2.2 技术栈详情
-
2.3 模块划分
-
2.4 数据库设计
-
-
-
3.1 环境要求
-
3.2 后端部署
-
3.3 前端部署
-
3.4 Nginx配置
-
3.5 服务管理
-
-
-
4.1 登录系统
-
4.2 实时日志监控
-
4.3 历史日志查询
-
4.4 日志搜索
-
4.5 智能分析
-
4.6 告警管理
-
4.7 系统配置
-
-
-
5.1 认证接口
-
5.2 日志接口
-
5.3 告警接口
-
5.4 分析接口
-
-
-
6.1 日志管理
-
6.2 性能监控
-
6.3 故障排查
-
1. 系统概述
1.1 系统定位
Linux日志分析系统是一款专为Linux服务器设计的日志监控与分析平台,提供实时日志采集、智能告警、历史查询和趋势分析等功能,帮助运维人员快速定位问题、优化系统性能。
1.2 核心功能
| 功能模块 | 功能描述 |
|---|---|
| 实时监控 | 实时采集并展示Linux系统日志,支持WebSocket实时推送 |
| 历史查询 | 支持按时间范围、日志级别、关键字等条件查询历史日志 |
| 日志搜索 | 全文搜索功能,支持正则表达式 |
| 智能分析 | 日志趋势分析、错误统计、Top分析等可视化图表 |
| 告警管理 | 自定义告警规则,支持关键字匹配和级别过滤 |
| 系统配置 | 日志源配置、告警规则管理、用户管理 |
1.3 系统特点
-
实时性:基于WebSocket实现日志实时推送
-
易用性:直观的Web界面,操作简单
-
扩展性:支持多日志源配置
-
安全性:JWT认证机制,细粒度权限控制
-
可视化:丰富的图表展示,数据一目了然
2. 技术架构
2.1 架构设计
┌─────────────────────────────────────────────────────────────────┐
│ 前端层 (Frontend) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Dashboard│ │ Realtime │ │ History │ │ Analysis │ │
│ │ │ │ Logs │ │ Logs │ │ & Alerts │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └───────┬──────┘ │
│ │ │ │ │ │
└───────┼─────────────┼─────────────┼─────────────────┼──────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ 反向代理层 (Nginx) │
│ - 静态文件服务 │
│ - API请求转发 │
│ - WebSocket支持 │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 后端层 (Backend) │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌───────────┐│
│ │ Auth API │ │ Log API │ │ Alert API │ │Analysis ││
│ │ │ │ │ │ │ │ API ││
│ └────┬───────┘ └────┬───────┘ └────┬───────┘ └─────┬─────┘│
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Flask Application │ │
│ │ - JWT认证 - 日志采集 - 告警引擎 │ │
│ │ - Socket.IO - 数据持久化 - 趋势分析 │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ SQLite Database│ │
│ │ - LogRecord │ │
│ │ - AlertRule │ │
│ │ - User │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 日志源 (Linux Server) │
│ - /var/log/syslog │
│ - /var/log/auth.log │
│ - /var/log/cron │
│ - /var/log/messages │
└─────────────────────────────────────────────────────────────────┘
2.2 技术栈详情
| 层级 | 技术 | 版本 | 说明 |
|---|---|---|---|
| 前端框架 | React | 18.x | 主流前端框架,组件化开发 |
| 前端语言 | TypeScript | 5.x | 类型安全的JavaScript |
| UI组件库 | Ant Design | 5.x | 企业级UI设计语言 |
| 图表库 | ECharts | 5.x | 强大的数据可视化 |
| 构建工具 | Vite | 6.x | 快速的前端构建工具 |
| 状态管理 | Zustand | 4.x | 轻量级状态管理 |
| HTTP客户端 | Axios | 1.x | Promise-based HTTP客户端 |
| 后端框架 | Flask | 2.3.x | 轻量级Python Web框架 |
| 认证 | Flask-JWT-Extended | 4.x | JWT认证扩展 |
| ORM | SQLAlchemy | 2.x | Python ORM框架 |
| 实时通信 | Flask-SocketIO | 5.x | WebSocket支持 |
| 数据库 | SQLite | 3.x | 轻量级嵌入式数据库 |
| 生产服务器 | Gunicorn | 21.x | Python WSGI服务器 |
| 反向代理 | Nginx | 1.24.x | 高性能Web服务器 |
| 操作系统 | openEuler | 24.03 | 国产Linux发行版 |
2.3 模块划分
2.3.1 前端模块
| 模块 | 文件路径 | 功能说明 |
|---|---|---|
| 登录页 | src/pages/Login.tsx |
用户登录界面 |
| 仪表盘 | src/pages/Dashboard.tsx |
系统概览仪表盘 |
| 实时日志 | src/pages/RealtimeLogs.tsx |
实时日志监控 |
| 历史日志 | src/pages/HistoryLogs.tsx |
历史日志查询 |
| 日志搜索 | src/pages/SearchLogs.tsx |
日志全文搜索 |
| 智能分析 | src/pages/Analysis.tsx |
趋势分析图表 |
| 告警管理 | src/pages/Alerts.tsx |
告警规则管理 |
| 系统配置 | src/pages/Config.tsx |
系统设置 |
| 布局组件 | src/components/Layout.tsx |
页面布局组件 |
2.3.2 后端模块
| 模块 | 文件路径 | 功能说明 |
|---|---|---|
| 认证控制器 | app/controllers/auth_controller.py |
用户认证API |
| 日志控制器 | app/controllers/log_controller.py |
日志查询API |
| 告警控制器 | app/controllers/alert_controller.py |
告警管理API |
| 搜索控制器 | app/controllers/search_controller.py |
日志搜索API |
| 分析控制器 | app/controllers/analysis_controller.py |
趋势分析API |
| 配置控制器 | app/controllers/config_controller.py |
系统配置API |
| 日志模型 | app/models/models.py |
数据库模型定义 |
| 日志监控 | app/utils/log_monitor.py |
日志采集与监控 |
| JWT工具 | app/utils/jwt_helper.py |
JWT认证辅助 |
2.4 数据库设计
2.4.1 LogRecord(日志记录)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键,自增 |
| timestamp | DATETIME | 日志时间戳 |
| log_level | VARCHAR | 日志级别(ERROR/WARNING/INFO/DEBUG) |
| source | VARCHAR | 日志来源文件 |
| content | TEXT | 日志内容 |
| created_at | DATETIME | 创建时间 |
2.4.2 AlertRule(告警规则)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键,自增 |
| name | VARCHAR | 规则名称 |
| description | TEXT | 规则描述 |
| condition | TEXT | 匹配条件(正则表达式) |
| alert_level | VARCHAR | 告警级别 |
| enabled | BOOLEAN | 是否启用 |
| priority | INTEGER | 优先级(1-5) |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
2.4.3 AlertRecord(告警记录)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键,自增 |
| rule_id | INTEGER | 关联规则ID |
| log_id | INTEGER | 关联日志ID |
| message | TEXT | 告警消息 |
| status | VARCHAR | 状态(active/resolved) |
| created_at | DATETIME | 创建时间 |
2.4.4 User(用户)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键,自增 |
| username | VARCHAR | 用户名 |
| VARCHAR | 邮箱 | |
| password_hash | VARCHAR | 密码哈希 |
| role | VARCHAR | 角色(admin/user) |
| is_active | BOOLEAN | 是否激活 |
| created_at | DATETIME | 创建时间 |
| last_login | DATETIME | 最后登录时间 |
3. 部署与安装
3.1 环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | openEuler 24.03 或 CentOS 7+ |
| Python | 3.8+ |
| Node.js | 20+ |
| Nginx | 1.20+ |
| 内存 | 至少 2GB |
| 磁盘 | 至少 10GB 可用空间 |
3.2 后端部署
3.2.1 安装依赖
# 更新系统
sudo yum update -y
# 安装 Python 和开发工具
sudo yum install -y python3-devel gcc gcc-c++ make
# 安装 Nginx
sudo yum install -y nginx
3.2.2 创建项目目录
mkdir -p /opt/log-analysis-system/backend
cd /opt/log-analysis-system/backend
3.2.3 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
3.2.4 安装Python依赖
pip install --upgrade pip
pip install flask flask-cors flask-jwt-extended flask-socketio flask-sqlalchemy gunicorn gevent paramiko python-dotenv
3.2.5 复制项目文件
将以下文件复制到 /opt/log-analysis-system/backend:
-
app/- 应用代码目录 -
config/- 配置文件目录 -
run.py- 启动脚本 -
requirements.txt- 依赖列表
3.2.6 初始化数据库
python init_db.py
3.3 前端部署
3.3.1 安装Node.js依赖
cd /opt/log-analysis-system/frontend
npm install
3.3.2 构建前端
npm run build
3.3.3 部署静态文件
mkdir -p /opt/backend/static/dist
cp -r dist/* /opt/backend/static/dist/
3.4 Nginx配置
创建Nginx配置文件 /etc/nginx/conf.d/log-analysis.conf:
server {
listen 80;
listen [::]:80;
server_name _;
# 前端静态文件
root /opt/backend/static/dist;
index index.html;
# 前端路由支持
location / {
try_files $uri $uri/ /index.html;
}
# API请求转发到后端
location /api/ {
proxy_pass http://127.0.0.1:5000/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# WebSocket支持
location /socket.io/ {
proxy_pass http://127.0.0.1:5000/socket.io/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
3.5 服务管理
3.5.1 创建systemd服务
创建 /etc/systemd/system/log-analysis.service:
[Unit]
Description=Linux Log Analysis System Backend
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/log-analysis-system/backend
Environment="PATH=/opt/log-analysis-system/backend/venv/bin"
Environment="FLASK_ENV=production"
Environment="JWT_SECRET_KEY=LogAnalysis@2024!Secret"
ExecStart=/opt/log-analysis-system/backend/venv/bin/gunicorn -w 4 -b 0.0.0.0:5000 --timeout 120 run:app
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
3.5.2 启动服务
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启用服务(开机自启)
sudo systemctl enable log-analysis
# 启动服务
sudo systemctl start log-analysis
# 检查状态
sudo systemctl status log-analysis
3.5.3 启动Nginx
sudo systemctl enable nginx
sudo systemctl start nginx
4. 使用指南
4.1 登录系统
-
打开浏览器,访问
http://<服务器IP> -
输入用户名和密码:
-
默认用户名:
admin -
默认密码:
admin123
-
-
点击"登录"按钮进入系统
4.2 实时日志监控
-
登录后进入仪表盘页面
-
点击左侧菜单"实时日志"
-
页面会自动刷新显示最新日志
-
支持按日志级别筛选(全部/ERROR/WARNING/INFO/DEBUG)
4.3 历史日志查询
-
点击左侧菜单"历史日志"
-
设置查询条件:
-
时间范围:选择开始时间和结束时间
-
日志级别:选择要查询的级别
-
每页条数:设置分页大小
-
-
点击"查询"按钮获取结果
-
支持分页浏览
4.4 日志搜索
-
点击左侧菜单"日志搜索"
-
在搜索框中输入关键词
-
支持正则表达式搜索
-
点击"搜索"按钮获取结果
4.5 智能分析
-
点击左侧菜单"分析报告"
-
查看日志趋势图表:
-
日志总量趋势(蓝色线)
-
错误日志趋势(红色线)
-
-
查看Top分析:
-
日志级别分布
-
日志来源统计
-
4.6 告警管理
-
点击左侧菜单"告警管理"
-
查看告警规则列表
-
点击"添加规则"创建新规则:
-
规则名称:输入规则名称
-
规则描述:输入规则说明
-
匹配条件:输入正则表达式
-
告警级别:选择级别
-
优先级:设置优先级
-
-
启用/禁用规则
4.7 系统配置
-
点击左侧菜单"系统配置"
-
配置日志监控:
-
添加日志文件路径
-
设置监控间隔
-
-
用户管理(管理员权限):
-
查看用户列表
-
创建新用户
-
修改用户信息
-
5. API接口说明
5.1 认证接口
5.1.1 登录
-
URL:
POST /api/auth/login -
请求体:
{
"username": "admin",
"password": "admin123"
}
-
响应:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "admin",
"role": "admin",
"email": "admin@example.com"
},
"message": "Login successful"
}
5.1.2 刷新Token
-
URL:
POST /api/auth/refresh -
请求头:
Authorization: Bearer <refresh_token> -
响应:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
5.2 日志接口
5.2.1 获取历史日志
-
URL:
GET /api/logs/history -
参数:
-
page: 页码(默认1) -
per_page: 每页条数(默认20) -
start_time: 开始时间(ISO格式) -
end_time: 结束时间(ISO格式) -
log_level: 日志级别筛选
-
-
请求头:
Authorization: Bearer <access_token> -
响应:
{
"data": [
{
"id": 1,
"timestamp": "2024-01-15T10:30:00",
"log_level": "INFO",
"source": "/var/log/syslog",
"content": "System started successfully"
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 100,
"pages": 5
}
}
5.2.2 获取日志统计
-
URL:
GET /api/logs/stats -
请求头:
Authorization: Bearer <access_token> -
响应:
{
"total": 1000,
"error_count": 50,
"warning_count": 100,
"info_count": 800,
"debug_count": 50
}
5.3 告警接口
5.3.1 获取告警规则
-
URL:
GET /api/alerts/rules -
请求头:
Authorization: Bearer <access_token> -
响应:
{
"data": [
{
"id": 1,
"name": "系统错误告警",
"description": "检测到系统错误日志",
"condition": "error|failed|exception",
"alert_level": "ERROR",
"enabled": true,
"priority": 1
}
]
}
5.3.2 创建告警规则
-
URL:
POST /api/alerts/rules -
请求头:
Authorization: Bearer <access_token> -
请求体:
{
"name": "新告警规则",
"description": "规则描述",
"condition": "pattern",
"alert_level": "WARNING",
"enabled": true,
"priority": 2
}
5.4 分析接口
5.4.1 获取趋势数据
-
URL:
GET /api/analysis/trend?days=7 -
请求头:
Authorization: Bearer <access_token> -
响应:
{
"daily_stats": [
{"date": "2024-01-01", "count": 100},
{"date": "2024-01-02", "count": 120}
],
"error_stats": [
{"date": "2024-01-01", "count": 5},
{"date": "2024-01-02", "count": 8}
],
"days": 7
}
6. 运维与维护
6.1 日志管理
6.1.1 查看应用日志
# 查看系统服务日志
journalctl -u log-analysis -f
# 查看Nginx访问日志
tail -f /var/log/nginx/access.log
# 查看Nginx错误日志
tail -f /var/log/nginx/error.log
6.1.2 日志清理
# 清理旧日志(保留最近30天)
find /var/log -type f -name "*.log" -mtime +30 -delete
6.2 性能监控
# 查看进程状态
ps aux | grep gunicorn
# 查看端口监听
netstat -tlnp | grep 5000
# 查看内存使用
free -h
# 查看磁盘使用
df -h
6.3 故障排查
6.3.1 服务无法启动
# 检查服务状态
systemctl status log-analysis
# 查看详细错误
journalctl -u log-analysis --no-pager
# 检查端口是否被占用
netstat -tlnp | grep 5000
6.3.2 数据库连接失败
# 检查数据库文件权限
ls -la /opt/log-analysis-system/backend/app.db
# 确保目录有写入权限
chmod -R 755 /opt/log-analysis-system/backend
6.3.3 Nginx配置错误
# 测试配置文件
nginx -t
# 重新加载配置
systemctl reload nginx
附录
A. 默认配置
| 配置项 | 默认值 |
|---|---|
| 后端端口 | 5000 |
| Nginx端口 | 80 |
| 默认用户名 | admin |
| 默认密码 | admin123 |
| JWT过期时间 | 15分钟 |
B. 常用命令
# 启动服务
systemctl start log-analysis
# 停止服务
systemctl stop log-analysis
# 重启服务
systemctl restart log-analysis
# 查看状态
systemctl status log-analysis
# 查看日志
journalctl -u log-analysis -f
# 重新加载Nginx配置
systemctl reload nginx
文档版本: v1.0 创建日期: 2024年 适用系统: Linux日志分析系统

浙公网安备 33010602011771号