首先介绍下 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 工具。
PMP,全称是Percona Monitoring Plugins,是Percona公司为MySQL监控写的插件。支持Nagios,Cacti。从PMP 1.1开始,支持Zabbix。下面,看看如何在Zabbix上安装PMP。
配置Zabbix Agent
下载PMP
因为我的Linux版本是RHEL 6.7,故选择RPM包
# wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm
# rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm
warning: percona-zabbix-templates-1.1.6-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
Preparing...########################################### [100%]
1:percona-zabbix-template########################################### [100%]
Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates
拷贝PMP的配置文件
# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
确保Zabbix-Agent配置文件中已经开启Include=/etc/zabbix/zabbix_agentd.d/
重启Zabbix-Agent服务
# service zabbix-agent restart
创建MySQL的监控用户
mysql>grant process,super,select on *.* to monitor@'localhost' identified by 'monitor'
mysql>flush privileges
修改脚本中的用户名和密码
# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
$mysql_user = 'monitor'
$mysql_pass = 'monitor'
$mysql_port = 3306
测试脚本能否获取到数据库的状态信息
该脚本需测试两部分内容
1. MySQL实例本身的状态变量
2. MySQL是否为Slave
测试MySQL实例本身的状态变量
# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh: line 35: /usr/bin/php: No such file or directory
ERROR: run the command manually to investigate the problem: /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg
因为它的脚本是用PHP实现的,故需要安装php和php-mysql
# yum install php php-mysql
重新测试该脚本
# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
有值返回就代表OK
测试MySQL是否为Slave
# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave
返回0和1是正常值,返回“Access denied”则有问题。
导入PMP的模板
即/var/lib/zabbix/percona/templates目录中的zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml
mysql4.1及以后版本包含了空间数据引擎,可以通过sql语句存取空间数据、进行空间查询。mysql的Spatial引擎使用OGC(Open GIS Consortium)定义的WKT(Well-Known Text)/WKB(Well-Known Binary)格式保存空间数据。mysql空间数据模型 * Geometry (未支持) o Point (已支持) o Curve (未支持) + LineString (已支持) # Line # LinearRing o Surface (未支持) + Polygon (已支持) o GeometryCollection (已支持) + MultiPoint (已支持) + MultiCurve (未支持) # MultiLineString (已支持) + MultiSurface (未支持) # MultiPolygon (已支持) 更多的信息请查阅 mysql参考文档第18章(版本4.1.8,其他版本章节号可能有出入)应用实例geoTable表的结构字段 类型 id INT geo GEOMETRY建表SQL语句"CREATE TABLE geoTable (`id` int(11) NOT NULL auto_increment, `geo` geometry default NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM"注意:只有MyISAM类型的表支持空间数据插入一条折线到geoTable表中INSERT INTO geoTable VALUES (GeomFromText(LINESTRING(0 0,1 1,2 2)))返回整个表的数据"SELECT id, AsText(geo) FROM geoTable"返回Polygon区域内的数据"SELECT id, AsText(geo) FROM geoTable WHERE MBRIntersects(GEO, GeomFromText('Polygon((...))'))"完整的应用实例可以查看开源webgis平台openmap的MysqlGeometryLayer.java文件欢迎分享,转载请注明来源:内存溢出
评论列表(0条)