You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Python脚本提取NiFi日志中ERROR及处理器信息失败

NiFi ERROR日志信息提取脚本修复

问题背景

默认NiFi无内置监控功能,需从nifi-app.log中过滤ERROR级别日志及处理器相关信息,通过cat nifi-app.log | grep ERROR可得到如下格式的日志:

2022-08-04 23:39:13,790 ERROR [Timer-Driven Process Thread-3] org.apache.nifi.processors.kudu.PutKudu PutKudu[id=b0fb3488-6c64-1d43-8c99-eada1eb75718] Failed to write due to Row error for primary key="ce70cb52-1c1e-4dd4-a8e1-3fb658dfef45\x00\x00c23e26d7-144f-4f5b-b47e-f9fe0050af30\x00\x00\x80\x00\x01\x82l\x9A\xA3\x90", tablet=null, server=null, status=Not found: ([0x0000000280000181B70EA800, 0x000000038000000000000001))

该日志包含日期(2022-08-04)、时间(23:39:13)、日志级别(ERROR)、处理器名称(PutKudu)、处理器ID(b0fb3488-6c64-1d43-8c99-eada1eb75718)、异常信息等内容。

原脚本失败原因

原脚本核心错误是使用split("~")分割日志内容,但目标日志中不存在~分隔符,导致所有基于此的分割操作全部失效。此外,原脚本的字符串分割逻辑过于复杂且依赖不稳定的空格分割,容错性极低。

修复后的提取脚本

使用正则表达式匹配固定格式的日志字段,更可靠且易维护:

import re

# 定义日志匹配正则,覆盖所有需要提取的字段
log_pattern = re.compile(
    r'^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2}),\d+ (\w+) \[.+\] .+\.(\w+) \w+\[id=([0-9a-f-]+)\] (.+)$'
)

# 读取过滤后的ERROR日志文件(也可直接读取原nifi-app.log并过滤)
output_lines = []
with open('nifi-app-error.log', 'r') as f:
    for line in f:
        line = line.strip()
        match = log_pattern.match(line)
        if match:
            date = match.group(1)
            time = match.group(2)
            log_level = match.group(3)
            processor = match.group(4)
            processor_id = match.group(5)
            message = match.group(6).replace(',', ':')  # 按需求替换逗号为冒号
            # 按指定格式拼接结果
            output_line = f"{log_level},{processor_id},{processor},{message},{date},{time}"
            output_lines.append(output_line)

# 将结果写入新文件
with open('nifi-error-extract-result.csv', 'w') as out_f:
    out_f.write('\n'.join(output_lines))

脚本说明

  • 正则表达式log_pattern精准匹配日志各字段:
    • (\d{4}-\d{2}-\d{2}):匹配日期(如2022-08-04)
    • (\d{2}:\d{2}:\d{2}):匹配时间(如23:39:13)
    • (\w+):匹配日志级别(如ERROR)
    • (\w+):匹配处理器名称(如PutKudu)
    • ([0-9a-f-]+):匹配处理器ID(UUID格式)
    • (.+):匹配剩余的异常信息
  • 处理后的结果按日志级别,处理器ID,处理器,异常信息,日期,时间格式写入目标文件,可直接用于后续分析。

内容的提问来源于stack exchange,提问作者Bigvision tech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:15:30