监控意义
1 协助DBA进行历史和现阶段的问题排查
2 记录趋势图
监控目标
1 务必要搞懂每一个监控项的意义
2 监控项在于精而不在于多
3 linux一个监控页面 mysql一个健康页面 相关的监控项进行汇总
监控数据来源
1 show slave status 2 show global status 3 show global variables 4 show processlist 5 show engine innodb status \G 6 performace_schema相关 7 其他剩余
监控项
mysql
1 TPS 事务每秒量
2 QPS 查询每秒量
3 uptime 运行时间
4 connections
1 total 最大连接数
2 used 已使用的最大连接数
5 thread
1 thread_created running+sleep状态的连接
2 thread_running running状态的连接
6 细化TPS
insert/update/delete 针对不同事务操作的分类统计
7 tempoary
1 disk_file 创建在磁盘上的临时文件
2 table 创建的临时表
8 slow-query 慢日志变化曲线
9 aborted conn
aborted_connections 中断的连接
aborted_client 中断的客户端
10 table_locks
table_locks_immediate 表锁(非等待)
table_locks_wait 表锁(等待)
11 network_bytes
1 out 2 in 基于mysql级别的流量进出口统计
12 table_define_1
1 open tables 打开表句柄的数量
2 open tables define 预定义的表缓存句柄数量
13 table_define_2
1 table_open_cache_misses 未命中打开表的数量
2 Misses due to Overflows 溢出数量
13 file相关
1 open_file mysql级别的打开文件数量
2 file_limit mysql级别的文件打开数的限制
14 thread
1 thread_cache_size 缓存的线程所占大小
2 thread_cached 缓存的线程数量
15 Handler状态
事务handler
commit|rollback|savepoint.*|prepare状态
查询handler
非 commit|rollback|savepoint.*|prepare状态
Handler_read_next (主要关心)
Handler_read_rnd_next表示“在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。
16 slave相关
1 second_behind
2 read_only
3 sql_thread && io_thread
4 io_error
17 processlist->state状态
类似 sending_data init free items 等
18 innodb status
1 checkpoint_avg checkpoint维持数据页 日志页 ibdata三者统一
2 row_operation 增删查改统计
3 row_lock 行锁定
19 buffer_pool相关
1 buffer_pool size 总大小
2 buffer_pool request 和命中率相关 1 总request 2 disk read request 3 write request
3 page角度的事务监控 1 page read 2 page write 3 page created
监控项 linux
1 DISK
1 iops 标准经典的磁盘监控项,观察每秒读写总揽
2 latch 1 read 2 write 分别监控读写磁盘的延时
3 space 监控剩余可用
4 io util值
5 流量 也即写入和读取的流量
2 cpu监控相关
1 user system 使用率
2 iowait cpu等待IO时间片
3 context switches 上下文切换 context switch过高,会导致CPU像个搬运工,频繁在寄存器和运行队列直接奔波 ,更多的时间花在了线程切换,而不是真正工作的线程上
4 interrputs 中断
3 内存
1 total / used /avliable 2 swap
4 network
1 进口流量 2出口流量 3 TCP连接 状态 4 丢包率(TCP/UDP/ICMP) 5 packet数量
5 其他
1 文件打开数 2 进程 3 tcp