zabbix實現mysql數據庫的監控


先來介紹zabbix中幾個常用的術語:

復制代碼
主機(host):           要監控的網絡設備,可由ip或DNS名稱指定。
主機組(host group):   主機的邏輯容器,可以包含主機和模板,但同一個組內的主機和模版不能互相鏈接,主機組通常在組用戶或用戶組指派監控權限時使用。
監控項(item):         一個特定監控指標的相關的數據,這些數據來自於被監控對象,item是zabbix進行數據收集的核心,沒有item,就沒有數據,每個item都由“key”進行標識。
觸發器(trigger):      一個表達式,用於評估某監控對象的某特定item內所接收到的數據是否在合理范圍內,即閾值;接收到的數據量大於閾值時,觸發器狀態將從“OK”轉變為“Problem”,當數據量再次回到合理范圍時,其狀態將從“Problem”轉換回“OK”。
事件(event):         即發生的一個值得關注的事件,如觸發器的狀態轉變,新的agent或重新上線的agent的自動注冊等。
動作(action):        指對於特定事件事先定義的處理方法,通過包含操作(如發送通知)和條件(何時執行操作)。
報警升級(escalation): 發送警報或執行遠程命令的自定方案,如每隔多長時間發送一次警報,共發送多少次。
媒介(media):         發送通知的手段或通道,如Email,Jabber或SMS等。
通知(motification):  通過選定的媒介向用戶發送的有關某事件的信息。
遠程命令(remote command):預定義的命令,可在被監控主機處於某特定條件下時自動執行。
模版(template):      用於快速定義被監控主機的預設條目集合,通常包含了item,trigger,graph,screen,application,low-level discovery rule,模板可以直接鏈接到單個主機。
應用(application):   用於檢測web站點可用性的一個或多個HTTP請求。
前端(frontend):      zabbix的web接口。
復制代碼

一、腳本監控

1、創建監控用戶

GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'mpm'@'127.0.0.1' IDENTIFIED BY PASSWORD '*3B9F0373BC48DCD0459D19550D373FEBCCE003C8'
flush privileges;

2、編寫監控腳本

復制代碼
#!/bin/sh
#Created by: 茁壯的小草
#Create Date:2015/8/17
#Function:check mysql master-slave replication is ok or not ok.

declare -a  slave_is  
slave_is=($(/usr/local/mysql/bin/mysql -h 127.0.0.1  -umpm -p'mpm' -e "show slave status \G"|grep Running |awk '{print $2}'))  
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]       
        then      
                echo '2'   #代表正常兩個yes     
        else      
                echo '-1'  #代表不正常      
fi
復制代碼

執行以上腳本,如果主從復制正常,返回狀態0,否則返回狀態2。

3、Agentd配置文件中聲明key

vim /usr/local/zabbix/etc/zabbix_agentd.conf
#添加以下一句
UserParameter=mysql.replication,/data/scripts/check_replication.sh   #逗號前面是key,后面是執行的腳本

4、重啟agentd服務並進行測試

[root@node2 etc]# /etc/init.d/zabbix_agentd restart
停止 Zabbix Agent:                                        [確定]
正在啟動 Zabbix Agent:                                     [確定]

然后到zabbix server上看看能否獲取到key的監控值:

[root@monitor bin]# ./zabbix_get -s 192.168.245.131 -k "mysql.replication"
Warning: Using a password on the command line interface can be insecure.
2

okay,到這里腳本就寫好了,下面就到zabbix的web頁面上創建監控項、觸發器、事件等步驟吧,把上面介紹的幾個術語串聯起來,實現我們需要的監控。

5、zabbix web端添加監控內容

1)創建監控項(item)

點擊右邊的創建監控項,進入下面頁面:

類型:這里選擇主動模式,需要agentd配置文件中開啟RefreshActiveChecks,表示每隔多長時間向server請求監控項檢測,單位秒。
鍵值:需要跟agentd配置文件中聲明的key相同

2)創建觸發器

3)查看監控效果

這時可以分別停止和啟動主從復制查看具體的監控效果。

stop slave:

start slave:

二、報警通知

 1、郵件報警

zabbix發送郵件報警需要服務器上能夠發送郵件的環境,下面先保證liunx服務器可以發送郵件。

1)安裝和配置Mutt

yum install mutt -y
vim /etc/Muttrc
set sendmail="/usr/local/msmtp/bin/msmtp" #你的msmtp命令路徑
set use_from=yes
set realname="zabbix.com"   #隨意填寫個名字
set editor="vim"

2)安裝和配置msmtp

wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download
tar jxvf msmtp-1.4.32.tar.bz2
cd msmtp-1.4.32
./configure --prefix=/usr/local/msmtp
make&&make install 
復制代碼
mkdir -p /usr/local/msmtp/etc
vim /usr/local/msmtp/etc/msmtprc
添加以下內容
# Set default values for all following accounts.
defaults
logfile /usr/local/msmtp/log/mmlog.log
# The SMTP server of the provider.
account 163

# SMTP郵件服務器地址
host smtp.163.com

# 發送的郵件Email
from 18602500775@163.com
auth login

# 郵件服務器登錄賬號
user 18602500775@163.com

# 郵件服務器登陸密碼
#password zhl12345!@#$% 
password jwehzbgxxbkkfmhw   #指163的客戶端授權密碼
# Set a default account
account default : 163
復制代碼

然后需要將目錄權限改一下,很重要,否則發不出郵件,也不太好排查:

[root@monitor log]# chown -R zabbix.zabbix /usr/local/msmtp/

可以測試下看能否發送郵件:

/usr/local/msmtp/bin/msmtp 12333333@qq.com

確保服務器可以正常發送郵件了,下一步就可以配置zabbix了。

3)創建發送郵件的腳本:腳本必須統一放到/usr/local/zabbix/share/zabbix/alertscripts目錄中,否則zabbix無法找到。當然你也可以修改server上conf配置文件,重新指定位置。需要指出的是,這里的腳本是經過驗證的,網上有很多是通過mutt調用msmtp的,開始我也使用該方法,但是zabbix頁面顯示已發送,但是死活收不到郵件,花了好多時間,估計問題就出在mutt上,不知道啥原因,花了很多時間。后來改用msmtp直接發送就可以了,如下:

復制代碼
#! /bin/sh
DEBUG=1
if [ $DEBUG -gt 0 ]
then
exec 2>>/usr/local/msmtp/log/msmtp-log
set -x
fi
FROM='xxxxxxxxxx@163.com'
MSMTP_ACCOUNT='163'     #msmtprc配置文件中的account
# Parameters (as passed by Zabbix):
recipient=$1
subject=$2
message=$3
date=`date --rfc-2822`
sed 's/$/\r/' <<EOF | /usr/local/msmtp/bin/msmtp --account $MSMTP_ACCOUNT $recipient 
From: <$FROM> 
To: <$recipient>
Subject: $subject
Date: $date
$message
EOF
復制代碼

4)zabbix web上創建示警類型、action、用戶等。

  • 創建示警類型:管理-->媒介類型

名稱可以自己起,類型選擇“腳本”,腳本名稱填寫剛才創建的腳本,不用寫全路徑,如果有后綴名的請帶上,否則找不到。

  • 創建action:組態-->動作

以上的紅色框框中需要填寫正確的,別的根據需要自己填寫。

  • 創建用戶並關聯事件:管理-->用戶-->點擊紅色

到“示警媒介”一欄下進行添加剛才我們新建的媒介,收件人需要填寫正確,狀態已啟用。

現在可以進行問題報警了,下面把主從復制關閉,看看能不能收到郵件。這是我收到的郵件:

 

如果收不到,先從zabbix進行排查,受監測-->事件,查看最后一欄的動作,如果正常表示發送郵件ok了,否則是失敗,可以點擊前面的日期進行詳細查看:

 

到這兒,zabbix整個流程都齊了,從一無所有到可以報警發郵件了,下面通過一張圖來把從無到有的過程聯系起來:

【說明】:

  • 首先需要新增主機組(可以用來按組授權),然后添加監控主機。
  • 在受監控的主機中新增監控項,需要在agentd配置文件中指定key,zabbix通過key找到腳本監控的輸出值。
  • 新建觸發器,表示根據監控項輸出值執行觸發一些特別的action,新建觸發器時需要關聯監控項,通過表達式選擇一個監控項進行關聯。
  • 接下來創建動作,因為根據觸發器需要執行一些action。在action中的條件欄目下關聯觸發器(比如設置條件:觸發器=問題,就是有問題時執行這個動作)
  • 創建示警媒介(在創建動作前創建)。由於動作中包含很多種操作,如發郵件、執行命令等,需要將動作和示警媒介進行關聯,通過在動作中選擇一種操作進行關聯,示警媒介可以屬於某個用戶。

至此,通過兩個星期的學習,zabbix監控mysql數據庫終於可以正常工作了,其實zabbix還有很多功能,如自動發現主機等,暫時先告一段落吧,把搭建學習的過程記錄下來,下次再做就可以得心應手了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM