国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

快速通過zabbix獲取數(shù)據(jù)庫連接的信息及部分?jǐn)U展

瀏覽:49日期:2023-04-06 15:09:31

背景

隨著應(yīng)用系統(tǒng)的不斷增加,原本不告警的active threads,開始頻繁告警(一天2次左右)。雖然告警次數(shù)不多,而且該監(jiān)控項舍得閾值不高(不超過50),但對于運維來說數(shù)據(jù)庫的threads-running是一個必須要重視的點。

一般告警出現(xiàn)在半夜,不可能靠人工去記錄threads-running過線后,到底哪些連接正在處理。市面上也沒好的工具能自動記錄這些數(shù)據(jù),所以這時候就需要zabbix的action功能了。

zabbix配置

1. 定義監(jiān)控項

這里偷個懶,直接使用了percona模板中Threads Running監(jiān)控項:

2. 定義觸發(fā)器

同樣適用percona的觸發(fā)器設(shè)置:

3. 創(chuàng)建action

按照下圖的順序創(chuàng)建action:

4. action條件

A、B、C、D條件都滿足,才會觸發(fā)動作,這里盡量篩選的詳細(xì)點,免得出現(xiàn)zabbix錯誤調(diào)用的情況。

5. 完善操作內(nèi)容

這里適用ssh方式,當(dāng)然你也可以在類型欄使用自定義腳本選項,就是要多給zabbix客戶端賦sudo權(quán)限。

命令欄填的是/bin/sh /opt/connect.sh命令,這個很好理解,直接調(diào)用connect.sh腳本,具體腳本附在后文中。

6. 修改zabbix-agent配置

進(jìn)入被監(jiān)控服務(wù)器:

vim /etc/zabbix/zabbix_agentd.conf        EnableRemoteCommands=1  #增加這項參數(shù),意思是允許zabbix server遠(yuǎn)程命令    service zabbix-agent restart

至此,zabbix相關(guān)的配置均已完成,接下來只需要將寫好的處理腳本放入/opt目錄即可。

功能腳本

這次要實現(xiàn)的是,在連接超過50個時,輸出到底是哪個賬號、哪個ip、在執(zhí)行哪個sql等信息。腳本如下:

#!/bin/sh    export PATH=$PATH:/usr/bin    da=`date +%Y%m%d`    dc=`date +%Y-%m-%d" "%H:%M:%S`        echo $dc"-------------------------------我是分割線------------------------------------" >> /tmp/ok_$da.log        /usr/local/mysql/bin/mysql -uroot -pXXX -e "select * from information_schema.PROCESSLIST where COMMAND != "Sleep" order by TIME DESC;" >> /tmp/ok_$da.log

擴(kuò)展

既然zabbix在報警時可以調(diào)用腳本,那是不是可以讓zabbix處理點更為復(fù)雜的工作?

數(shù)據(jù)庫連接、鎖、存儲引擎等信息

