日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用zabbix監(jiān)控mysql多實(shí)例

一臺機(jī)器上部署了多個(gè)MySQL實(shí)例,每個(gè)實(shí)例使用不同的端口,需要通過zabbix將其都納入監(jiān)控中,下面為大家分享一下zabbix監(jiān)控mysql多實(shí)例具體方法。

創(chuàng)新互聯(lián)公司專注于中大型企業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)和網(wǎng)站改版、網(wǎng)站營銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開發(fā)的融合,累計(jì)客戶成百上千,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專注成都品牌網(wǎng)站建設(shè)和互聯(lián)網(wǎng)程序開發(fā),在前進(jìn)的路上,與客戶一起成長!

用到的主要工具: 宏(分為模板宏,主機(jī)宏,自動發(fā)現(xiàn)宏)

     主機(jī)宏格式:$MACRO   (直接就可以 填  值)
          自動發(fā)現(xiàn)宏:#MACRO    (需要配合 創(chuàng)建的 key 取值)

大體架構(gòu)

1.agent主機(jī) — agent 主機(jī)創(chuàng)建 宏變量 $MYSQLPORT ,宏變量的值為 Discovery rules的 自動發(fā)現(xiàn)腳本參數(shù) 2.模板 — 模板里創(chuàng)建自動發(fā)現(xiàn)規(guī)則,靠的是自動發(fā)現(xiàn)腳本,得到自動發(fā)現(xiàn)宏變量。 3.監(jiān)控項(xiàng)– 在Discovery rules 里創(chuàng)建監(jiān)控項(xiàng),監(jiān)控項(xiàng)名稱和key值里都有自動發(fā)現(xiàn)宏變量,會自動生成相關(guān)端口的監(jiān)控項(xiàng) 4.客戶端 腳本和鍵創(chuàng)建,來支持整個(gè)架構(gòu)運(yùn)行

搭建步驟

1.創(chuàng)建模板

因?yàn)檫@個(gè)模板是 克隆 的默認(rèn) mysql監(jiān)控模板,可以忽略 items,triggers。 監(jiān)控項(xiàng)都在 Discovery rules 里。

2.為模板添加 自動發(fā)現(xiàn)宏(自動發(fā)現(xiàn)宏聲明的途徑就是下圖的腳本,腳本里只有生成固定的格式,zabbix就會認(rèn)定他是 自動發(fā)現(xiàn)宏)

上圖 里的 mysql.discovery 就是獲取 自動發(fā)現(xiàn)宏的 腳本,腳本是放在 agent端。

后面的 為此腳本執(zhí)行時(shí)帶的參數(shù),MYSQLPORT 是主機(jī)宏。

discovery rule 右邊的 filters 是過濾規(guī)則的意思,比方你 只想取腳本里的 某某 自動發(fā)現(xiàn)宏,就可以在里面設(shè)置。 這里就只有一個(gè)自動發(fā)現(xiàn)宏,所有不做 配置。

3.創(chuàng)建監(jiān)控項(xiàng)(監(jiān)控項(xiàng)和監(jiān)控的腳本都是要改的,因?yàn)樽詣影l(fā)現(xiàn)功能,至少腳本會多了一個(gè)參數(shù))

4.創(chuàng)建 主機(jī)宏

點(diǎn)開主機(jī),添加主機(jī)宏,宏名稱是 自動發(fā)現(xiàn)腳本里的 參數(shù), 宏的值就是 此 主機(jī)上需要監(jiān)控的端口。

這樣就實(shí)現(xiàn)了 只要改動主機(jī)宏的 值,就可以改變主機(jī)宏的監(jiān)控項(xiàng)。

腳本展示

1.discovery_mysql.sh 自動發(fā)現(xiàn)端口腳本 (網(wǎng)上抄的腳本做了修改)

res=`echo $1| sed "s/_/\n/g"`;
port=($res)
printf '{\n'
printf '\t"data":[\n'
for key in ${!port[@]}
do
   if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];
then
       printf '\t {\n'
       printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"
 
else [[ "${key}" -eq "((${#port[@]}-1))" ]]
       printf '\t {\n'
       printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'

