如何实现监控mysql,并将有变动的数据表写入指定的文件夹?

如何实现监控mysql,并将有变动的数据表写入指定的文件夹?,第1张

首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。

pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:

1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;

2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。

而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。

三、使用

接着我们来看下如何使用这个工具。

pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据

触发条件相关的参数有以下几个:

function:

∘ 默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;

∘ 也可以设置为 processlist,代表监控 show processlist 的输出;

variable:

∘ 默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;

threshold:

∘ 默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;

∘ 监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;

cycles:

∘ 默认为 5,表示连续观察到五次满足触发条件时,才触发收集;

连接参数:host、password、port、socket。

其他一些重要参数:

iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。

run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。

sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。

interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。

dest:监控数据存放路径,默认为 /var/lib/pt-stalk。

retention-time :监控数据保留时长,默认 30 天。

daemonize:以后台服务运行,默认不开启。

log:后台运行日志,默认为 /var/log/pt-stalk.log。

collect:触发发生时收集诊断数据,默认开启。

∘ collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。

∘ collect-strace:收集跟踪数据,需要 strace 工具。

∘ collect-tcpdump:收集 tcpdump 数据,需要 tcpdump 工具。

有两种方法:

1) 先导出数据库SQL脚本,再导入;

2) 直接拷贝数据库目录和文件

在不同 *** 作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。

所以一般推荐用SQL脚本形式导入。

一、从网上下载相应脚本与XML定义文件。

extensive_mysql_monitoring_including_replication

1. Template_MySQL_Server.xml

2. Template_MySQL_Replication_Master.xml

3. Template_MySQL_Replication_Slave.xml

和执行脚本:mysql.php

二、把mysql.php上传至配置文件目录/etc/zabbix/

1. chmod 755 mysql.php

三、修改mysql.php文件

根据本机环境。

第一行加入:#!/usr/bin/php

在最后一行加入:?>

关闭调试:define('DEBUG',true); 为 define('DEBUG',False);

修改日志、数据文件路径:

1. define('LOG',"/tmp/zabbix_".SYSTEM.".log");

2. define('DAT',"/tmp/zabbix_".SYSTEM.".dat");

3. define('UTIME',"/tmp/.zabbix_".SYSTEM.".utime");

4. define('DTIME',"/tmp/.zabbix_".SYSTEM.".dtime");

修改:define('SYSTEM','mysql'.(DEBUG ? "-debug" : ""));为:define('SYSTEM','mysql');

打开系统日志功能

>".LOG); 为

>".LOG);

在$cmd = "zabbix_sender -z $server -p 10051 -s $host -k ".SYSTEM.".$var -o $val";

下面增加一行:exec($cmd);

四、在zabbix_agentd.conf配置文件中加入

UserParameter=mysql.daily,php /etc/zabbix/mysql.php daily 用户名密码

UserParameter=mysql.live,php /etc/zabbix/mysql.php live 用户名 密码

daily:每天执行一次。

live:按指定时间执行一次。

php :执行php文件

/etc/zabbix/mysql.php:mysql.php文件所在的文件路径

用户名 密码:登录mysql数据库的账户与密码

重启zabbix_agentd

五、在zabbix web管理界面导入xml文件

配置-导入/导出-浏览

六、在主机内增加指定模板

配置-主机-具体主机名-Link with Template-新增-刚导入的模板。

模板分为三种:

template MYSQL_server:监控项最全

template MYSQL_Replication_Master:只监控主要参数,监控功能相对最少

template MYSQL_Replication_Slave:主要针对性能方面的监控。

七、测试监控是否成功

删除 定时文件

1. rm /tmp/.zabbix_mysql-debug.dtime;

取的每天的监控数据

1. php /etc/zabbix/mysql.php daily root *****

取即时数据

1. php /etc/zabbix/mysql.php live root *****

查看日志

1. cat /tmp/zabbix_mysql.log

2. Info from server: "Processed 1 Failed 0 Total 1 Seconds spent 0.006261"

3. sent: 1; skipped: 0; total: 1

4. Info from server: "Processed 1 Failed 0 Total 1 Seconds spent 0.004047"

5. sent: 1; skipped: 0; total: 1

6. Info from server: "Processed 0 Failed 106 Total 106 Seconds spent 0.045790"

7. sent: 106; skipped: 0; total: 106

看到上述为成功

查看DAT的文件。上传的数据

1. cat /tmp/zabbix_mysql.dat


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8753953.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-20
下一篇2023-04-20

发表评论

登录后才能评论

评论列表(0条)

    保存