#!/bin/shexport PATH=$PATH:/usr/binda=`date +%Y%m%d`dc=`date +%Y-%m-%d" "%H:%M:%S`echo $dc"-------------------------------我是分割線------------------------------------" >> /home/zabbix/engine_log/engine_log_$da.log/usr/bin/mysql -hlocalhost -uroot -pXXX -e "show engine innodb status \G;" >> /home/zabbix/engine_log/engine_log_$da.logecho -e "\n\n\n" >> /home/zabbix/engine_log/engine_log_$da.logecho $dc"-------------------------------我是分割線------------------------------------" >> /home/zabbix/processlist/processlist_$da.log/usr/bin/mysql -hlocalhost -uroot -pXXX -e "select * from information_schema.processlist where time>=0 and command !="sleep" order by time desc \G;" >> /home/zabbix/processlist/processlist_$da.logecho -e "\n\n\n" >> /home/zabbix/processlist/processlist_$da.logecho $dc"-------------------------------我是分割線------------------------------------" >> /home/zabbix/lock/lock_$da.log/usr/bin/mysql -hlocalhost -uroot -pXXX -e "select "Blocker" role, p.id, p.user, left(p.host, locate(":", p.host) - 1) host, tx.trx_id, tx.trx_state, tx.trx_started, timestampdiff(second, tx.trx_started, now()) duration, lo.lock_mode, lo.lock_type, lo.lock_table, lo.lock_index, tx.trx_query, tx.trx_tables_in_use, tx.trx_tables_locked, tx.trx_rows_locked from information_schema.innodb_trx tx, information_schema.innodb_lock_waits lw, information_schema.innodb_locks lo, information_schema.processlist p where lw.blocking_trx_id = tx.trx_id and p.id = tx.trx_mysql_thread_id and lo.lock_trx_id = tx.trx_id union all select "Blockee" role, p.id, p.user, left(p.host, locate(":", p.host) - 1) host, tx.trx_id, tx.trx_state, tx.trx_started, timestampdiff(second, tx.trx_started, now()) duration, lo.lock_mode, lo.lock_type, lo.lock_table, lo.lock_index, tx.trx_query, tx.trx_tables_in_use, tx.trx_tables_locked, tx.trx_rows_locked from information_schema.innodb_trx tx, information_schema.innodb_lock_waits lw, information_schema.innodb_locks lo, information_schema.processlist p where lw.requesting_trx_id = tx.trx_id and p.id = tx.trx_mysql_thread_id and lo.lock_trx_id = tx.trx_id \G;" >> /home/zabbix/lock/lock_$da.logecho -e "\n\n\n" >> /home/zabbix/lock/lock_$da.logval=`/usr/bin/mysql -hlocalhost -uroot -pXXX -N -e "show variables like "general_log"" |awk "{print $2}"`if [ $val = "OFF" ];then/usr/bin/mysql -hlocalhost -uroot -pXXX -e "set global general_log=0;"elseexit 0;fi

在數(shù)據(jù)庫壓力大的時候,可以記錄哥哥鎖信息、連接信息還有存儲引擎信息。所謂壓力大,我們可以將觸發(fā)項定以下幾個:

  • threads-running:running的連接過多
  • Innodb Row Lock Waits:鎖等待時間過長
  • Com Select\Update\Insert\Delete:增產(chǎn)查改過多
  • Incoming\Outgoing network traffic:進(jìn)出流量不正常時

這些都可以作為觸發(fā)條件。

殺死長sql

#!/bin/shexport PATH=$PATH:/usr/binda=`date +%Y%m%d`dc=`date +%Y-%m-%d" "%H:%M:%S`user="root"password="XXX"val=`mysql -u$user -p$password -N -e "select count(*) from information_schema.processlist where time>=180 and command ="Query" and user in ("job_name","report")" | awk "{print $1}"`if [ $val -gt 0 ];thenecho $dc"-------------------------------我是分割線------------------------------------" >> /home/zabbix/kill_log/long_query_$da.logmysql -u$user -p$password -e "select * from information_schema.processlist where time>=180 and command ="Query" and user in ("job_name","report") order by time desc \G;" >> /home/zabbix/kill_log/long_query_$da.logecho -e "\n\n\n" >> /home/zabbix/kill_log/long_query_$da.logcount=`mysql -u$user -p$password -N -e "select id from information_schema.processlist where time>=180 and command ="Query" and user in ("job_name","report")"`for id in $count;do   mysql -u$user -p$password -e "kill $id"doneelseexit 0;fi

有時候一些job或者報表sql會長時間在那里執(zhí)行,導(dǎo)致影響到其他業(yè)務(wù),我們可以簡單做下判斷,當(dāng)數(shù)據(jù)庫連接激增,多數(shù)是由于有大sql夯在那里,這時候可以讓zabbix調(diào)用這個腳本去殺死特殊賬號發(fā)起的超過180秒的sql。至于kill sql的條件可以在腳本中自定義。