執(zhí)行實(shí)例: 以_ 為分隔符,格式化輸出 自動發(fā)現(xiàn)宏 ./discovery_mysql.sh 3306_3307_3308

{
             "data":[
             {
                               "{#MYSQLPORT}":"3306"},
             {
                               "{#MYSQLPORT}":"3307"},
             {
                               "{#MYSQLPORT}":"3308"}
             ]
}

2.mysql_filestype.sh 監(jiān)控mysql的一些掛載盤

var=$1
MYSQL_PORT=$2
MYSQL_NAME=`ps -ef |grep '/mysql/app/bin/mysqld'| grep "$MYSQL_PORT" |grep -v grep | awk -F" " '{print $11}' |awk -F"/" '{print $2}'` ;
MYSQL_SOCk_DIR="/$MYSQL_NAME/" ;
df -h "${MYSQL_SOCk_DIR}${var}" |grep -v Filesystem |awk -F" " '{print $5}' | awk -F"%" '{print $1}' ;

3.mysql_ping.sh 監(jiān)控mysql狀態(tài)

MYSQL_PORT=$1;

[ "${MYSQL_USER}"     = '' ] &&  MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] &&  MYSQL_PASSWORD=xxxxx

mysqladmin=/mysql/app/bin/mysqladmin  ;

MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'`  ;

${mysqladmin}   -u${MYSQL_USER} -p${MYSQL_PASSWORD}  ${MYSQL_SOCk_DIR}  ping   2> /dev/null |grep 'alive'|wc -l  ;

注意: 這邊連接實(shí)例 都是 mysql -u -p -S /xxx/mysql.sock

但是后來發(fā)現(xiàn)部分客戶端總是無法正確顯示值,而且就是這條 語句報(bào)錯, 感覺是環(huán)境變量的問題

所以拿 –socket=/xxx/mysql.sock 來代替 -S/xxx/mysql.sock 。 這里的變量${MYSQL_SOCk_DIR} 就是–socket=/xxx/mysql.sock 。

4.mysql_repl.sh mysql主從狀態(tài)監(jiān)控

var=$1
MYSQL_PORT=$2
MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'`  ;
mysql=/mysql/app/bin/mysql
[ "${MYSQL_USER}"     = '' ] &&  MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] &&  MYSQL_PASSWORD=xxxx
${mysql}  -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR} -e "show slave status\G;"  2> /dev/null |grep "\b${var}\b"|awk -F" " '{print $2}'   ;

主從狀態(tài) 有幾個(gè)端口的值是 空的, 這個(gè)得 具體問題具體設(shè)置

5.mysql_status2 mysql性能之類的監(jiān)控

mysql=/mysql/app/bin/mysql
var=$1
MYSQL_PORT=$2
[ "${MYSQL_USER}"     = '' ] &&  MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] &&  MYSQL_PASSWORD=xxxxx

MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'`  ;

${mysql}  -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR} -e "show global status;" 2> /dev/null |grep -v Variable_name|grep "\b${var}\b"|awk '{print $2}'   ;

發(fā)現(xiàn)有些監(jiān)控項(xiàng) 或因?yàn)閿?shù)字過長而無法顯示,待解決

6.mysql_version.sh mysql版本監(jiān)控

MYSQL_PORT=$1;

MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'`  ;

mysql=/mysql/app/bin/mysql ;

[ "${MYSQL_USER}"     = '' ] &&  MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] &&  MYSQL_PASSWORD=xxxx

${mysql}  -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR}  -e "select version();" 2> /dev/null |awk 'END {print}'

7.mysql_status_many.conf 生成可用鍵 配置文件

UserParameter=mysql.discovery[*],/patrol/zabbix/bin/duoshili_discovery/discovery_mysql.sh $1  
UserParameter=mysql.status_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_status2 $1 $2
UserParameter=mysql.ping_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_ping.sh $1
UserParameter=mysql.version_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_version.sh $1
UserParameter=mysqlcheck_repl[*],/patrol/zabbix/bin/duoshili_discovery/mysql_repl.sh $1 $2
UserParameter=mysql.filestyle_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_filestype

網(wǎng)頁題目:使用zabbix監(jiān)控mysql多實(shí)例
網(wǎng)頁URL:http://www.dlmjj.cn/article/cdeidpe.html