求适配MySQL 5.7.39的免费CSV格式审计日志插件及McAfee日志转CSV方法
推荐免费CSV格式MySQL审计日志插件
Percona Audit Log Plugin:完全兼容MySQL 5.7系列(含5.7.39)的免费开源插件,支持直接输出CSV格式审计日志。配置时在
my.cnf/my.ini中添加以下参数即可:plugin_load_add = audit_log.so audit_log_format = CSV audit_log_file = /var/log/mysql/audit.log audit_log_policy = QUERIES # 可按需调整为LOGINS/ALL等,减少不必要的日志输出它支持自定义事件过滤,能有效控制日志体积,且日志结构清晰易读。
适配版MariaDB Audit Log Plugin:虽然MySQL 5.7.39不再原生支持该插件,但可基于MariaDB开源代码手动编译适配版本,编译时匹配MySQL 5.7.39的编译参数,就能在目标环境运行,同样支持CSV格式输出。
McAfee JSON日志转CSV方法
如果暂不更换插件,可通过以下方式将JSON格式日志转换为CSV:
1. jq命令行工具(高效推荐)
jq是轻量的JSON处理工具,可直接提取字段生成CSV。假设日志JSON包含timestamp、user、query、client_ip字段,执行命令:
# 生成带表头的CSV jq -r '["timestamp","user","query","client_ip"], (.[] | [.timestamp, .user, .query, .client_ip]) | @csv' mcafee_audit.log > audit.csv
若日志为每行一个独立JSON对象(非数组结构),则用:
jq -r '["timestamp","user","query","client_ip"], [.timestamp, .user, .query, .client_ip] | @csv' mcafee_audit.log | awk 'NR==1 || NR%2==0' > audit.csv
可根据实际日志的字段名调整命令中的字段列表。
2. Python脚本自定义转换
适合需要过滤特定事件、字段映射的场景,用Python标准库即可实现:
import json import csv # 定义需提取的日志字段 target_fields = ["timestamp", "user", "query", "client_ip"] with open("mcafee_audit.log", "r") as log_f, open("audit.csv", "w", newline="") as csv_f: writer = csv.DictWriter(csv_f, fieldnames=target_fields) writer.writeheader() for line in log_f: try: entry = json.loads(line.strip()) # 提取目标字段,缺失字段填充空值 writer.writerow({f: entry.get(f, "") for f in target_fields}) except json.JSONDecodeError: continue # 跳过无效JSON行
3. Excel可视化转换
针对少量日志,可先将JSON日志按行拆分(每行一个JSON对象),再通过Excel的「数据>来自文件>来自JSON」功能导入数据,最后导出为CSV格式。
内容的提问来源于stack exchange,提问作者Irfi
相关产品推荐
相关产品推荐

