監控意義
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