共計 5707 個字符,預計需要花費 15 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
今天就跟大家聊聊有關使用 zabbix 怎么對 mysql 進行監控,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
zabbix 監控 mysql1、監控規劃
在創建監控項之前要盡量考慮清楚要監控什么,怎么監控,監控數據如何存儲,監控數據如何展現,如何處理報警等。要進行監控的系統規劃需要對 Zabbix 很了解,這里只是提出監控的需求。
需求一:監控 MySQL 的狀態,當狀態發生異常,發出報警;
需求二:監控 MySQL 的操作,并用圖表展現;
2、自定義腳本監控擴展 Agent
Zabbix Server 與 Agent 之間監控數據的采集主要是通過 Zabbix Server 主動向 Agent 詢問某個 Key 的值,Agent 會根據 Key 去調用相應的函數去獲取這個值并返回給 Server 端。Zabbix 2.4.7 的 Agent 本并沒有內置 MySQL 的監控功能(但是 Server 端提供了相應的 Template 配置),所以我們需要使用 Zabbix 的 User Parameters 功能,為 MySQL 添加監控腳本。
3、授權 mysql 登錄用戶(agent 端)
mysql grant usage on *.* to zabbix@127.0.0.1 identified by 123456
mysql flush privileges;
4、agent 端配置存活檢測
利用 UserParameter 參數自定義 Agent Key。
對于需求一,我們采用 mysqladmin 這個工具來實現,命令如下:
# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping
mysqld is alive
如果 MySQL 狀態正常,會顯示 mysqld is alive,否則會提示連接不上。對于服務器端,mysqld is alive 這樣的句子不好理解,服務器端最好只接收 1 和 0,1 表示服務可用,0 表示服務不可用。那么再改進一下這個命令,如下:
# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping |grep -c alive
1
用戶名和密碼放在命令中對于以后的維護不好,所以我們在 /var/lib/zabbix/ 下創建一個包含 MySQL 用戶名和密碼的配置文件“.my.cnf”,如下:
user=zabbix
host=127.0.0.1
password= 123456
有了這個文件后的命令變更為
HOME=/var/lib/zabbix/ mysqladmin ping |grep -c alive
1
做完這一步后需要做的就是,將這個監控命令添加到 Zabbix Agent 中,并與一個 Key 對應,這樣 Zabbox Server 就能通過這個 Key 獲取 MySQL 的狀態了。我們使用 mysql.ping 作為 MySQL 狀態的 Key。
首先在去除 /etc/zabbix/zabbix_agentd.conf 中
“Include=/etc/zabbix_agentd.d/”這一行的注釋符。
其次,在 /etc/zabbix/zabbix_agentd.d/ 目錄下創建 userparameter_mysql.conf 文件。在文件中添加如下命令:
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
使用下面的命令測試是否正常工作。
# /usr/sbin/zabbix_agentd -t mysql.ping
mysql.ping [t|1]
其他性能指標 1. 添加 userparameter_mysql
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
#### 監控 mysql 性能的腳本
UserParameter=mysql.status[*],/etc/zabbix/zabbix_agentd.d/check_mysql.sh $1
#####mysql 版本
UserParameter=mysql.version,mysql -V
2.check_mysql.sh
#!/bin/bash
# -------------------------------------------------------------------------------
# FileName: check_mysql.sh
# Revision: 1.0
# -------------------------------------------------------------------------------
# Copyright:
# License: GPL
# 用戶名
MYSQL_USER= zabbix
# 密碼
MYSQL_PWD= zabbix@123
# 主機地址 /IP
MYSQL_HOST= ip
# 端口
MYSQL_PORT= 3306
# 數據連接
MYSQL_CONN= /usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}
# 參數是否正確
if [ $# -ne 1 ];then
echo arg error!
# 獲取數據
case $1 in
Uptime)
result=`${MYSQL_CONN} status 2 /dev/null |cut -f2 -d : |cut -f1 -d T `
echo $result
Com_update)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_update |cut -d | -f3`
echo $result
Slow_queries)
result=`${MYSQL_CONN} status 2 /dev/null |cut -f5 -d : |cut -f1 -d O `
echo $result
Com_select)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_select |cut -d | -f3`
echo $result
Com_rollback)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_rollback |cut -d | -f3`
echo $result
Questions)
result=`${MYSQL_CONN} status 2 /dev/null |cut -f4 -d : |cut -f1 -d S `
echo $result
Com_insert)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_insert |cut -d | -f3`
echo $result
Com_delete)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_delete |cut -d | -f3`
echo $result
Com_commit)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_commit |cut -d | -f3`
echo $result
Bytes_sent)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Bytes_sent |cut -d | -f3`
echo $result
Bytes_received)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Bytes_received |cut -d | -f3`
echo $result
Com_begin)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_begin |cut -d | -f3`
echo $result
echo Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)
esac
3. 授權:
chmod +x /etc/zabbix/zabbix_agentd.d/check_mysql.sh
Chown zabbix.zabbix /etc/zabbix/zabbix_agentd.d/check_mysql.sh
4. zabbix_agent 上測試:
zabbix_agentd -t mysql.ping
5.Zabbix_server 測試
zabbix_get -s ip -P 端口 -k mysql.ping
5、在 web 端進行配置
** 創建主機 **
關聯模板
創建監控項
創建圖形
查看監控圖像
其他監控項以此配置完成
6、zabbix 自帶 mysql 監控項
version: 數據庫版本
key_buffer_size:myisam 的索引 buffer 大小
sort_buffer_size: 會話的排序空間(每個線程會申請一個)join_buffer_size: 這是為鏈接操作分配的最小緩存大小,這些連接使用普通索引掃描、范圍掃描、或者連接不適用索引
max_connections: 最大允許同時連接的數量
max_connect_errors:允許一個主機最多的錯誤鏈接次數,如果超過了就會拒絕之后鏈接(默認 100)。可以使用 flush hosts 命令去解除拒絕
open_files_limits: 操作系統允許 mysql 打開的文件數量,可以通過 opened_tables 狀態確定是否需要增大 table_open_cache, 如果 opened_tables 比較大且一直還在增大說明需要增大 table_open_cache
max-heap_tables_size: 建立的內存表的最大大小(默認 16M)這個參數和 tmp_table_size 一起限制內部臨時表的最大值 ( 取這兩個參數的小的一個),如果超過限制,則表會變為 innodb 或 myisam 引擎,(5.7.5 之前是默認是 myisam,5.7.6 開始是 innodb,可以通過 internal_tmp_disk_storage_engine 參數調整)。max_allowed_packet: 一個包的最大大小
##########GET INNODB INFO
#INNODB variables
innodb_version:
innodb_buffer_pool_instances:將 innodb 緩沖池分為指定的多個(默認為 1)innodb_buffer_pool_size:innodb 緩沖池大小、5.7.5 引入了 innodb_buffer_pool_chunk_size,
innodb_doublewrite:是否開啟 doublewrite(默認開啟)innodb_read_io_threads:IO 讀線程的數量
innodb_write_io_threads:IO 寫線程的數量
########innodb status
innodb_buffer_pool_pages_total:innodb 緩沖池頁的數量、大小等于 innodb_buffer_pool_size/(16*1024)
innodb_buffer_pool_pages_data:innodb 緩沖池中包含數據的頁的數量
########## GET MYSQL HITRATE
1、查詢緩存命中率
如果 Qcache_hits+Com_select 0 則為 Qcache_hits/(Qcache_hits+Com_select),否則為 0
2、線程緩存命中率
如果 Connections 0, 則為 1 -Threads_created/Connections,否則為 0
3、myisam 鍵緩存命中率
如果 Key_read_requests 0, 則為 1 -Key_reads/Key_read_requests,否則為 0
4、myisam 鍵緩存寫命中率
如果 Key_write_requests 0, 則為 1 -Key_writes/Key_write_requests,否則為 0
5、鍵塊使用率
如果 Key_blocks_used+Key_blocks_unused 0,則 Key_blocks_used/(Key_blocks_used+Key_blocks_unused),否則為 0
6、創建磁盤存儲的臨時表比率
如果 Created_tmp_disk_tables+Created_tmp_tables 0, 則 Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables),否則為 0
7、連接使用率
如果 max_connections 0,則 threads_connected/max_connections,否則為 0
8、打開文件比率
如果 open_files_limit 0,則 open_files/open_files_limit,否則為 0
9、表緩存使用率
如果 table_open_cache 0,則 open_tables/table_open_cache,否則為 0
看完上述內容,你們對使用 zabbix 怎么對 mysql 進行監控有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。
向 AI 問一下細節