zabbix低級自動探索之mysql多執行個體

來源:互聯網
上載者:User

標籤:uid   archive   響應   links   ODB   oba   symbol   socket   stack   

1、低級自動探索概述

zabbix的低級自動探索(LLD)適用於監控多執行個體,監控變化的資料(分區、網卡)。

自動探索(LLD)提供了一種在電腦上為不同實體自動建立監控項,觸發器和圖形的方法。例如,Zabbix可以在你的機器上自動開始監控檔案系統或網路介面,而無需為每個檔案系統或網路介面手動建立監控項。此外,可以配置Zabbix根據定期執行發現後的得到實際結果,來移除不需要的監控項。

在zabbix中,支援六種類型的發現項目:

系統檔案的發現

網路介面的發現

CPU和CPU核心的發現

SNMP OID的發現

使用ODBC SQL查詢的發現

Windows服務的發現

使用者可以自己定義發現類型,只要它們遵循特定的JSON協議。

發現過程的一般架構如下。

首先,使用者在"配置"→"模板"→"發現"列中建立一個發現規則。發現規則包括(1)發現必要實體(例如,檔案系統或網路介面)的項目和(2)應該根據該項目的值建立的監控項,觸發器和圖形的原型

發現必要實體的項目就像其他地方所看到的常規項目:伺服器向該項目的值詢問Zabbix agent(或者該項目的任何類型的設定),agent以文本值進行響應。區別在於agent響應的值應該包含特定JSON格式的發現實體的列表。這種格式的自訂檢查者發現的細節才是最重要的,因為傳回值必須包含宏→值對。例如,項目"net.if.discovery"可能會返回兩對索引值:"{#IFNAME}"→"lo"和"{#IFNAME}"→"eth0"。

這些宏用於名稱,索引值和其他原型欄位中,然後用接收到的值為每個發現的實體建立實際的監控項,觸發器,圖形甚至主機。

當伺服器接收到發現項目的值時,它會查看宏→值對,每對都根據原型產生實際監控項,觸發器和圖形。在上面的"net.if.discovery"樣本中,伺服器將產生環路介面"lo"的一組監控項,觸發器和圖表,另一組用於介面"eth0"。

 

2、mysql多執行個體

2.1 什麼是MySQL多執行個體

MySQL多執行個體就是在一台機器上開啟多個不同的服務連接埠(如:3306,3307),運行多個MySQL服務進程,通過不同的socket監聽不同的服務連接埠來提供各自的服務

2.2 MySQL多執行個體的特點

有效利用伺服器資源,當單個伺服器資源有剩餘時,可以充分利用剩餘的資源提供更多的服務

節約伺服器資源

資源互相搶佔問題,當某個服務執行個體服務並發很高時或者開啟慢查詢時,會消耗更多的記憶體、CPU、磁碟IO資源,導致伺服器上的其他執行個體提供服務的品質下降

2.3 部署mysql多執行個體的兩種方式

第一種是使用多個設定檔啟動不同的進程來實現多執行個體,這種方式的優勢邏輯簡單,配置簡單,缺點是管理起來不太方便

第二種是通過官方內建的mysqld_multi使用單獨的設定檔來實現多執行個體,這種方式定製每個執行個體的配置不太方面,優點是管理起來很方便,集中管理

 

3、mysql單一實例監控

即為主機連結mysql模板,進行監控,查看最新資料

 

4、開啟mysql多執行個體

4.1 準備設定檔

[[email protected] ~]# cp /etc/my.cnf /etc/my3307.cnf

[[email protected] ~]# vim /etc/my3307.cnf

[mysqld]

datadir=/data/3307/

socket=/data/3307/mysql.sock

port=3307

user=mysql

symbolic-links=0

[mysqld_safe]

log-error=/data/3307/mysqld.log

pid-file=/data/3307/mysqld.pid

[[email protected] ~]# cp /etc/my3307.cnf /etc/my3308.cnf

[[email protected] ~]# sed -i ‘s#3307#3308#g‘ /etc/my3308.cnf

4.2 初始化資料庫

初始化資料庫3307

