SkillAgentSearch skills...

FastWLAT

FastWLAT (Fast Web Log Analysis Tool) 是基于 Electron + Vue 3 构建的跨平台高性能 Web 日志分析工具,支持本地内存模式与 Redis 分布式处理,专为海量WEB日志分析场景设计。提供日志解析、威胁规则引擎、可视化仪表盘及树状聚合分析,优化了百万级数据的导入速度与查询性能,助力网络安全人员快速洞察访问流量与安全威胁。支持 Windows/macOS/Linux,开箱即用。

Install / Use

/learn @vam876/FastWLAT
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

FastWLAT(Fast Web Log Analysis Tool)

FastWLAT 是一款基于 Electron + Vue 3 + TypeScript 开发的现代化 Web 日志分析工具。专为安全应急响应和日志分析场景设计,提供高性能的日志解析、智能威胁检测、地理位置可视化等功能。

Windows日志分析工具链接 | Linux日志分析工具链接

🏆 FastWLAT功能介绍

  • 最新版本: V1.1.0

  • 更新日期: 2025/12/18

  • 下载地址

最新版下载(Windows) https://github.com/vam876/FastWLAT/releases/tag/v1.1.0

旧版下载(Windows/macOS/Linux) https://github.com/vam876/FastWLAT/releases/tag/v1.0.1

现有工具的痛点分析

🔍 部分日志分析工具的局限性:

  • ELK Stack: 部署复杂度极高,需要专业运维团队,资源消耗较大
  • Splunk: 许可费用昂贵,普通用户难以承受
  • 360星图: 功能封闭,缺少弹性配置,功能强大但无法满足个性化需求
  • WebLog Expert/HTTP Logs Viewe: 类似工具很多,但是缺少安全分析功能集成
  • GitHub部分开源脚本: 年代久远,缺乏维护,功能单一,用户体验极差
  • 近年来收集的一些图形化nginx/Apache分析工具: 用户体验不好,误报率极高,性能差

⚡ 技术痛点:

  • 操作不便,学习成本高
  • 功能相对封闭,扩展性差
  • 缺少现代化的可视化界面
  • 弹性不足,无法适应不同规模需求
  • 年代久远,技术架构落后
  • 长期无人维护

正是基于这些痛点,我们决定从零开始,花了五天时间打造一款真正现代化、用户友好、高度自定义和支持多视图的Web日志分析工具,最终目的是实现既可给领导直观的展示,也可以通过工具快速识别恶意WEB攻击

🎯 软件架构

<img width="1697" height="426" alt="image" src="https://github.com/user-attachments/assets/34236fa3-7084-431f-965e-f2c70935f754" />

日志分析流程

<img width="857" height="903" alt="image" src="https://github.com/user-attachments/assets/aa4314bd-c71c-401a-9637-4988465cebdc" />

📊 智能仪表盘 - 访问态势一目了然

<img width="1384" height="861" alt="image" src="https://github.com/user-attachments/assets/816b4e09-9cf1-4a55-a51c-a1d4522048c4" />

📥 强大导入系统 - 支持主流WEB日志格式

  • 格式全覆盖: Apache、Nginx、IIS、Tomcat等日志格式

  • 智能识别: 自动格式检测

  • 大文件处理: 百万级日志处理优化

  • 三种方式: 文件上传、文本粘贴、示例数据快速体验

  • 格式不兼容欢迎提供示例格式进行适配

<img width="1657" height="942" alt="image-20250901111015860" src="https://github.com/user-attachments/assets/bb15021a-fbfd-44a6-95e5-f0dd10f66be4" />

🔍 高性能日志视图 - 百万条日志秒级响应

  • 虚拟滚动: 支持百万级日志流畅浏览

  • 多视图模式: 表格、树状、聚合三种视图

  • 秒级搜索: 全文搜索、正则匹配、条件过滤

  • 智能分页: 动态加载,内存自动回收

  • 快速过滤功能: 一键剔除静态文件,一键排除404、30X等状态码日志,留下清爽的日志浏览视图,即可节省渲染性能,也可以排除分析干扰和误报

<img width="1650" height="889" alt="image-20250901111302683" src="https://github.com/user-attachments/assets/85327756-f27f-4147-9e07-f2f2c00ced24" />

上图: 日志列表视图,可以快速过滤、搜索和分析

<img width="1656" height="937" alt="image-20250901111437398" src="https://github.com/user-attachments/assets/6b259c74-f468-4123-a5d1-59391a2cfda2" />

上图: 树目录视图,通过日志还原出网站原本的目录结构,可以折叠、展开,支持搜索、过滤、仅显示某个路径等多种功能,出现告警日志会显示分析按钮

<img width="1264" height="779" alt="image-20250901111528374" src="https://github.com/user-attachments/assets/7b3566d7-33d1-4f71-8e21-e8e8274742ac" />

上图: 出现告警的文件会由分析按钮,点击分析按钮进行高级分析视图(仅针对当前选择的路径) <img width="1149" height="800" alt="image-20250901111625012" src="https://github.com/user-attachments/assets/601aaafc-55b9-42f7-85fd-5e09893f72a0" />

上图: 选择对应的文件会出现详情按钮,点击详情按钮进行详情视图(包含当前路径的所有日志进行展示) <img width="1645" height="899" alt="image-20250901111701236" src="https://github.com/user-attachments/assets/cef5584a-b86a-47f0-ba5f-17e6232c3911" />

上图: 高级分析视图,可以快速排序、搜索和分析,点击分析按钮可以针对当前路径、IP、地区、状态码等数据进行汇聚分析

📈 专业分析引擎 - 数据洞察一步到位

  • 多维分析: 时间、状态码、用户代理、地理位置

  • 趋势识别: 24小时访问模式、异常时段检测

  • 性能分析: 响应时间分布、错误率统计

    image-20250901111855549

🛡️ 智能威胁检测 - 企业级安全防护

  • 威胁类型: 内置多种威胁检测规则,分析页面支持分类、筛选
  • 条件引擎: 状态码、IP、时间、返回数据包大小等多维度精准匹配
<img width="1646" height="898" alt="image-20250901111855549" src="https://github.com/user-attachments/assets/bb70ad6e-5223-419b-b034-0c723dc77fd1" />
  • 二次过滤: 告警页面支持正则表达式二次匹配,高亮显示定位匹配规则快速优化
<img width="1665" height="690" alt="image-20250901165129877" src="https://github.com/user-attachments/assets/0ba2ca85-19e0-42e3-ad71-9d82af5a7f11" />

🗺️ 威胁地图可视化 - 全球威胁态势感知

<img width="988" height="896" alt="image" src="https://github.com/user-attachments/assets/053fe3f1-53da-4d15-bca6-bf7bc854434a" />
  • 地理定位: 基于MaxMind数据库的精准定位,通过优秀的前端库和地图数据进行可视化展示,将访问和攻击来源渲染到地图
<img width="1605" height="763" alt="image-20250901112155492" src="https://github.com/user-attachments/assets/955a3911-c99e-4845-a527-6bf9ebd307cd" />
  • 实时动画: 支持世界地图和中国地图进行动态展示,威胁来源一目了然
<img width="1628" height="930" alt="image-20250901112300487" src="https://github.com/user-attachments/assets/6957e5ce-b1bb-4360-9728-4b34e6de5c39" />
  • 双模式: 流量地图模式 ↔ 攻击地图模式无缝切换,攻击地图可以渲染出现告警的攻击数据,基于源IP和自定义防护地标进行攻击路径绘制
<img width="1549" height="703" alt="image-20250901112325678" src="https://github.com/user-attachments/assets/54811a24-3a55-4c24-be15-1ec078da5620" />
  • 交互探索: 缩放、筛选、详情查看,点击对应的地区节点出现详情卡片
<img width="1599" height="937" alt="image-20250901112405723" src="https://github.com/user-attachments/assets/f3abfda3-8fb8-485e-86a6-de743b112667" />

⚙️ 灵活规则管理 - 自定义安全策略

<img width="1664" height="947" alt="image-20250901112433656" src="https://github.com/user-attachments/assets/fc04478a-08b0-4fa4-a417-3f9d7d8734db" />
  • 可视化配置: 图形界面,无需编程基础

  • 条件组合: HTTP方法、状态码、IP、时间范围、返回长度等

  • 实时生效: 规则修改即时应用,无需重启

  • 高度自定义: 可以添加删除优化告警规则,不加密,无任何限制

<img width="1310" height="712" alt="image-20250901112457905" src="https://github.com/user-attachments/assets/ac8331d7-eff0-41a8-a4cc-d2652480806b" />

🎨 个性化主题 - 适合每个团队的风格

  • 三种精美主题: 天空蓝、简约灰、经典蓝紫
  • 一键切换: 实时预览,用户偏好自动保存
  • 现代设计: 现代化的UI/UX设计
<img width="1791" height="989" alt="image-20250901112800633" src="https://github.com/user-attachments/assets/8892712e-834f-4496-b7f3-a4153153ada7" />

⚙️ 智能设置中心 - 系统优化一站式

<img width="759" height="928" alt="image" src="https://github.com/user-attachments/assets/ea626582-d3e8-4bdf-a266-33df5c4e9bae" />
  • 三模式存储: 本地内存、zinc(ES兼容)、Redis高性能(v1.1.0版本开始已弃用,改为IndexedDB持久化存储)无缝切换。目前仅开放内存模式

  • 性能监控: 实时内存使用、缓存状态监控

  • 连接管理: Redis自动重连和状态检测

  • 配置持久: 用户设置自动保存和恢复

<img width="1614" height="929" alt="image-20250901112826862" src="https://github.com/user-attachments/assets/d7394d36-56d7-4291-95b9-ed949f856862" />

🌟 FastWLAT的创新点

一、创新性的日志浏览系统

🔍 三视图架构设计

FastWLAT采用了创新的三视图日志浏览架构,每种视图都针对不同的分析场景进行了深度优化:

1️⃣ 常规列表视图 - 高性能数据展示

技术实现:

