SuperAPI AI 工具集

log-analyzer

部署与运维

查看项目

更新于 10-16 07:11

技能介绍

Log Analyzer 是一个日志文件分析技能,用于解析和分析日志文件中的模式、错误、趋势和统计信息。

【用途】 适合在以下情况使用:分析某个日志文件、在日志中查找错误、从日志中提取模式、从日志文件获取统计信息、按类型统计日志条目数量。 不适合在以下情况使用:实时日志流式处理(应使用 file-watcher + tail)、结构化数据分析(应使用 json-yaml-query)、日志转发(应使用日志转发器)。

【主要能力】

  • 基础分析:对日志文件进行整体分析,可输出摘要概览。
  • 错误分析:显示错误条目、仅显示错误、统计错误数量,并支持自定义错误正则模式。
  • 模式匹配:按正则搜索模式、统计匹配次数、显示指定行数的上下文。
  • 时间分析:按时间范围过滤、按最近时长(如 1h、24h、7d)过滤、按小时分组、展示事件时间线。
  • 日志格式支持:自动检测常见格式,也可显式指定 apache、nginx、json、syslog,或用 --regex 自定义格式及捕获组。
  • 统计:展示统计信息、按字段计数、取字段唯一值、按字段取 Top N。
  • 输出格式:text、json、csv,默认 text。

【使用方式】 通过调用 analyze.sh 脚本并传入日志文件与参数使用,例如:

  • 基础分析:{baseDir}/analyze.sh <logfile>,如 {baseDir}/analyze.sh /var/log/app.log,或加 --summary 显示摘要。
  • 错误分析:{baseDir}/analyze.sh app.log --errors;--errors-only 仅显示错误;--error-count 统计错误数量;--error-pattern "Failed|Error|Exception" 使用自定义错误模式。
  • 模式匹配:{baseDir}/analyze.sh app.log --pattern "user: \d+";加 --count 统计匹配;--context 3 显示 3 行上下文。
  • 时间分析:--time-range "2024-01-01" "2024-01-02";--last 1h 或 --last 24h;--hourly 按小时分组;--timeline 显示时间线。
  • 格式指定:--format apache / nginx / json / syslog;--format custom --regex '[(.?)] (\w+): (.)'。
  • 统计:--stats;--count-by level;--count-by hour;--unique "ip";--top 10 error。

常用选项包括:--summary(显示摘要概览,默认 false)、--errors(显示错误条目,默认 false)、--errors-only(仅显示错误,默认 false)、--error-pattern REGEX(自定义错误模式,默认内置)、--pattern REGEX(搜索模式)、--count(统计匹配次数)、--context N(显示上下文行数,默认 0)、--time-range START END(按时间范围过滤)、--last DURATION(最近时长)、--hourly(按小时分组)、--timeline(时间线)、--stats(统计)、--count-by FIELD(按字段计数)、--unique FIELD(字段唯一值)、--top N FIELD(按字段取 Top N)、--format FORMAT(日志格式,默认自动检测)、--regex REGEX(自定义正则)、--output FORMAT(输出格式 text/json/csv,默认 text)。

【输出示例】 摘要输出会展示总行数、日期范围、日志级别分布(如 INFO、WARNING、ERROR 的条数与占比)以及 Top 错误。错误分析会输出错误条目及其堆栈上下文。统计可输出 JSON 结构,包含文件、总行数、日期范围、各级别计数、Top 错误等。时间线以条形图形式按时段展示数量分布。

【适用场景示例】

  • 快速摘要:{baseDir}/analyze.sh /var/log/app.log --summary
  • 查找所有错误:{baseDir}/analyze.sh app.log --errors
  • 统计日志级别:{baseDir}/analyze.sh app.log --count-by level
  • Top 10 IP:{baseDir}/analyze.sh access.log --top 10 ip
  • 最近一小时错误:{baseDir}/analyze.sh app.log --errors --last 1h
  • 提取 JSON 字段:{baseDir}/analyze.sh app.log --format json --unique userId
  • 自定义模式:{baseDir}/analyze.sh app.log --pattern "user:\s*(\d+)" --count

【限制与说明】

  • 不适用于实时日志流、结构化数据分析与日志转发。
  • 会自动检测常见日志格式。
  • 支持压缩(.gz)与未压缩文件。
  • 支持通过通配符处理多个文件。
  • 对大文件采用流式处理,内存占用较低。
  • 对大多数格式支持日期过滤。
  • 资料未提供安装命令、具体代码实现、收费与价格信息,暂未提供。