🌙

Linux日志分析系统 - 完整技术文档

Linux日志分析系统 - 完整技术文档


目录

  1. 系统概述

  2. 技术架构

    • 2.1 架构设计

    • 2.2 技术栈详情

    • 2.3 模块划分

    • 2.4 数据库设计

  3. 部署与安装

    • 3.1 环境要求

    • 3.2 后端部署

    • 3.3 前端部署

    • 3.4 Nginx配置

    • 3.5 服务管理

  4. 使用指南

    • 4.1 登录系统

    • 4.2 实时日志监控

    • 4.3 历史日志查询

    • 4.4 日志搜索

    • 4.5 智能分析

    • 4.6 告警管理

    • 4.7 系统配置

  5. API接口说明

    • 5.1 认证接口

    • 5.2 日志接口

    • 5.3 告警接口

    • 5.4 分析接口

  6. 运维与维护

    • 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 用户名
email 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 登录系统

  1. 打开浏览器,访问 http://<服务器IP>

  2. 输入用户名和密码:

    • 默认用户名:admin

    • 默认密码:admin123

  3. 点击"登录"按钮进入系统

4.2 实时日志监控

  1. 登录后进入仪表盘页面

  2. 点击左侧菜单"实时日志"

  3. 页面会自动刷新显示最新日志

  4. 支持按日志级别筛选(全部/ERROR/WARNING/INFO/DEBUG)

4.3 历史日志查询

  1. 点击左侧菜单"历史日志"

  2. 设置查询条件:

    • 时间范围:选择开始时间和结束时间

    • 日志级别:选择要查询的级别

    • 每页条数:设置分页大小

  3. 点击"查询"按钮获取结果

  4. 支持分页浏览

4.4 日志搜索

  1. 点击左侧菜单"日志搜索"

  2. 在搜索框中输入关键词

  3. 支持正则表达式搜索

  4. 点击"搜索"按钮获取结果

4.5 智能分析

  1. 点击左侧菜单"分析报告"

  2. 查看日志趋势图表:

    • 日志总量趋势(蓝色线)

    • 错误日志趋势(红色线)

  3. 查看Top分析:

    • 日志级别分布

    • 日志来源统计

4.6 告警管理

  1. 点击左侧菜单"告警管理"

  2. 查看告警规则列表

  3. 点击"添加规则"创建新规则:

    • 规则名称:输入规则名称

    • 规则描述:输入规则说明

    • 匹配条件:输入正则表达式

    • 告警级别:选择级别

    • 优先级:设置优先级

  4. 启用/禁用规则

4.7 系统配置

  1. 点击左侧菜单"系统配置"

  2. 配置日志监控:

    • 添加日志文件路径

    • 设置监控间隔

  3. 用户管理(管理员权限):

    • 查看用户列表

    • 创建新用户

    • 修改用户信息


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日志分析系统


本文档为Linux日志分析系统的完整技术文档,包含系统架构、部署指南、使用说明和API接口等内容。

posted @ 2026-06-12 22:59  星火撩原  阅读(14)  评论(0)    收藏  举报
本站已运行:0
🌙 夜间模式
🌙
🌙