// 虚拟滚动核心实现
export const VirtualScrollList = defineComponent({
  name: 'VirtualScrollList',
  setup(props: { items: LogEntry[] }) {
    const containerRef = ref<HTMLElement>()
    const scrollTop = ref(0)
    const itemHeight = 40
    const visibleCount = Math.ceil(window.innerHeight / itemHeight) + 5
    
    // 计算可见范围
    const visibleRange = computed(() => {
      const start = Math.floor(scrollTop.value / itemHeight)
      const end = Math.min(start + visibleCount, props.items.length)
      return { start, end }
    })
    
    // 只渲染可见项目
    const visibleItems = computed(() => 
      props.items.slice(visibleRange.value.start, visibleRange.value.end)
    )
    
    return { containerRef, visibleItems, visibleRange }
  }
})

核心特性:

  • 虚拟滚动: 支持百万级日志条目无卡顿浏览
  • 秒级搜索: 基于内存索引的快速检索
  • 智能过滤: 多条件组合筛选,精准定位
  • 实时排序: 支持所有字段的动态排序

2️⃣ 创新树状视图 🌳 - 解决分析可视化难题

这是FastWLAT和让其他日志分析工具不同的功能

解决的核心痛点:

  • 快速理解整个网站架构
  • 希望直观看到每个路径的访问频次和威胁分布
  • 显示某个路径下状态码分布情况了
  • 点击某个路径或者接口可以快速查看相关日志的访问情况
  • 点击某个路径或者接口可以快速查看相关日志的告警情况
实际效果展示:
🏠 网站
├── 📁 文章目录/ (2,345次访问)
│   ├── 📄 技术分享.html (200 856次) 🟢 正常
│   ├── 📄 生活随笔.html (302 234次) 🟢 正常
│   └── 📁 图片/ (404 123次 200 4次)
│       ├── 📄 avatar.jpg (67次) 🟢 正常
│       └── 📄 banner.png (56次) 🟢 正常
├── 📁 管理后台/ (45次访问) ⚠️ 异常,点击分析
│   ├── 📄 login.php (23次) 🟡 异常,点击分析  
│   └── 📄 admin.php (22次) 🔴 异常,点击分析
└── 📄 首页 (5,678次) 🟢 正常

技术架构:

// Trie树数据结构 - 构建URL层次结构
class TrieNode {
  children: Map<string, TrieNode> = new Map()
  logs: LogEntry[] = []
  totalCount: number = 0
  threatCount: number = 0
  
  insert(pathParts: string[], log: LogEntry) {
    let current: TrieNode = this
    
    for (const part of pathParts) {
      if (!current.children.has(part)) {
        current.children.set(part, new TrieNode())
      }
      current = current.children.get(part)!
      current.totalCount++
      
      // 威胁统计
      if (log.threatLevel && log.threatLevel !== 'normal') {
        current.threatCount++
      }
    }
    
    current.logs.push(log)
  }
  
  toTree(): TreeNode {
    return {
      name: this.name,
      count: this.totalCount,
      threatCount: this.threatCount,
      children: Array.from(this.children.entries()).map(([name, node]) => ({
        name,
        ...node.toTree()
      }))
    }
  }
}

虚拟化渲染优化:

// 虚拟树视图 - 解决大数据集卡顿问题
export const VirtualTreeView = defineComponent({
  setup() {
    // 扁平化树结构用于虚拟滚动
    const flattenTree = (nodes: TreeNode[], level = 0): FlatNode[] => {
      const result: FlatNode[] = []
      
      for (const node of nodes) {
        result.push({ ...node, level, expanded: expandedNodes.has(node.id) })
        
        if (expandedNodes.has(node.id) && node.children?.length) {
          result.push(...flattenTree(node.children, level + 1))
        }
      }
      
      return result
    }
    
    // 只渲染可见节点
    const visibleNodes = computed(() => {
      const flattened = flattenTree(treeData.value)
      const start = Math.floor(scrollTop.value / nodeHeight)
      const end = start + visibleCount
      return flattened.slice(start, end)
    })
    
    return { visibleNodes }
  }
})

交互功能:

  • 详细视图: 点击节点弹出模态框,显示当前路径的所有访问记录
  • 分析视图: 查看当前接口的访问统计、响应时间分布、错误率等
  • 快速定位: 一键跳转到日志表格的具体条目
  • 威胁可视: 节点颜色表示威胁等级,一目了然

3️⃣ 智能聚合视图 📊 - 数据洞察利器

技术实现:

// 聚合数据计算引擎
export class AggregationEngine {
  aggregateByField(logs: LogEntry[], field: keyof LogEntry): AggregatedData[] {
    const aggregation = new Map<string, AggregatedItem>()
    
    logs.forEach(log => {
      const value = String(log[field])
      const item = aggregation.get(value) || {
        value,
        count: 0,
        threatCount: 0,
        lastAccess: new Date(0),
        samples: []
      }
      
      item.count++
      if (log.threatLevel && log.threatLevel !== 'normal') {
        item.threatCount++
      }
      
      if (new Date(log.timestamp) > item.la

Related Skills

View on GitHub
GitHub Stars296
CategoryDevelopment
Updated1d ago
Forks31

Languages

JavaScript

Security Score

95/100

Audited on Apr 1, 2026

No findings