深度剖析Zabbix Web scenarios數據表結構
阿新 • • 發佈:2018-11-24
ret 歷史 extc row head like latest response ror 深度剖析Zabbix Web scenarios數據表結構
前言
因開發需求,需要解析Zabbix web
監控數據表結構;因為網上關於Zabbix數據表結構解析的比較少,所以心血來潮寫了一篇作為記錄。
突破口
對
Zabbix
數據庫表結構做解析的時候,我有個習慣,直接針對某個itemid
懟。
這次當然不例外,隨便找了個Zabbix web itemid
。
直接查數據庫裏有哪些表
show tables like "%http%"; +---------------------------+ | Tables_in_zabbix (%http%) | +---------------------------+ | httpstep | | httpstep_field | | httpstepitem | | httptest | | httptest_field | | httptestitem | +---------------------------+
用屁股猜已經猜出大概存儲的是什麽內容:
httpstep
存儲的為場景信息httpstepitem
存儲的為場景IDhttptest
存儲的為步驟信息httptestitem
存儲的為步驟ID
剖析
以itemid
為突破口
獲取到這個場景的itemID
查詢這個item所在的testID與testitemID
select * from httptestitem where itemid="56263" ; +----------------+------------+--------+------+ | httptestitemid | httptestid | itemid | type | +----------------+------------+--------+------+ | 1194 | 398 | 56263 | 4 | +----------------+------------+--------+------+
根據這個itemid
我們找到他對應的場景id。
獲取這個場景的幾個監控item值
- Last error message of scenario
- Download speed for scenario
- Failed step of scenario
select * from httptestitem where httptestid="398"; +----------------+------------+--------+------+ | httptestitemid | httptestid | itemid | type | +----------------+------------+--------+------+ | 1192 | 398 | 56261 | 2 | | 1193 | 398 | 56262 | 3 | | 1194 | 398 | 56263 | 4 | +----------------+------------+--------+------+
解析一波,具體自己參照Latest data
#############
# 各Type剖析
#
# type類型為2代表【Download speed for scenario】
# 場景總下載速度,歷史數據存儲在history表.
#
# type類型為3代表【Failed step of scenario】
# 場景返回狀態碼, 0表示場景正常, 每個步驟異常為1.歷史數據存儲在history_uint表.
#
# type類型為4代表【Last error message of scenario】
# 上一次場景返回錯誤信息,歷史數據存儲在history_str表.
#
#############
接下來根據場景ID找出步驟
查詢http場景下的步驟
- Download speed for step
- Response time for step
- Response code for step
select * from httpstepitem where httpstepid="398";
+----------------+------------+--------+------+
| httpstepitemid | httpstepid | itemid | type |
+----------------+------------+--------+------+
| 1192 | 398 | 56180 | 2 |
| 1193 | 398 | 56181 | 1 |
| 1194 | 398 | 56182 | 0 |
+----------------+------------+--------+------+
解析一波,具體自己參照Latest data
#############
# 各Type剖析
#
# type類型為2代表【Download speed for step】
# 步驟的下載速度,歷史數據存儲在history表.
#
# type類型為1代表【Response time for step】
# 步驟返回時間,歷史數據存儲在history表.
#
# type類型為0代表【Response code for step】
# 步驟的返回狀態碼, 其中0為無法連接,無狀態碼.歷史數據存儲在history_uint表.
#
#############
接下來剖析詳細場景與步驟
根據ID查詢場景信息
自行對應ZabbixWEB界面
select * from httptest where httptestid="398" \G;
*************************** 1. row ***************************
httptestid: 398
name: 業務接口A
applicationid: 800
nextcheck: 1542984224
delay: 1m
status: 0
agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36
authentication: 0
http_user:
http_password:
hostid: 10084
templateid: 397
http_proxy:
retries: 1
ssl_cert_file:
ssl_key_file:
ssl_key_password:
verify_peer: 0
verify_host: 0
順便簡單介紹下場景下的字段表,也就是一些自定宏
select * from httptest_field limit 1;
+------------------+------------+------+----------+-------------------+
| httptest_fieldid | httptestid | type | name | value |
+------------------+------------+------+----------+-------------------+
| 1 | 535 | 1 | {IP} | 10.1.1.1 |
+------------------+------------+------+----------+-------------------+
# type為1表示 Variables.
# type為0表示 Headers.
接下來查看場景裏面的步驟
自行參照Steps
頁面
查詢指定ID的步驟
select * from httpstep where httptestid="398"\G;
*************************** 1. row ***************************
httpstepid: 412
httptestid: 398
name: 業務接口A
no: 1
url: https://baidu.com
timeout: 15s
posts:
required:
status_codes:
follow_redirects: 0
retrieve_mode: 0
post_type: 0
# no代表場景的步驟
# required表示步驟正常返回字符串,填寫內容為正則表達式.
步驟也有map字段表
select * from httpstep_field limit 1;
+------------------+------------+------+----------+---------------------+
| httpstep_fieldid | httpstepid | type | name | value |
+------------------+------------+------+----------+---------------------+
| 1 | 129 | 1 | {rentid} | regex:([0-9]{4,10}) |
+------------------+------------+------+----------+---------------------+
# type為0表示 Headers.
# type為1表示 Variables.
# type為2表示 Post fields.
後記
文章一些數據表字段不明白都可以參照ZabbixWEB配置頁面。
另外建議大家Zabbix二次開發的時候可以懟庫就懟庫,遇到邏輯復雜沒有把握才使用API。
深度剖析Zabbix Web scenarios數據表結構