第六章
6.10 User Parameter
有Agent的用戶自定義參數,定義所需要的監控項,從而收集想要的數據
用戶自定義參數.
前提條件: 被監控設備 安裝並正確配置zabbix agent ,添加自定義監控的配置文件和命令腳本
(既可以是主動模式 又可以是被動模式)
語法(在Zabbix Agent的配置文件中)
UserParameter=<key>,<command>
#vim /etc/zabbix/zabbix_agentd.conf
需要確認啓動zabbix-agent的用戶是否可以啓動腳本
可以在zabbix_agent.conf中添加如下配置(一般放在文件中的Include的zabbix_agentd.d下面)
定義用戶的數量和進程的數量
UserParameter=user.count,who|wc -l
UserParameter=process.count,ps aux|wc -l
#UserParameter=processcount[*],ps aux |grep $1|grep -v grep|wc -l #這樣可以傳遞參數並監控
重啓
systemctl restart zabbix-agent.service
如何保證UserParameter配置是正確的?
在server端可以通過zabbix_get 獲取監控項的值
查看是否安裝 yum list all |grep zabbix
yum install zabbix-get.x86_64
#zabbix get -h
#zabbix_get -s 192.168.93.147 -p 10050 -k user.count
#zabbix_get -s 192.168.93.147 -p 10050 -k process.count
#zabbix_get -s 192.168.93.147 -p 10050 -k process.count[zabbix_agent]
第一步:創建監控項
第二步:驗證結果
用戶自定義參數在使用過程中的技巧,規範
(一般放在zabbix_agent.conf配置中的Include的zabbix_agentd.d下面)
[root@localhost zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@localhost zabbix_agentd.d]# vim userparameter_process_count.conf
UserParameter=process.count,ps aux|wc -l
重啓zabbix agent
查看數據是否依然能收到最新的
如何往用戶自定義參數中配置參數
客戶端Zabbix Agent
[root@localhost zabbix_agentd.d]# vim userparameter_process_count_new.conf
UserParameter=processcount[*],ps aux|grep $1|grep -v grep|wc -l
這樣可以看到指定的進程中的進程數量,比如監控zabbix agent的進程數量
重啓zabbix agent,通過服務端Zabbix Server的zabbix_get測試
[root@localhost data]# zabbix_get -s 192.168.93.147 -p 10050 -k processcount[zabbix_agentd]
13
同樣的,可以配置到監控項當中
6.11 Zabbix Trapper
無需安裝Zabbix Agent
使用場景:只要可以將數據發送給zabbix-server即可
前提條件:
- zabbix-server端配置zabbix trapper類型的監控項
- 被監控設備使用zabbix_sender命令或其他客戶端發送監控數據
語法
zabbix_sender -z <zabbix server ip> -p <port> -s <host> -k <item key> -o <value>.
數據收集流程
創建兩個監控項
創建完成之後登陸到zabbix-agent端發送監控數據
yum -y install zabbix-sender
#zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k process.cpu -o 70.9
#zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k log.content -o "warning:test"
[root@localhost ~]# zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k process.cpu -o 70.9
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000059"
sent: 1; skipped: 0; total: 1
可以將zabbix_sender和user_parameter結合起來
配合腳本
[root@localhost ~]# cd /etc/zabbix/
[root@localhost zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d
[root@localhost zabbix]# mkdir lldscripts
[root@localhost zabbix]# vim /lldscripts/zabbix_trapper_script.sh
[root@localhost zabbix]# cat /lldscripts/zabbix_trapper_script.sh
zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k process.cpu -o 70.9
zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k log.content -o "warning:test"
[root@localhost zabbix]# chmod a+x /lldscripts/zabbix_trapper_script.sh
[root@localhost lldscripts]# ./zabbix_trapper_script.sh
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000135"
sent: 1; skipped: 0; total: 1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000205"
sent: 1; skipped: 0; total: 1
[root@localhost lldscripts]# cd /etc/zabbix/zabbix_agentd.d/
[root@localhost zabbix_agentd.d]# vim userparameter_zabbix_trapper.conf
UserParameter=zabbixtrapper.info,/etc/zabbix/lldscripts/zabbix_trapper_script.sh
[root@localhost zabbix_agentd.d]# systemctl restart zabbix-agent.service
好處:①所有監控項在同一秒收集 ②Zabbix Trapper會降低Zabbix Server的壓力,下發到各個被監控設備上
6.12 External Check
外部檢查 無需Agent,實際應用中用的不多
在zabbix-server或者zabbix-proxy上通過執行腳本獲取監控數據
前提條件
zabbix server
- 配置ExternalScripts參數,指定腳本的路徑
- 準備獲取監控數據的腳本
- 添加External Check監控項
數據收集流程
語法:
script[<parameter1>,<parameter2>,...]
zabbix-server端執行腳本時會fork子進程來處理腳本,當有大量的外部檢查時,會導致zabbix-server的性能下降.
Server服務端:
yum install bind-utils -y
在zabbix-server上修改zabbix_server.conf
打開ExternalScripts=/usr/lib/zabbix/externalscripts
在/usr/lib/zabbix/externalscripts下添加腳本dns_resolve_time.sh 並賦予執行權限
第一個參數是DNS服務器,第二個參數解析的域名
[root@localhost ~]# cat /usr/lib/zabbix/externalscripts/dns_resolve_time.sh
#!/bin/bash
TIMEOUT=15
DNS_SERVER=$1
DOMAIN=$2
if test -z "$1"
then
echo "from DNS Server"
exit
fi
if test -z "$2"
then
echo "DNS Domain"
exit
fi
RESOLVE_TIME=`(time dig @$1 $2) 2>&1|grep real|cut -dm -f 2|sed 's/[s.]//g'`
echo $RESOLVE_TIME
[root@localhost ~]# chmod a+x /usr/lib/zabbix/externalscripts/dns_resolve_time.sh
[root@localhost ~]# /usr/lib/zabbix/externalscripts/dns_resolve_time.sh 114.114.114.114 www.baidu.com
添加監控項,監控域名解析是否正常,監控公司主站域名
結果:
可以在zabbix-server.log中看到錯誤日誌 或者在web界面對應主機的application監控項裏查看監控項的狀態
latest data裏監控項如果顯示灰色就說明監控數據收集異常
#tail -n 200 /var/log/zabbix/zabbix_server.log
想另外個DNS來解析另外個域名
6.13 HTTP Agent
不需要安裝Agent
通過http或者https請求獲取監控數據.也可以通過sender
用於監控業務或者接口的響應性能情況,檢測響應碼 響應時間
前提條件
zabbix-server
- 安裝是需要支持curl (啓動zabbix-server時web monitoring顯示 yes)
- 添加http agent監控項
數據收集流程
#tail -n 500 zabbix_server.log|more
看是否支持curl,如果支持的話可以看到 Web monitor
第一步:創建監控項, Type of information 爲 Log
key是自定義生成的
第二步:查看結果
稍微複雜點的例子
訪問請求 zabbix api 的監控
官網文檔資料API的值 https://www.zabbix.com/documentation/4.0/manual/api/reference/apiinfo/version
Request:
{
"jsonrpc": "2.0",
"method": "apiinfo.version",
"params": [],
"id": 1
}
第一步:創建監控項, Type of information 爲 Log
key是自定義生成的
第二步:查看結果
6.14 web場景監控
前提條件
zabbix-server
- 安裝時需要支持curl
- 添加web監控
數據收集流程
語法
場景監控項
web.test.in[Scenario,,bps]
web.test.fail[Scenario]
web.test.error[Scenario]
步驟監控項
web.test.in[Scenario,Step,bps]
web.test.time[Scenario,Step,resp]
web.test.rspcode[Scenario,Step]
創建最簡單的Web場景
較爲複雜的登錄zabbix網站場景的監控
第一步:創建用於監控登錄的賬號
第二步:登錄請求發送校驗 過程
monitor
123456
查看網頁源代碼,找到關鍵字 Zabbix SIA,而且相應狀態碼是200,代表打開首頁成功
登錄後,傳遞的參數
登錄成功後,會生成一個CSRF token,用於防止跨站腳本攻擊的
退出登錄,CSRF token獲取,傳給SID
第三步:模擬此登錄過程的web場景
創建web場景
配置步驟
第一步:打開首頁
第二步:登錄
regex:name=“csrf-token” content="([0-9a-z]{16})" 賦給變量sid
第三步:驗證第二步是否成功的
第四步:登出
第五步:校驗
Follow redirects √
200
驗證: