Zabbix監控redis單節點

1.通過shell或者python寫redis監控腳本。
2.下載zabbix-redis模板,官網或者博客等尋址下載或者也可以自己寫。
3.監控指定主機並且導入模板確認各項功能都支持。
4.關聯主機測試監控項。

zabbix-server 192.168.169.131
zabbix-clent 192.168.169.226

1.在被監控端編寫獲取redis的value值腳本

[root@client ~]# cat /etc/zabbix/scripts/redis_info_value.sh
#!/bin/bash
Info_Parameter="$1"	#位置變量
Redis_Port="6379"		#Redis端口
Redis_Host="192.168.169.226"	#Redis地址
Redis_Password="123456"		#Redis密碼
Info_File="/tmp/info.txt"			#狀態文件存放路徑
/usr/local/bin/redis-cli -h $Redis_Host -p 6379 -a $Redis_Password 2>/dev/null "info" >$Info_File	#獲取redis狀態信息並存放到指定文件
#定義一個名爲Info_Values的函數
Info_Values(){	
	Info_Value=$(grep "$Info_Parameter"\: $Info_File|awk -F ":" {'print $NF'})
	echo "$Info_Value"
}

1.1 創建上面腳本對應的目錄和文件:

chmod 777 /etc/zabbix/scripts/redis_info_value.sh
touch /tmp/info.txt && chmod 777 /tmp/info.txt

1.2 編寫自定義的key:

[root@client ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_redis.conf 
  UserParameter=redis.info.value[*],/bin/bash /etc/zabbix/scripts/redis_info_value.sh "$1"

redis.info.value //爲key在後面zabbix監控項會用到。
[*] //爲value,通過$1傳參進去
“$1” //這裏的$1就是上面腳本定義的Info_Parameter,通過輸入需要獲取的key來得到value。
例如:/bin/bash /etc/zabbix/scripts/redis_info_value.sh ”maxmemory_human“

1.3 重啓客戶端服務:

[root@client ~]# systemctl restart zabbix-agent.service

1.4 在服務端通過proxy操作獲取client端的值

[root@server ~]# /usr/bin/zabbix_get -s 192.168.169.226 -k redis.info.value[maxmemory_human]
0B
[root@server ~]# /usr/bin/zabbix_get -s 192.168.169.226 -k redis.info.value[used_cpu_user]
18.04

2.下載zabbix-redis模板,官網或者博客等尋址下載或者也可以自己寫。
2.1 創建redis模板:
在這裏插入圖片描述
在這裏插入圖片描述
羣組根據自己需求進行添加。
創建應用集
1.應用集一般配合監控項使用,它相當於多個同類型的監控項的分類目錄
2.添加應用集
(1)配置—》模板—》需要調整的模板—》應用集
在這裏插入圖片描述
(2)添加應用集
在這裏插入圖片描述
(3)
在這裏插入圖片描述
(4)查看應用集
在這裏插入圖片描述
2.2 創建監控項:
1.監控項(iterm)就是你要監控的指標,比如cpu利用率,cpu負載,內存使用率等等。
2.添加監控項
(1)配置—》模板—》需要添加監控項的模板—》監控項
在這裏插入圖片描述
#首先info裏面的好多信息是沒用的,另外好多參數是將上面的參數轉換成可讀的形式,例如,used_memory_peak和used_memory_peak_human,顯然我們就要前面的就可以了,因爲你用後面是一個字符型,你客戶端還要寫腳本再轉回成字節類型,所以類似於這種就直接在服務器取字節的形式然後轉換就行了。如下圖:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
#然後又得又不是整數型,是浮點數的類型,如果你選擇成整數類型的話,又獲取不到值,如下圖:
在這裏插入圖片描述
注意:
信息類型:根據監控項類型不同有所不同
鍵值: 可直接跟參數或參考官網
#像這種CPU就不需要轉換了,因爲本身你也不可能有太多的CPU佔用。

3.監控指定主機並且導入模板確認各項功能都支持。
在這裏插入圖片描述
4.關聯主機測試監控項。
在這裏插入圖片描述
在這裏插入圖片描述
創建圖形
配置——主機——選擇名稱主機——圖形——創建圖形
在這裏插入圖片描述
在這裏插入圖片描述
創建觸發器
在這裏插入圖片描述
在這裏插入圖片描述
幫助文檔:https://www.zabbix.com/documentation/3.4/zh/manual/config/triggers/expression

觸發器示例:
觸發器名稱:“Redis超過的內存閥值,請檢查”。觸發器表達式如下:
“{192.168.169.226:redis.info.value[used_memory].last()}>9000000”

{192.168.169.226:redis.info.value[used_memory]” 給出了被監控對象參數的簡短名稱。它指定了服務器是“192.168.169.226”,監控項的鍵值是“redis.info.value[used_memory]”。通過使用函數“last()”獲取最近一次獲取的值。最後,“>9000000”表示來自主機192.168.169.226的最後一次獲取的負載值大於5時觸發器就會進入嚴重狀態。

鍵值爲zabbix_agent裏面自定義的key。
在這裏插入圖片描述
創建zabbix報警項
1.郵件腳本報警
在 Zabbix 服務端設置郵件報警,當被監控主機宕機或者達到觸發器預設值時,會自動發送
報警郵件到指定郵箱。
具體操作:
以下操作在 Zabbix 監控服務端進行
下載 sendemail 軟件

wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

然後安裝那兩個依賴包,命令是:

yum install perl-Net-SSLeay perl-IO-Socket-SSL -y

解壓軟件,然後將 sendemail 複製到/usr/local/bin/目錄下,並加上可執行權限,然後修改用
戶和羣組。

ar zxf sendEmail-v1.56.tar.gz
cd sendEmail-v1.56/
cp sendEmail /usr/local/bin/sendEmail
chown zabbix:zabbix /usr/local/bin/sendEmail
# 執行/usr/local/bin/sendEmail -h 查看 sendEmail 的幫助
[root@server ~]# /usr/local/bin/sendEmail -f [email protected] -t [email protected] -s smtp.sina.com -u "heelo world" -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp 20001023.wzb -m "abcdefg"
命令主要選項說明:
/usr/local/bin/sendEmail			//命令程序
-f							//發件人郵箱
-t							//收件人郵箱
-s							//發件人郵箱的smtp服務器
-u "heelo world"				//郵件標題
-o message-content-type=html	//郵件內容的格式,html表示它是html格式
-o message-charset=utf8		//郵件內容編碼
-xu							//發件人郵箱的用戶名
-xp							//發件人郵箱密碼
-m							//郵件具體內容

進入/usr/lib/zabbix/alertscripts/目錄,然後在這個目錄下創建報警腳本 mail.sh
在這裏插入圖片描述
賦權chmod +x mail.sh

執行腳本測試發郵件

[root@server alertscripts]# ./mail.sh [email protected] test 123
*******************************************************************
Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
together with SSL_ca_file|SSL_ca_path for verification.
If you really don't want to verify the certificate and keep the
connection open to Man-In-The-Middle attacks please set
SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
*******************************************************************
at /usr/local/bin/sendEmail line 1906.
invalid SSL_version specified at
/usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415
注: 進行發送郵件測試時,出現了第一個報錯
原因是 sendemail 軟件和 perl5 裏面的 ssl 版本不兼容導致的,通過修改 sendemail 裏面的內
容可以解決這個問題。
解決方法:
在 sendemail 中 1906 行的內容,從
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
修改爲
if (! IO::Socket::SSL->start_SSL($SERVER)) {
即不指定 SSL 的版本,讓程序來自己選擇
不管你使用的是 163/126 郵箱還是 qq 郵箱,你都必須開通 pop3 服務,而且 126/qq 郵箱還
要求使用第三方客戶端發送郵件是必須使用授權碼登錄,使用賬號密碼驗證時,會出現下面
圖片中的錯誤。
sendEmail[5102]: ERROR => ERROR => SMTP-AUTH: Authentication to smtp.126.com:25 failed.
至於郵箱的授權碼, 自己登錄郵箱去設置就好

經過上面兩個問題的處理後就可以正常發送郵件如下所示顯示成功提示
在這裏插入圖片描述
zabbix web 端配置
上面的郵件腳本配置好後,就要在 web 端添加報警媒介,在 web 頁面的管理,報警媒介類
型頁面,點擊右邊的創建媒體類型
在這裏插入圖片描述
進入創建頁面,然後輸入名稱“郵件報警”,類型選擇腳本,名稱選擇 mail.sh,點擊添加
按鈕,添加三個腳本參數,分別是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESAGE},分別對於 mail.sh 中的 to、 subject 和 body。添加完成後點下面的添加按鈕,我們的報警媒介就創建
完成了。
在這裏插入圖片描述
{ALERT.SENDTO}:收件人郵箱
{ALERT.SUBJECT}:郵件標題
{ALERT.MESSAGE}:實體內容

zabbix支持的宏:
https://www.zabbix.com/documentation/3.4/manual/appendix/macros/supported_by_location
在這裏插入圖片描述
創建好報警媒介後,就需要將報警媒介關聯到我們的用戶。點擊管理,用戶,然後選擇我們
的用戶 admin 也可新建一個用戶,點擊用戶名就進入到用戶配置界面。點擊報警媒介,然
後點添加,選擇我們上一步創建的郵件報警腳本,輸入收件人,選擇報警時間和類型,然後
點擊添加,就將創建好的報警媒介關聯到我們的用戶上面了。
在這裏插入圖片描述
在這裏插入圖片描述
現在需要做的是,創建一個觸發動作,即系統出現故障時,觸發這個動作,然後給我們的郵
箱發送報警郵件。點擊配置,選擇動作,然後點擊右邊的創建動作。
在動作這一頁名稱中寫入我們定義的動作名以及觸發條件
在這裏插入圖片描述
設置“操作”
在這裏插入圖片描述
{TRIGGER.STATUS}:{TRIGGER.NAME} //標題
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}

步驟是 1-3,也即是從 1 開始到 3 結束。一旦故障發生,就是執行 Email.sh 腳本發生報警郵件
給 zabbix 用戶。
假如故障持續了 1 個小時,它也只發送 3 次,第 1-3 次(即前 3 次)郵箱發送給 zabbix 用戶,
時間間隔爲 0 秒。如果改成 1-0, 0 是表示不限制.無限發送

設置“恢復操作”
在這裏插入圖片描述
添加好以後就可以看到我們添加的動作名,以及該動作已啓用的狀態
在這裏插入圖片描述
報警測試
調整redis的觸發器設置使其觸發報警發送郵件。
配置——主機——redis-169.226——觸發器
在這裏插入圖片描述
將該值調整使其高或低指定的閥值。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
恢復測試
在這裏插入圖片描述
在這裏插入圖片描述
模板文件下載地址:
https://pan.baidu.com/s/1fg3eHBD6jCmCFahNfwJ9ng
幫助文檔:
https://www.cnblogs.com/hjfeng1988/p/9645028.html

發佈了4 篇原創文章 · 獲贊 7 · 訪問量 2219
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章