监控mysql各种选项

安装mysql之后,需要对mysql服务进行监控。

nagios开源自带的check_mysql 对 mysql 的slave 机监控倒是不错。但是对数据库主机监控就略显不足了。

使用一个监控插件:check_mysql_health

下载和使用方法见:

http://exchange.nagios.org/directory/MySQL/check_mysql_health/details

具体监控:

对于slave 机 ,使用nagios 自带的 check_mysql 监控

command[check_mysql_slave]=/usr/local/nagios/libexec/check_mysql -H localhost -s /tmp/mysql.sock -u root -p xxx -S -w 1 -c 3

其中用户和密码有可能会更改。延迟1秒警告,延迟3秒报警。

check_mysql_health 监控mysql master 服务器

/usr/local/nagios/libexec/custom/check_mysql_health --hostname localhost --socket /tmp/mysql.sock --username root --password xxxxxx --mode xxxxx --warning xxxxx --criticalxxxxx

mode:

connection-time (Time to connect to the server) 

uptime (Time the server is running) 

threads-connected (Number of currently open connections) 

threadcache-hitrate (线程缓存命中率) 

slave-lag (Seconds behind master) 

slave-io-running (Slave io running: Yes) 

slave-sql-running (Slave sql running: Yes) 

qcache-hitrate (查询命中率,如果这个值接近100%,说明服务器select的优化就越好) 

qcache-lowmem-prunes (因为内存小,从内存删除缓存查询的数量,可以增大query_cache_size,减小lowmem,增加命中率的优化) 

keycache-hitrate (MyISAM key 缓存命中率,如果命中率太低,增大key_buffer_size) 

bufferpool-hitrate (InnoDB 缓冲池命中率) 

bufferpool-wait-free (InnoDB 缓冲池等待清理的页面) 

log-waits (InnoDB log 等待写入时间,如果这个等待时间太大,增大log缓冲池大小) 

tablecache-hitrate (Table 缓存命中率) 

table-lock-contention (Table 的lock率) 

index-usage (索引使用率,越大说明索引越好,越小说明索引优化不充分) 

tmp-disk-tables (临时表创建的数量) 

slow-queries (慢查询占所有查询的比率,这个值如果很高说明mysql数据库优化不够) 

long-running-procs (长期运行的进程) 

cluster-ndbd-running (mysql集群监控) 

sql (执行一个返回一个数字的SQL,检查mysql是否可以链接查询)

举例:

nrpe.cfg:

command[check_mysql_health]=/usr/local/nagios/libexec/custom/check_mysql_health --hostname localhost --socket /tmp/mysql.sock --username xxxxx --password xxxxx --mode $ARG1$ --warning $ARG2$ --critical $ARG3$

xxx.cfg:

define service{

        use                     xxxxxx

        host_name               xxxxxx

        service_description     mysql数据库连接数

        check_command           check_nrpe_args!check_mysql_health!threads-connected!80!120

}

define service{

        use                     xxxxx

        host_name               xxxxx

        service_description     mysql数据库innodb缓存命中

        check_command           check_nrpe_args!check_mysql_health!bufferpool-hitrate

}

define service{

        use                     xxxxx

        host_name               xxxxx

        service_description     mysql数据库innodb缓冲池等待清理的页

        check_command           check_nrpe_args!check_mysql_health!bufferpool-wait-free

}

define service{

        use                     xxxxx

        host_name               xxxxx

        service_description     mysql数据库innodblog写入等待时间

        check_command           check_nrpe_args!check_mysql_health!log-waits

}

define service{

        use                     xxxxx

        host_name               xxxxx                                                                                   

        service_description     mysql数据库锁表率

        check_command           check_nrpe_args!check_mysql_health!table-lock-contention

}

define service{

        use                     xxxxx                                                                                  

        host_name               xxxxx

        service_description     mysql数据库打开文件数

        check_command           check_nrpe_args!check_mysql_health!open-files!80!90

}

define service{

        use                     xxxxx                                                                                 

        host_name               xxxxx

        service_description     mysql数据库慢查询率

        check_command           check_nrpe_args!check_mysql_health!slow-queries!5!10

}

搞定。

PS:对 warnging 和 critical 的值 :  10 就是 大于10%报警, 10: 就是小于10%报警, 不填就是默认的数值。

mode 一个语句只能一个,

--mode xxx1  xxx2    : xxx1 生效

--mode xxx1  --mode xxx2  : xxx2 生效

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

记一次SQL server 2005 到SQL server 2008 数据库迁移

    最近周末完成了一个从SQL server 2005升级到SQL server 2008的升级迁移,其实质是一个服务器迁移的过程。比较复杂的是这个服务器上...

19440
来自专栏性能与架构

InnoDB 日志文件大小设为多大合适?

InnoDB 日志文件的作用 Innodb 数据表崩溃后,再次启动时,MySQL会扫描日志文件,看哪些记录不在表空间中,对其进行 redo 操作,从而完成数据恢...

904110
来自专栏数据和云

Oracle 12.2新特性掌上手册 - 第一卷 Availability

注:文章内容来自官方文档翻译。若需要了解更多,请查阅官方文档。 1、Multi-Instance Redo Apply (多实例redo应用) 在Oracle ...

39860
来自专栏杨建荣的学习笔记

一个60亿数据表改分区表+数据清理的改进思路(r7笔记第19天)

今天有个同学问我一个问题,也是一个实际的案例,我简单分析了一下,发现还是有很多可以考究的地方。仅做参考。 问题是,系统里目前有一个大表,因为历史数据的沉淀,目前...

37890
来自专栏云计算教程系列

如何在CentOS 7上安装和使用PostgreSQL

关系数据库管理系统是许多网站和应用程序的关键组件。它们提供了一种存储,组织和访问信息的结构化方法。

24210
来自专栏张秀云的专栏

MySQL 压缩解决方案(一)

本文描述 mysql 压缩的使用场景和解决方案,包括压缩传输协议、压缩列解决方案和压缩表解决方案。

3.4K10
来自专栏大眼瞪小眼

Mysql语句的执行过程

当你希望MySQL能够以更高的性能运行查询时,最好的办法是弄清楚MySQL是如何优化和执行查询。《高性能MySQL》

10720
来自专栏程序猿

MySQL加载本地文本、导入SQL文件及其他常见命令行。

13730
来自专栏Java开发

Linux 卸载分区

卸载/dev/sda6分区 此时注意/dev/sda6是刚刚卸载了/data2的分区名

22020
来自专栏Java后端技术

Centos7 修改mysql指定用户的密码

3.修改密码,适用password()函数进行加密,实际上就是执行sql语句来更新指定用户的密码

10920

扫码关注云+社区

领取腾讯云代金券