############sample 1
https://blog.51cto.com/sfzhang88/1558254
如何從Zabbix數據庫中獲取監控數據
做過Zabbix的同學都知道,Zabbix通過專用的Agent或者SNMP收集相關的監控數據,然后存儲到數據庫里面實時在前台展示。Zabbix監控數據主要分為以下兩類:
歷史數據:history相關表,從history_uint表里面可以查詢到設備監控項目的最大,最小和平均值,即存儲監控數據的原始數據。
趨勢數據:trends相關表,趨勢數據是經過Zabbix計算的數據,數據是從history_uint里面匯總的,從trends_uint可以查看到監控數據每小時最大,最小和平均值,即存儲監控數據的匯總數據。
Zabbix可以通過兩種方式獲取歷史數據:
1.通過Zabbix前台獲取歷史數據
通過Zabbix前台查看歷史數據非常簡單,可以通過Monitoring->Lastest data的方式查看。也可以點擊右上角的As plain test按鈕保存成文本文件。
2.通過前台獲取的數據進行處理和二次查詢有很多限制,因此可以通過SQL語句直接從后台DB查詢數據。
首先大家應該熟悉SQL語句Select 常用用法:
說明:
1)SELECT子句指定要查詢的特定表中的列,它可以是*,表達式,列表等。
2)INTO子句指定要生成新的表。
3)FROM子句指定要查詢的表或者視圖。
4)WHERE子句用來限定查詢的范圍和條件。
5)GROUP BY子句指定分組查詢子句。
6)HAVING子句用於指定分組子句的條件。
7)ORDER BY可以根據一個或者多個列來排序查詢結果,在該子句中,既可以使用列名,也可以使用相對列號,ASC表示升序,DESC表示降序。
8)mysql聚合函數:sum(),count(),avg(),max(),avg()等都是聚合函數,當我們在用聚合函數的時候,一般都要用到GROUP BY 先進行分組,然后再進行聚合函數的運算。運算完后就要用到Having子句進行判斷了,例如聚合函數的值是否大於某一個值等等。
從Zabbix數據庫中查詢監控項目方法,這里已查詢主機的網卡流量為例子:
1)通過hosts表查找host的ID。
2)通過items表查找主的監控項和key以及itemid。
3)通過itemid查詢主機的監控項目(history_uint或者trends_uint),單位為M。
主機流入流量: