1. 程式人生 > 其它 >zabbix 監控mysql

zabbix 監控mysql

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

MySQL :: MySQL 5.7 參考手冊 :: 19.4.2.3 X 外掛狀態變數