首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Netdata将所有内容记录到mysql日志中。

Netdata将所有内容记录到mysql日志中。
EN

Server Fault用户
提问于 2020-02-25 18:27:00
回答 1查看 106关注 0票数 0

由于我为服务器上的所有查询启用了mariadb日志,因此使用Netdata每秒钟向我显示这些查询:

代码语言:javascript
运行
复制
SHOW GLOBAL VARIABLES LIKE 'max_connections'
11 Query     SHOW GLOBAL STATUS
11 Query     commit

我不得不说,这并不能帮助我投资服务器上发生的事情,因为它污染了我的日志。

有没有办法避免每秒钟记录这类查询?

EN

回答 1

Server Fault用户

发布于 2020-02-25 20:35:15

虽然可能是更明智的做法是指定数据库的确切问题,而不是试图清理日志。 (我建议使用grep或sed来实现这一点)。但是这里有一个过度设计的解决方案,它将一劳永逸地解决您的日志问题。

我们将将mysql日志重定向到fifo管道,该管道将被syslog读取和过滤。

若要执行此操作,请转到存储通用日志文件的文件夹中,删除/重命名原始日志&使用命令在其位置创建fifo管道:

代码语言:javascript
运行
复制
mkfifo mysql-general.log

检查您的my.cnf,它应该指向该文件:

代码语言:javascript
运行
复制
[mysqld]
general-log-file = /path/to/your/log/mysql-general.log

然后,将/etc/syslog-ng/syslog-ng.conf (centos 7实际上需要先安装它.)配置为读取FIFO管道,并在将结果写入最终文件时根据需要对其进行过滤。

下面是一个适合您需要的示例配置:

代码语言:javascript
运行
复制
source s_mysql_general_log { pipe("/path/to/your/log/mysql-general.log" program_override("mysql-general-log")); };
filter f_mysql_general_log { not match("^SHOW GLOBAL VARIABLES LIKE 'max_connections'") and not match("^11 Query     SHOW GLOBAL STATUS") and not match("^11 Query     commit"); };
destination d_mysql_general_log { file("/var/log/mysql-general.log"); }
log { source(s_mysql_general_log); filter(f_mysql_general_log); destination(d_mysql_general_log); flags(final);   };

因此,您将得到/var/log/mysql-general.log文件,而不需要查询您不喜欢的.稍后,我将尝试发布该解决方案的系统专用版本。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1004547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档