當(dāng)然了,像這種明知需要很長時間才能處理完的sql,應(yīng)該放在從庫中去執(zhí)行。

刪除無用日志

#!/bin/shlogdir="/mysql/logs"binlog="/mysql/binlog"var_percent=`df -h |grep var|grep dev/sda|awk "{print $5}"|awk -F% "{print $1}"`if [ -z $var_percent ] || [ $var_percent -lt 90 ];thenecho "never mind"exit 0fidate >>$binlog/del_list.txtlist=`ls -l --time-style="+%Y-%m-%d %H:%M:%S" $binlog/mysql-bin.0?????|awk "{print $6","$7","$8}"`for i in $listdofiletime=`echo $i|awk -F "," "{print $1,$2}"`filetimestamp=`date -d "$filetime" +%s`cur_time=`date +%s`if [ $(($cur_time - $filetimestamp)) -gt $((3*24*3600)) ];thenfilename=`echo $i|awk -F, "{print $3}"`echo "$filename will delete">>$binlog/del_list.txt/bin/rm $filenamefidoneif [ -f $logdir/mysql-slow.log ];thenslow_log_size=`stat $logdir/mysql-slow.log|grep "Size:"|awk -F ":" "{print $2}"|awk "{print $1}"`if [ $slow_log_size -gt $((2*1024*1024*1024)) ];thenecho "$logdir/mysql-slow.log">>$logdir/del_list.txt/bin/rm $logdir/mysql-slow.logfifi

有些時候binlog和slowlog沒設(shè)置自動刪除,時間長了會把磁盤空間占滿。這時候我們可以關(guān)聯(lián)Free disk space on /mysql監(jiān)控項,查過閾值后,調(diào)用上面的腳本去清理無用的binlog和slowlog。

在有些依賴binlog的情況下,比如主從中斷,之后還需要恢復(fù)的情況下,需要謹(jǐn)慎使用。

參考鏈接 :

通過zabbix獲取數(shù)據(jù)庫連接的信息及部分?jǐn)U展 :https://www.jb51.net/article/207412.htm

到此這篇關(guān)于通過zabbix獲取數(shù)據(jù)庫連接的信息及部分?jǐn)U展的文章就介紹到這了,更多相關(guān)zabbix數(shù)據(jù)庫連接內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: Zabbix
主站蜘蛛池模板: 国产步兵社区视频在线观看 | 日本巨乳中文字幕 | 青青热久久国产久精品 | 国产成人亚洲综合 | 伊人不卡 | 欧美 日韩 国产 成人 在线观看 | 韩国三级日本三级香港三级黄 | 性欧美视频a毛片在线播放 性欧美一级 | a级在线观看 | 激情欧美日韩一区二区 | www射射一区 | 日本视频在线观看不卡高清免费 | 鲁老汉精品视频在线观看 | 欧美hdvideosex4k | 亚洲精品456在线播放无广告 | 成人亚洲国产精品久久 | 国产精品情侣久久婷婷文字 | 手机在线色 | 美国一级毛片在线 | 中国黄色一级毛片 | 国产精品久久久久久久久99热 | 直接在线观看的三级网址 | 日本免费一区尤物 | 欧美13一14sexvideo欧 | 国产精品久久久99 | 久久久久久免费观看 | 日本精品久久久久中文字幕 1 | 欧美α一级毛片 | 亚洲欧美久久精品一区 | 情侣偷偷看的羞羞视频网站 | 国产精品九九九久久九九 | 91久久夜色精品国产网站 | 视色4setv.com| 国产精品久久视频 | 成人观看的视频三级 | 日本欧美在线视频 | 香蕉毛片 | 久久777国产线看是看精品 | 黄色a毛片 | 好湿好紧好痛a级是免费视频 | 网禁呦萝资源网站在线观看 |