[[email protected] ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf

[[email protected] ~]# mysqld_safe --defaults-file=/etc/my3307.cnf &

初始化資料庫3308

[[email protected] ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf

[[email protected] ~]# mysqld_safe --defaults-file=/etc/my3308.cnf &

4.3 檢查多執行個體是否正常

[[email protected] ~]# netstat -lntup|grep mysqld

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1648/mysqld

tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 5434/mysqld

tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 6021/mysqld

[[email protected] ~]# mkdir /data/3306

[[email protected] ~]# ln -s /var/lib/mysql/mysql.sock /data/3306/

檢查

[[email protected] ~]# find /data -name "*.sock"

/data/3307/mysql.sock

/data/3308/mysql.sock

/data/3306/mysql.sock

[[email protected] ~]# chmod 755 /data/*

[[email protected] ~]# ll -d /data/*

drwxr-xr-x 2 root root 23 6月 21 09:58 /data/3306

drwxr-xr-x 5 mysql root 4096 6月 21 09:48 /data/3307

drwxr-xr-x 5 mysql root 4096 6月 21 09:53 /data/3308

[[email protected] ~]# netstat -lntp|awk -F "[ :]+" ‘/mysqld/{print$5}‘

3306

3307

3308

 

5、編寫指令碼並測試

編寫指令碼擷取多執行個體並輸出為json格式

[[email protected] ~]# mkdir /etc/zabbix/scripts

[[email protected] ~]# cd /etc/zabbix/scripts

[[email protected] scripts]# vim discover.sh

#!/bin/bash

#mysql low-level discovery

res=`sudo netstat -lntp|awk -F "[ :\t]+" ‘/mysqld/{print$5}‘`

port=($res)

printf ‘{‘

printf ‘"data":[‘

for key in ${!port[@]}

do

if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then

printf ‘{‘

printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"

else [[ "${key}" -eq "((${#port[@]}-1))" ]]

printf ‘{‘

printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"

fi

done

printf ‘]‘

printf ‘}\n‘

指令碼中需要為zabbix使用者授權netstat的命令

方法一:

sed -i ‘98a zabbix\tALL=(ALL)\tNOPASSWD: /bin/netstat‘ /etc/sudoers

sed -i ‘[email protected]^Defaults [email protected]#Defaults [email protected]‘ /etc/sudoers

方法二:

去掉指令碼的sudo,添加suid

usermod -s /bin/bash zabbix

chmod u+s /usr/bin/netstat

測試指令碼

[[email protected] scripts]# sh discover.sh     

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

 

6、自訂key

[[email protected] ~]# cd /etc/zabbix/zabbix_agentd.d/

[[email protected] zabbix_agentd.d]# vim mysql.conf

UserParameter=mysql.discovery,sh /etc/zabbix/scripts/discover.sh

[[email protected] zabbix_agentd.d]# systemctl restart zabbix-agent.service

在server端命令列測試

[[email protected] ~]# zabbix_get -s 192.168.1.51 -k mysql.discovery

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

增加自訂key

[[email protected] zabbix_agentd.d]# vim mysql.conf

UserParameter=mysql.discovery,sh /etc/zabbix/scripts/discover.sh

UserParameter=mysql-status[*],echo "show global status where Variable_name=‘$2‘;" |mysql -S /data/$1/mysql.sock -N | awk ‘{print $$2}‘

UserParameter=mysql-ping[*],mysqladmin -S /data/$1/mysql.sock ping | grep -c alive

UserParameter=mysql-version,mysql -V

[[email protected] zabbix_agentd.d]# systemctl restart zabbix-agent.service

在server端命令列進行測試

[[email protected] ~]# zabbix_get -s 192.168.1.51 -k mysql-ping[3306]

1

[[email protected] ~]# zabbix_get -s 192.168.1.51 -k mysql-ping[3307]

1

[[email protected] ~]# zabbix_get -s 192.168.1.51 -k mysql-ping[3308]

1

 

7、server端web介面操作

建立自動探索規則,添加監控項原型,觸發器類型,圖形原型,可以參照系統已有的規則進行建立

為了簡化操作,直接匯入做好的模板並為主機連結模板

成功連結模板後查看最新資料

 

 

部分參考來源:https://www.qstack.com.cn/archives/108.html

zabbix低級自動探索之mysql多執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.