项目简介

TWSLA(TWSNMP Log Analyzer)是一个简单而强大的日志分析工具,隶属于TWSNMP系列。它支持在Linux/Mac OS/Windows上运行,能够导入、搜索、分析日志,并提供多种高级功能,如异常检测、TF-IDF分析和AI辅助分析。其中包含的MCP服务器功能,使其能够作为一个标准化的后端服务,为LLM(大型语言模型)客户端提供丰富的日志上下文信息和操作能力。

主要功能点

  • 日志导入与管理: 支持从文件、目录、SCP/SSH、TWSNMP FC和TwLogEye导入多种格式(如纯文本、ZIP、TAR.GZ、GZ、Windows EVTX)的日志,并存储在本地的BBolt数据库中。
  • 日志搜索与过滤: 提供灵活的简单过滤和正则表达式过滤功能,支持按时间范围、关键字、正则表达式进行日志搜索。
  • 日志统计与提取: 能够按时间、IP地址、MAC地址、电子邮件、主机名、域名、国家/地区等多种维度统计日志数量,或从日志中提取特定数据。
  • 高级分析: 包含TF-IDF稀有日志检测、基于隔离森林的异常日志检测(如SQL注入、OS命令注入、目录遍历、Walu等模式)、日志时间差分析以及热力图展示。
  • 威胁检测: 支持使用SIGMA规则进行威胁检测。
  • AI辅助分析: 可与本地Ollama和Weaviate LLM服务结合,进行日志的问答和摘要分析。
  • MCP服务器接口: 通过标准化的JSON-RPC协议,将上述核心日志分析能力作为工具暴露给LLM客户端,实现AI驱动的日志分析工作流。

安装步骤

  1. Linux/macOS:
    • 推荐使用Shell脚本安装:
      $curl -sS https://lhx98.linkclub.jp/twise.co.jp/download/install.sh | sh
    • 或使用Homebrew安装:
      $brew install twsnmp/tap/twsla
  2. Windows:
    • 从Release页面下载zip文件。
    • 或使用Scoop安装:
      >scoop bucket add twsnmp https://github.com/twsnmp/scoop-bucket
      >scoop install twsla

服务器配置

TWSLA的MCP服务器功能通过'twsla mcp'命令启动。MCP客户端需要配置以下信息以连接到TWSLA MCP服务器:

{
  "server_name": "TWSLA MCP Server",
  "command": "twsla",
  "args": [
    "mcp",
    "--transport",
    "stdio",
    "--endpoint",
    "127.0.0.1:8085",
    "--geoip",
    "/path/to/GeoLite2-City.mmdb"
  ],
  "description_args": {
    "command": "用于启动TWSLA MCP服务器的命令行工具,通常是'twsla'。",
    "args": "传递给'twsla'命令的参数列表。其中:",
    "--transport": "MCP服务器的传输协议,支持'stdio'(标准输入输出)、'sse'(Server-Sent Events)或'stream'(HTTP流)。",
    "--endpoint": "MCP服务器绑定的地址和端口,例如 '127.0.0.1:8085'。在'stdio'模式下可省略。",
    "--clients": "在'stream'传输模式下,允许连接的MCP客户端IP地址列表,以逗号分隔(例如 '192.168.1.100,192.168.1.101')。",
    "--geoip": "GeoIP数据库文件路径,用于IP地址的地理位置信息查询(例如 '/path/to/GeoLite2-City.mmdb'),需要从MaxMind等提供商获取。"
  }
}

注意:

  • '--transport'默认为'stdio',适用于本地测试或管道通信。对于网络通信,请选择'sse'或'stream'。
  • '--endpoint'在'stdio'模式下可忽略,但在'sse'和'stream'模式下是必需的。
  • 如果使用'stream'传输协议,可以通过'--clients'参数限制允许连接的客户端IP地址。
  • '--geoip'参数用于启用IP地理位置查询功能,需要提供MaxMind GeoLite2 City数据库文件路径。

基本使用方法

  1. 启动MCP服务器:
    $twsla mcp --transport sse --endpoint 127.0.0.1:8085
    # 这将启动一个SSE协议的MCP服务器,监听在本地8085端口。
    # 客户端将通过该地址与服务器通信。
  2. MCP客户端连接: 您的MCP客户端将使用上述“服务器配置”中生成的JSON信息连接到TWSLA MCP服务器。
  3. 使用暴露的工具: MCP客户端可以通过JSON-RPC协议调用TWSLA MCP服务器暴露的日志分析工具,例如:
    • 'search_log': 搜索TWSLA数据库中的日志条目。
      • 参数:'filter_log_content' (字符串,用于过滤日志内容的正则表达式,空表示无过滤), 'limit_log_count' (数字,返回的最大日志数量,范围100-10000), 'time_range' (字符串,日志的时间范围,例如 '"2025/05/07 05:59:00,1h"' 或 '"start,end"')。
      • 示例用途:LLM客户端请求搜索过去1小时内包含"error"的日志,以获取具体错误详情。
    • 'count_log': 统计日志数据。
      • 参数:'count_unit' (枚举类型,统计单位,如'time'、'ip'、'domain'、'country'、'normalize'), 'time_range' (字符串,时间范围), 'top_n' (数字,限制返回前N个结果)。
      • 示例用途:LLM客户端请求统计过去24小时内访问量最高的IP地址,以发现潜在异常来源。
    • 'extract_data_from_log': 从日志中提取结构化数据。
      • 参数:'extract_pattern' (字符串,提取数据的正则表达式模式,如'ip=([0-9.]+)'), 'time_range' (字符串,时间范围), 'pos' (数字,指定捕获组的位置)。
      • 示例用途:LLM客户端请求从Web服务器日志中提取所有请求响应时间,用于性能分析。
    • 'import_log': 导入日志到TWSLA数据库。
      • 参数:'log_path' (字符串,日志文件或目录路径,支持ZIP、TAR、EVTX等格式), 'filename_pattern' (字符串,用于过滤文件名的正则表达式)。
      • 示例用途:LLM客户端请求导入新收集的日志文件到数据库,以便后续分析。
    • 'get_log_summary': 生成指定时间范围内的日志活动摘要。
      • 参数:'time_range' (字符串,时间范围), 'error_words' (字符串,定义错误级别的关键词列表), 'warning_words' (字符串,定义警告级别的关键词列表), 'error_top_n' (数字,返回前N个错误模式)。
      • 示例用途:LLM客户端请求获取上周的日志摘要,包括错误和警告的统计,以便快速了解系统健康状况。

这些工具使LLM能够以编程方式查询和分析日志数据,从而实现智能化的系统监控、故障诊断和安全分析。

信息

分类

AI与计算