zabbix監控mysql的Discovery模板

來源:互聯網
上載者:User

標籤:mysql   zabbix   discovery   templete   


環境: centos6.6 zabbix-2.4.5 mysql-5.6.24


    zabbix沒有內建對mysql的監控模板,網上許多模板也都是固定的監聽某連接埠,不夠靈活,如果mysql的連接埠很多記不清楚的話,我們就應該以lld(low level discovery)方式監控mysql。



步驟:

一、用戶端


1、監控內容的json化

在用戶端裡,需要把監控的內容json化展示,然後服務端可以通過正則來過濾出結果。下面在是我的json監控mysql的json展示:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/71/A8/wKiom1XV3yyTX-TJAACeP5dZVV8556.jpg" title="1.png" alt="wKiom1XV3yyTX-TJAACeP5dZVV8556.jpg" />


指令碼內容如下:

#Fucation:mysql low-level discovery#Script_name mysql_low_discovery.shmysql() {            port=($(sudo ss -tnlp | grep mysql | awk -F "[ :]+" ‘{print $4}‘))            printf ‘{\n‘            printf ‘\t"data":[\n‘               for key in ${!port[@]}                   do                       if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then              socket=$(ps aux|grep ${port[${key}]}|grep -v grep|awk -F ‘=‘ ‘{print $10}‘|cut -d ‘ ‘ -f 1)                          printf ‘\t {\n‘                          printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"                     else [[ "${key}" -eq "((${#port[@]}-1))" ]]              socket=$(ps aux|grep ${port[${key}]}|grep -v grep|awk -F ‘=‘ ‘{print $10}‘|cut -d ‘ ‘ -f 1)                          printf ‘\t {\n‘                          printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"                       fi               done                          printf ‘\t ]\n‘                          printf ‘}\n‘}$1

如果想讓指令碼可以用zabbix的身份擷取資料,還要做以下四步操作:

chown zabbix.zabbix mysql_low_discovery.shchmod +x mysql_low_discovery.shecho "zabbix ALL=(root) NOPASSWD:/usr/sbin/ss" >> /etc/sudoerssed -i ‘s/^Defaults.*.requiretty/#Defaults    requiretty/‘  /etc/sudoers

最後把指令碼放到一個zabbix使用者允許訪問的目錄, 定義UserParameter的時候路徑保持一致就可以了。


2.自訂索引值

在用戶端修改設定檔zabbix_agentd.conf,添加一下內容:

UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix-2.4.5/script/mysql_low_discovery.sh $1UserParameter=mysql_stats[*],/usr/local/mysql/bin/mysql --login-path=local -e "show global status"| grep "\<$2\>"| cut -f2


這裡遇到一個坑要提前說一下,對於mysql5.6以上的版本來講,直接使用mysql -uxxx -pxxx -e "show global status"等直接輸入密碼的命令會有警告:

Warning: Using a password on the command line interface can be insecure.

這條警告會直接導致zabbix伺服器端不能識別mysql_stats[*]的值,解決方案是使用mysql內建的mysql_config_editor 工具:

mysql_config_editor set --login-path=local --host=127.0.0.1 --user=username --password        斷行符號會提示輸入密碼

然後我們在指令碼中就可以使用:

mysql --login-path=local  -e "statement"

代替

mysql -u username -p pass -e "statement"


3.Mysql授權查詢功能的帳號

grant select on *.* to [email protected]‘127.0.0.1‘ identified by "PASSWORD";flush privleges;


4.重啟zabbix用戶端

killall zabbix_agentd/usr/local/zabbix/sbin/zabbix_agentd


5.測試

先測試指令碼和命令:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/71/A8/wKiom1XV4UPgK_E3AAE_hw00udw978.jpg" title="2.png" alt="wKiom1XV4UPgK_E3AAE_hw00udw978.jpg" />

再測試用戶端能不能擷取索引值:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/71/A4/wKioL1XV41KAHQIjAAGYf_sgiX0490.jpg" title="3.png" alt="wKioL1XV41KAHQIjAAGYf_sgiX0490.jpg" />

最後測試伺服器端能不能擷取索引值:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/71/A8/wKiom1XV4USA_UtvAAFXHf1Wy3U171.jpg" title="4.png" alt="wKiom1XV4USA_UtvAAFXHf1Wy3U171.jpg" />


注意:zabbix接收的資料格式一定是JSON格式的,而且形式必須為:

{    "data":[     {            "{#鍵}":"值"}     ]}



二、服務端


1.建立模板

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/71/A8/wKiom1XV4eqwtfszAANDqtvsnSk710.jpg" title="5.png" alt="wKiom1XV4eqwtfszAANDqtvsnSk710.jpg" />


2.設定發現規則

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/71/A4/wKioL1XV4_qSGS8FAAPtHD34S3I707.jpg" title="6.png" alt="wKioL1XV4_qSGS8FAAPtHD34S3I707.jpg" />


3.設定正則

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/71/A4/wKioL1XV4_rSBKDPAAOSWCrXk1Y843.jpg" title="7.png" alt="wKioL1XV4_rSBKDPAAOSWCrXk1Y843.jpg" />


4.建立發現項

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/71/A8/wKiom1XV4evTPX5mAATju_cC-Os390.jpg" title="8.png" alt="wKiom1XV4evTPX5mAATju_cC-Os390.jpg" />


5.建立發現項的觸發器

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/71/A4/wKioL1XV4_rQw20_AAP9w1OYEW4406.jpg" title="9.png" alt="wKioL1XV4_rQw20_AAP9w1OYEW4406.jpg" />


6.給需要的項繪圖

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/71/A8/wKiom1XV4evBd9ubAAVHcoOFmcw565.jpg" title="10.png" alt="wKiom1XV4evBd9ubAAVHcoOFmcw565.jpg" />


7.將模板連結到mysql伺服器

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/71/A4/wKioL1XV4_rAQ-AwAAO7ftDqzGY164.jpg" title="11.png" alt="wKioL1XV4_rAQ-AwAAO7ftDqzGY164.jpg" />


8.注意事項

(1)發現規則設定更新時間長度為1小時

為什麼設定3600秒?原因是如果設定時間過短,比如你設定60s,一個是伺服器的壓力大,一個是如果你檢測的連接埠突然當掉了,還沒有來的急警示,主機通過json來擷取不到這個資訊,就認為沒有這個連接埠,模板裡會自動關閉這個監控項的內容(預設保留30天,然後自動刪除),這樣警示功能就基本沒有了,所以還是發現的間隔時間長一些比較好。

(2)設定正則

設定正則是為了將mysql的監聽連接埠範圍給固定,免得出現錯誤,也可以不設定正則,這個時候需要在設定發現規則的時候把正則那一項給清空。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/71/A8/wKiom1XV4eyz8gcDAAGyMepJfvk801.jpg" title="12.png" alt="wKiom1XV4eyz8gcDAAGyMepJfvk801.jpg" />


(3)建立發現項(Item prototypes)要注意

Name:要見名知意,不能隨心所欲

Type:設定為Zabbix agent,意為主動提交資料

Key:一定是mysql_stats[{#MYSQLPORT},$2],第一個參數是連接埠,第二個參數是你具體想要查詢的項,我的模板裡有47項,這些項目在mysql -uxxx -pxxx -e "show global status"裡已經列出來了,可以自己查看。



最後:

    附件模板奉上


本文出自 “銅鑼灣” 部落格,請務必保留此出處http://wuhf2015.blog.51cto.com/8213008/1686674

zabbix監控mysql的Discovery模板

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.