概述
简单分享个脚本用于实时观察MySQL数据库整体负载。
实用脚本
1、数据库配置
# cat /etc/zabbix/zabbix_agentd.d/my.cnf
######################################################
[mysql]
user=zabbix
password=xx@1234
[mysqladmin]
user=zabbix
password=xx@1234
######################################################
2、数据库实时负载脚本
mysqladmin --defaults-file=/etc/zabbix/zabbix_agentd.d/my.cnf extended-status -i1|awk 'BEGIN{local_switch=0}
$2 ~ /Queries$/ {q=$4-lq;lq=$4;}
$2 ~ /com_commit$/ {c=$4-lc;lc=$4;}
$2 ~ /Com_rollback$/ {r=$4-lr;lr=$4;}
$2 ~ /Com_select$/ {s=$4-ls;ls=$4;}
$2 ~ /Com_update$/ {u=$4-lu;lu=$4;}
$2 ~ /Com_insert$/ {i=$4-li;li=$4;}
$2 ~ /Com_delete$/ {d=$4-ld;ld=$4;}
$2 ~ /Innodb_rows_read$/ {irr=$4-lirr;lirr=$4;}
$2 ~ /Innodb_rows_deleted$/ {ird=$4-lird;lird=$4;}
$2 ~ /Innodb_rows_inserted$/ {iri=$4-liri;liri=$4;}
$2 ~ /Innodb_rows_updated$/ {iru=$4-liru;liru=$4;}
$2 ~ /Innodb_buffer_pool_read_requests$/ {ibprr=$4-libprr;libprr=$4;}
$2 ~ /Innodb_buffer_pool_reads$/ {ibpr=$4-libpr;libpr=$4;}
$2 ~ /Threads_connected$/ {tc=$4;}
$2 ~ /Threads_running$/ {tr=$4;
if(local_switch==0)
{local_switch=1; count=16}
else {
if(count>15) {
count=0;
print "------------------------------------------------------------------------------------------------------------------------------------ ";
print "Time-----| QPS | Commit Rollback TPS | select insert update delete | read inserted updated deleted | logical physical | Tcon Trun";
print "------------------------------------------------------------------------------------------------------------------------------------ ";
}else{
count+=1;
printf "%s | %-5d| \n ",strftime("%H:%M:%S") , lq
printf "%s | %-5d| %-6d %-7d %-5d| %-7d %-7d %-5d %-6d| %-7d %-7d %-7d %-7d| %-6d %-9d| %-4d %-2d \n", strftime("%H:%M:%S"),q,c,r,c+r,s,u,i,d,irr,ird,iri,iru,ibprr,ibpr,tc,tr;
}
}
}'
3、观察结果

本文分享了一个使用Zabbix Agent的脚本,通过`mysqladmin`命令获取MySQL数据库的实时性能指标,如查询速率、事务TPS等,帮助你实时监控数据库负载状况。

819

被折叠的 条评论
为什么被折叠?



