一、需求:
因為我們是遊戲業務,要用到mysql,一個伺服器上面跑多個mysql執行個體也是很正常。如果單獨手動一台台修改agent.conf,添加web監控,太費時費力。是以就想的要用zabbix 的自動發現來監控
二、配置Agent
1.編寫自動發現端口腳本
<code>[root@</code><code>test</code> <code>~]</code><code># cat /etc/zabbix/alertscripts/zabbix_discovery_mysql.sh </code>
<code>#!/bin/bash</code>
<code>mysql() {</code>
<code> </code><code>port=($(</code><code>sudo</code> <code>netstat</code> <code>-tpln | </code><code>awk</code> <code>-F </code><code>"[ :]+"</code> <code>'/[m]ysql/'</code> <code>| </code><code>awk</code> <code>-F: </code><code>'{print $4}'</code><code>))</code>
<code> </code><code>printf</code> <code>'{\n'</code>
<code> </code><code>printf</code> <code>'\t"data":[\n'</code>
<code> </code><code>for</code> <code>key </code><code>in</code> <code>${!port[@]}</code>
<code> </code><code>do</code>
<code> </code><code>if</code> <code>[[ </code><code>"${#port[@]}"</code> <code>-gt 1 && </code><code>"${key}"</code> <code>-</code><code>ne</code> <code>"$((${#port[@]}-1))"</code> <code>]];</code><code>then</code>
<code> </code><code>socket=`</code><code>ps</code> <code>aux|</code><code>grep</code> <code>${port[${key}]}|</code><code>grep</code> <code>-</code><code>v</code> <code>grep</code><code>|</code><code>awk</code> <code>-F </code><code>'='</code> <code>'{print $10}'</code><code>|</code><code>cut</code> <code>-d </code><code>' '</code> <code>-f 1`</code>
<code> </code><code>printf</code> <code>'\t {\n'</code>
<code> </code><code>printf</code> <code>"\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"</code>
<code> </code><code>else</code> <code>[[ </code><code>"${key}"</code> <code>-</code><code>eq</code> <code>"((${#port[@]}-1))"</code> <code>]]</code>
<code> </code><code>printf</code> <code>"\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"</code>
<code> </code><code>fi</code>
<code> </code><code>done</code>
<code> </code><code>printf</code> <code>'\t ]\n'</code>
<code> </code><code>printf</code> <code>'}\n'</code>
<code>}</code>
<code>$1</code>
2.賦權
<code>賦執行權限 </code><code>chmod</code> <code>755 </code><code>/etc/zabbix/alertscripts/zabbix_discovery_mysql</code><code>.sh </code>
<code>修改屬組 </code><code>chown</code> <code>zabbix.zabbix </code><code>/etc/zabbix/alertscripts/zabbix_discovery_mysql</code><code>.sh</code>
3.測試腳本效果
<code>[root@</code><code>test</code> <code>~]</code><code># /etc/zabbix/alertscripts/zabbix_discovery_mysql.sh mysql</code>
<code>{</code>
<code> </code><code>"data"</code><code>:[</code>
<code> </code><code>{</code>
<code> </code><code>"{#MYSQLPORT}"</code><code>:</code><code>"3306"</code><code>}</code>
<code> </code><code>]</code>
4.配置agent.conf
<code>[root@</code><code>test</code> <code>~]</code><code># cat /etc/zabbix/zabbix_agentd.conf | grep Include</code>
<code>### Option: Include</code>
<code># Include=</code>
<code># Include=/usr/local/etc/zabbix_agentd.userparams.conf</code>
<code># Include=/usr/local/etc/zabbix_agentd.conf.d/</code>
<code>Include=</code><code>/etc/zabbix/zabbix_agentd</code><code>.conf.d/*.conf</code>
<code>[root@</code><code>test</code> <code>zabbix_agentd.conf.d]</code><code># cat check_mysql.conf </code>
<code>UserParameter=mysql.discovery[*],</code><code>/etc/zabbix/alertscripts/zabbix_discovery_mysql</code><code>.sh $1</code>
<code>UserParameter=mysql_stats[*],</code><code>/usr/bin/mysql</code> <code>--defaults-</code><code>file</code><code>=</code><code>/home/zabbix/</code><code>.my.cnf -P $1 -e </code><code>"show global status"</code><code>|</code><code>grep</code> <code>"\<$2\>"</code><code>|</code><code>cut</code> <code>-f2</code>
5.sudo權限
<code>#Defaults requiretty</code>
<code>Defaults:zabbix !requiretty</code>
<code>zabbix ALL=(root) NOPASSWD:</code><code>/bin/netstat</code><code>,</code><code>/usr/bin/mysql</code>
6.建立zabbix查詢mysql使用者
<code>GRANT</code> <code>PROCESS </code><code>ON</code> <code>*.* </code><code>TO</code> <code>'zabbix'</code><code>@</code><code>'localhost'</code> <code>identified </code><code>BY</code> <code>'zabbix'</code><code>;</code>
<code>Flush </code><code>privileges</code><code>;</code>
注意:Warning: Using a password on the command line interface can be insecure.
因為mysql5.6不能使用明文密碼登入,是以這裡要建立一個檔案用來指定使用者名密碼
7.建立mysql.cnf檔案
<code>[root@</code><code>test</code> <code>zabbix]</code><code># cat /home/zabbix/.my.cnf </code>
<code>[client]</code>
<code>user=zabbix</code>
<code>password=zabbix</code>
<code>host=localhost</code>
<code>chown</code> <code>zabbix.zabbix </code><code>/home/zabbix/</code><code>.my.cnf</code>
<code>chmod</code> <code>600 </code><code>/home/zabbix/</code><code>.my.cnf</code>
8.重新開機agent服務
<code>service zabbix_agentd restart</code>
9.測試
<code>[root@</code><code>test</code> <code>alertscripts]</code><code># /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k mysql_stats[3306,Uptime]</code>
<code>3862</code>
<code>[root@</code><code>test</code> <code>alertscripts]</code><code># /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k mysql.discovery[mysql]</code>
三、配置web
添加模闆
<a href="http://s2.51cto.com/wyfs02/M00/89/C3/wKiom1gb8lPw46j_AABXERmpMik442.png" target="_blank"></a>
2.建立應用
<a href="http://s2.51cto.com/wyfs02/M01/89/C1/wKioL1gb8oKwiNNFAABCxlwXGvo462.png" target="_blank"></a>
3.建立自動發現規則
<a href="http://s4.51cto.com/wyfs02/M00/89/C1/wKioL1gb8qaRQkWPAABo6IY2yaU666.png" target="_blank"></a>
4.建立監控項
<a href="http://s2.51cto.com/wyfs02/M02/89/C3/wKiom1gb8sWixaC_AACbL6A-5Ic397.png" target="_blank"></a>
5.建立圖形
<a href="http://s3.51cto.com/wyfs02/M00/89/C3/wKiom1gb8t2BzqUaAACdXx_ToXc854.png" target="_blank"></a>
6.主機連結模闆
7.檢視監控資料
<a href="http://s5.51cto.com/wyfs02/M01/89/C3/wKiom1gb8vzSVdckAAB6IawU660105.png" target="_blank"></a>
本文轉自 shouhou2581314 51CTO部落格,原文連結:http://blog.51cto.com/thedream/1869233,如需轉載請自行聯系原作者