zabbix 監控mysql
阿新 • • 發佈:2022-12-05
1. ping檢測
1.1 建立密碼檔案,如果是二進位制安裝,需要將該檔案存放etc/目錄下
cat /etc/zabbix/.my.cnf [client] user= password= [mysql] user= password= [mysqladmin] user= password=
1.2. 配置監控項,不建議對本機進行ping測試,應至少兩臺資料庫伺服器進行ping測試
UserParameter=mysql_ping,HOME=/etc/zabbix /usr/bin/mysqladmin -h172.16.xxx.xxx ping | grep -c alive
1.3. 重啟zabbix-agent
1.4 建立模板或監控項-觸發器等
2. 狀態監測
2.1 指令碼
import json import sys import pymysql from cryptography.hazmat.backends import default_backend host = "192.168.20.232" password = "Mysql@123456.." conn = pymysql.connect(host=host, user='root', password=password) cursor = conn.cursor() class MysqlGlobalStatus: def __init__(self, status): self.status= status def show_status(self): cursor.execute("show global status") data = dict(cursor.fetchall()) return data[self.status] if __name__ == '__main__': # status = sys.argv[1] # x = MysqlGlobalStatus(status) # print(int(x.show_status())) x = MysqlGlobalStatus("Max_execution_time_exceeded") print(int(x.show_status())) cursor.close() conn.close()
2.2. 配置監控引數
UserParameter=mysql_get_status[*],python3 -W ignore /etc/zabbix/zabbix_agentd.conf.d/MysqlGlobalStatus.py "$1"
2.3. 建立監控模板
其他
非互動式執行命令
mysql -uroot -p -e "show global status" >sql.txt
一些引數解釋
-- 檢視查詢時間超過long_query_time秒的查詢的個數。 Slow_queries -- 檢視建立時間超過slow_launch_time秒的執行緒數。 Slow_launch_threads Threads_connected 當前開啟的連線數。 --檢視執行緒快取內的執行緒的數量。 Threads_cached --檢視建立用來處理連線的執行緒數。如果Threads_created較大,你可能要增加thread_cache_size值。 Threads_created --檢視啟用的(非睡眠狀態)執行緒數。 Threads_running -- 檢視不能立即獲得的表的鎖的次數。如果該值較高,並且有效能問題,你應首先優化查詢,然後拆分表或使用複製。 Table_locks_waited --檢視立即獲得的表的鎖的次數。 Table_locks_immediate -- 檢視建立時間超過slow_launch_time秒的執行緒數。 Slow_launch_threads -- 鎖定狀態 mysql> show global status like '%lock%'; Table_locks_waited/Table_locks_immediate=0.3% 如果這個比值比較大的話,說明表鎖造成的阻塞比較嚴重 Innodb_row_lock_waits innodb行鎖,太大可能是間隙鎖造成的 -- Binlog Cache 使用狀況 show status like 'Binlog_cache%'; 如果Binlog_cache_disk_use值不為0 ,可能需要調大 binlog_cache_size大小 -- Innodb_log_waits 量 Innodb_log_waits 日誌緩衝區太小而需要等待重新整理才能繼續的次數,Innodb_log_waits值不等於0的話,表明 innodb log buffer 因為空間不足而等待 Aborted_connects 連線到 MySQL 伺服器的失敗嘗試次數 Connection_errors_max_connections 由於 max_connections達到伺服器限制而拒絕的連線數。 Mysqlx_connection_errors 導致錯誤的連線數。 Connection_errors_accept accept()在偵聽埠上 呼叫期間發生的錯誤數 。 Connection_errors_internal 由於伺服器內部錯誤(例如無法啟動新執行緒或記憶體不足情況)而被拒絕的連線數。 Mysqlx_sessions 已開啟的會話數 Max_execution_time_exceeded SELECT超過執行超時 的語句數。
官方文件:MySQL :: MySQL 8.0 Reference Manual :: 5.1.10 Server Status Variables