MySQL8中的JSON格式错误日志
官方文档 .0/en/error-log-json.html
MySQL8开始,支持将错误日志输出为json格式,这样就很方便日志的统一集中化的收集。
安装方法很简单,只要2行命令即可:
代码语言:txt复制INSTALL COMPONENT 'file://component_log_sink_json';
SET PERSIST log_error_services = 'log_filter_internal; log_sink_json';
然后,可以搞一些错误的操作,例如输错密码达到登录失败的现象。(如果是个人测试,页可以重启mysqld达到在errlog里面记录很多错误信息的现象)
贴一行日志,说明下具体的含义:
代码语言:txt复制{
"prio": 3,
"err_code": 10926,
"component": "mysql_native_password",
"subsystem": "Server",
"source_file": "sql_authentication",
"function": "login_failed_error",
"msg": "Access denied for user 'dts'@'centos7-3' (using password: YES)",
"time": "2024-10-05T21:56:59.860874+08:00",
"ts": 1728136619860,
"thread": 22,
"err_symbol": "ER_ACCESS_DENIED_ERROR_WITH_PASSWORD",
"SQL_state": "HY000",
"label": "Note"
}
大致含义(详见:.0/en/error-log-rule-based-filtering.html):
prio:优先级,对应的值为 ERROR、 WARNING、 INFORMATION
err_code:错误代码
subsystem: 子系统项目,比如:Server、InnoDB等
source_file: 对应的源码文件
function: 函数名
msg:错误明细
time: 报错的时间
ts: 报错的时间戳
err_symbol:具体错误符号,具体的err_symbol可以参考:.0/en/server-error-reference.html
如果测试json日志记录没问题后,通常还会把日志接入到ELK(或者其他的日志系统中),便于查看和告警。
我这里是使用vector将errlog.log.*.json文件采集后,直接发送到ElasticSearch中(生产上可能还会经过kafka之类的MQ),最终在kibana展示效果如下:
除此之外,还可以对日志进行过滤(例如:同样的错误信息,超过一定的阈值后,在日志文件中只记录1条)
下面演示的是将 错误级别<=warning的信息不采集到json日志文件中。
配置也很简单:
代码语言:txt复制INSTALL COMPONENT 'file://component_log_filter_dragnet';
SET persist log_error_services = 'log_filter_internal; log_sink_internal; log_filter_dragnet;log_sink_json';
SET GLOBAL dragnet.log_error_filter_rules = 'IF prio<=WARNING THEN drop.';
这样设置后,就不会记录 “native_password_authentication_deprecation_warning”
这类提示信息,只记录超过这个级别的信息。
更全面的信息,可以下面的2个链接:
.0/en/error-log-rule-based-filtering.html
.0/en/error-log-priority-based-filtering.html
发布者:admin,转转请注明出处:http://www.yc00.com/web/1755018269a5226664.html
评论列表(0条)