導航:首頁 > 數據處理 > zabbix如何將收集數據存入資料庫

zabbix如何將收集數據存入資料庫

發布時間:2023-04-16 23:07:27

1. 如何通過Zabbix獲取監控數據

zabbix基本架構:
1.Server
zabbix系統核心進程,輪詢並捕獲數據、發送通知等。是zabbix agent和zabbix proxy匯報數據的對象。server自身可遠程檢測網路服務。所有的前後端配置、統計信息、可操作數據存儲於此。包含server、前段界面和後端DB幾部分。
2.Agent
部署在被監控主機上用於監控本地資源和應用並向zabbix server匯報結果。使用本地系統調用故非常高效。有主動和被動兩種檢測模式。被動模式下agent根據server或proxy的具體請求來返回數據。主動模式下先主動由server獲取監控項列表在檢測並返回新的數據。採用主動或被動檢測取決於相應監控項的配置。
3.Proxy
可以自由選擇部署或者不部署,主要用於分擔server的負載。在集汪洞中化監控遠程位置、分支、網路的場景中是很好的解決方案。可從被監控設備收集數據緩存在proxy本地後傳遞給其所屬的zabbix server。proxy需要單獨的資料庫
4.Java gateway
java實現的守護進程用於監控JMX類型的應用程序
5.Sender
命令行工具zabbix_sender,用於向zabbix server發送性能數據和可用性數據。多用於用戶腳本定期向server發送數據。
如:
shell> cd bin
shell> ./zabbix_sender -z zabbix -s "Linux DB3" -k db.connections -o 43
6.Get
命令行工具zabbix_get,用於同agent通信從agent獲取數據。可用於zabbix agents的troubleshooting。
如:
shell> cd bin
shell> ./zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"
#zabbix術語表:
host
需要被監控的設備,如交換機、路由器、WEB伺服器、DB伺服器等
host group
被監控設備的邏輯分組,如DB伺服器一組、WEB伺服器一組等。可包含主機和模板。用於許可權控制
item
需要被監控的項,如CPU空閑率、某一塊磁碟的使宴陵亮用率等
trigger
用於評估收到的監控值是否超出設定的閾值的邏輯表達式
event
如trigger狀態改變等值得注意的事件
action
預先定義的響應event的一系列operations
escalation
執行action中的operations的定製場景;一連串的發送通知、執行遠程命令
media
傳遞notification的方式
notification
通過media發送給用戶的關於某個event的消息
remote command
在被監控機器上觸發並自動執行的預定義命令
template
用於簡化和加速主機上大規模監控任務的部署。包含一系列晌寬項目,如items, triggers, graphs, screens, applications, low-level discovery rules
application
邏輯組中的一組items
web scenario
一個或多個HTTP request用以檢查web站點可用性
frontend
zabbix的web界面
zabbix api
允許通過JSON RPC 協議創建、更新和獲取zabbix對象如,hosts, items, graphs and others。或者執行其他任務
zabbix server
zabbix核心,履行監控,與zabbix proxies、zabbix client交互、計算trigger、發送notification、存儲數據等任務
zabbix agent
部署在被監控主機上用於監控本地資源和應用
zabbix proxy
可代zabbix server收集數據分擔處理負載

#zabbix配置:
可通過WEB界面或者模板進行配置
需配置內容包括users、user groups、hosts、host groups、items、Triggers、Events、notification、templates、visualisation等。
最終配置會被存儲在後端database中。

zabbix取數方式

1.zabbix api
基於WEB的API,通過JSON PRC協議獲取或更改zabbix配置,並可用於獲取歷史監控數據。clients和API間的request和response使用JSON格式。包含一系列可從功能上分為不同組別的方法。
發起HTTP請求的格式類似如下:
POST HTTP/1.1
Content-Type: application/json-rpc
{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}
其中是zabbix前端的地址;Content-Type必須指明且為application/json-rpc, application/json or application/jsonrequest三者之一。{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}是請求的具體內容。
一些實例:
*登錄認證
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}
其中:
jsonrpc:指明JSON-RPC協議版本,這里是2.0版本
method:指明調用的API方法,這里是用戶登錄
params:需要傳遞給API method的參數,這里是用戶名和密碼
id:本次請求的標識符
auth:用戶認證令牌,目前尚無所以為null
若參數無誤response將會包含用戶認證令牌,如:
{
"jsonrpc": "2.0",
"result": "",
"id": 1
}
*獲取hosts信息
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": ""
}
本例使用可用的用戶認證令牌通過host.get方法獲取所配置的主機的ID 、name等信息,返回如下
{
"jsonrpc": "2.0",
"result": [
{
"hostid": "10084",
"host": "Zabbix server",
"interfaces": [
{
"interfaceid": "1",
"ip": "127.0.0.1"
}
]
}
],
"id": 2
}
為了考慮性能影響、盡量僅列出所需項而非返回所有數據
*創建新監控項
例如在上一步獲取的host上建立新的監控項、監控/home/joe/目錄的剩餘空間
{
"jsonrpc": "2.0",
"method": "item.create",
"params": {
"name": "Free disk space on $1",
"key_": "vfs.fs.size[/home/joe/,free]",
"hostid": "10084",
"type": 0,
"value_type": 3,
"interfaceid": "1",
"delay": 30
},
"auth": "",
"id": 3
}
其中params參數中的幾個關鍵參數含義如下:
name:監控項的名稱,這個可以自己靈活定義,其中的$1代表key_中的第一個參數,此處為/home/joe/
key_:預定義的監控項,zabbix提供了一系列此類監控內容,此處需從其中進行選擇。
hostid:即上步獲得的hostid
value_type:監控數據值的類型,不同的數字代表不同的類型,此處的3代表整型
delay:zabbix取數時間間隔,此處為30秒取一次
返回結果如下:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"24759"
]
},
"id": 3
}
itemid為生成的監控項的id
*獲取歷史數據:
從歷史記錄表獲取itemids為23296的按clock降序排列的十條記錄
history參數可能的取值
0 - float;
1 - string;
2 - log;
3 - integer;
4 - text.
{
"jsonrpc": "2.0",
"method": "history.get",
"params": {
"output": "extend",
"history": 0,
"itemids": "23296",
"sortfield": "clock",
"sortorder": "DESC",
"limit": 10
},
"auth": "",
"id": 1
}
返回結果:
{
"jsonrpc": "2.0",
"result": [
{
"itemid": "23296",
"clock": "1351090996",
"value": "0.0850",
"ns": "563157632"
},
{
"itemid": "23296",
"clock": "1351090936",
"value": "0.1600",
"ns": "549216402"
},
...]
}
*錯誤處理
下例忘記了groups這個參數
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.3.1",
"dns": "",
"port": "10050"
}
]
},
"id": 3,
"auth": ""
}
返回結果如下,包含的不是result屬性而是error屬性
{
"jsonrpc": "2.0",
"error": {
"code": -32602,
"message": "Invalid params.",
"data": "No groups for host \"Linux server\"."
},
"id": 3
}
對於獲取監控數據來說,比較關心的應該是history.get這個方法。這種方式實際上最終還是由後台資料庫獲取的。方法提供了豐富的參數,使用非常靈活。但對於一次性大規模的取出大量主機大量監控項的大批數據不太適合。

2. 如何通過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 常用用法:

SELECT [ALL | DISTINCT] Select_List [INTO [New_Table_name]
FROM { Table_name | View_name} [ [,{table2_name | view2_name}
[,…] ]
[ WHERE Serch_conditions ]
[ GROUP BY Group_by_list ]
[ HAVING Serch_conditions ]
[ ORDER BY Order_list [ASC| DEsC] ]
說明:
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子句進行判斷了,例如聚合函數的值是否大於某一個值等等。

3. 如何從Zabbix資料庫中獲取監控數據

Zabbix可以通過兩種方式獲取歷史數據:
1.通過Zabbix前台獲取歷史數據
通過Zabbix前台查看歷史數據非常簡單,可以通過Monitoring->Lastest data的方式查看。也可以點擊右上角的As plain test按鈕保存成文本文件。

2.通過前台獲取的數據進行處理和二次查詢有很多限制,因此可以通過SQL語句直接從後台DB查詢數據。
首先大家應該熟悉SQL語句Select 常用用法:
SELECT [ALL | DISTINCT] Select_List [INTO [New_Table_name]
FROM { Table_name | View_name} [ [,{table2_name | view2_name}
[,...] ]
[ WHERE Serch_conditions ]
[ GROUP BY Group_by_list ]
[ HAVING Serch_conditions ]
[ ORDER BY Order_list [ASC| DEsC] ]

說明:
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。
mysql> select host,hostid from hosts where host="WWW05";
+-------+--------+
| host | hostid |
+-------+--------+
| WWW05 | 10534 |
+-------+--------+
1 row in set (0.00 sec)

2)通過items表查找主的監控項和key以及itemid。
mysql> select itemid,name,key_ from items where hostid=10534 and key_="net.if.out[eth0]";
+--------+-----------------+------------------+
| itemid | name | key_ |
+--------+-----------------+------------------+
| 58860 | 發送流量: | net.if.out[eth0] |
+--------+-----------------+------------------+
1 row in set (0.00 sec)

3)通過itemid查詢主機的監控項目(history_uint或者trends_uint),單位為M。
主機流入流量:
mysql> select from_unixtime(clock) as DateTime,round(value/1024/1024,2) as Traffic_in from history_uint where itemid="58855" and from_unixtime(clock)>='2014-09-20' and from_unixtime(clock)<'2014-09-21' limit 20;
+---------------------+------------+
| DateTime | Traffic_in |
+---------------------+------------+
| 2014-09-20 00:00:55 | 0.10 |
| 2014-09-20 00:01:55 | 0.09 |
| 2014-09-20 00:02:55 | 0.07 |
| 2014-09-20 00:03:55 | 0.05 |
| 2014-09-20 00:04:55 | 0.03 |
| 2014-09-20 00:05:55 | 0.06 |
| 2014-09-20 00:06:55 | 0.12 |
| 2014-09-20 00:07:55 | 0.05 |
| 2014-09-20 00:08:55 | 0.10 |
| 2014-09-20 00:09:55 | 0.10 |
| 2014-09-20 00:10:55 | 0.12 |
| 2014-09-20 00:11:55 | 0.12 |
| 2014-09-20 00:12:55 | 0.13 |
| 2014-09-20 00:13:55 | 3.16 |
| 2014-09-20 00:14:55 | 0.23 |
| 2014-09-20 00:15:55 | 0.24 |
| 2014-09-20 00:16:55 | 0.26 |
| 2014-09-20 00:17:55 | 0.23 |
| 2014-09-20 00:18:55 | 0.14 |
| 2014-09-20 00:19:55 | 0.16 |
+---------------------+------------+
20 rows in set (0.82 sec)

主機流出流量:
mysql> select from_unixtime(clock) as DateTime,round(value/1024/1024,2) as Traffic_out from history_uint where itemid="58860" and from_unixtime(clock)>='2014-09-20' and from_unixtime(clock)<'2014-09-21' limit 20;
+---------------------+-------------+
| DateTime | Traffic_out |
+---------------------+-------------+
| 2014-09-20 00:00:00 | 4.13 |
| 2014-09-20 00:01:00 | 3.21 |
| 2014-09-20 00:02:00 | 2.18 |
| 2014-09-20 00:03:01 | 1.61 |
| 2014-09-20 00:04:00 | 1.07 |
| 2014-09-20 00:05:00 | 0.92 |
| 2014-09-20 00:06:00 | 1.23 |
| 2014-09-20 00:07:00 | 2.76 |
| 2014-09-20 00:08:00 | 1.35 |
| 2014-09-20 00:09:00 | 3.11 |
| 2014-09-20 00:10:00 | 2.99 |
| 2014-09-20 00:11:00 | 2.68 |
| 2014-09-20 00:12:00 | 2.55 |
| 2014-09-20 00:13:00 | 2.89 |
| 2014-09-20 00:14:00 | 4.98 |
| 2014-09-20 00:15:00 | 6.56 |
| 2014-09-20 00:16:00 | 7.34 |
| 2014-09-20 00:17:00 | 6.81 |
| 2014-09-20 00:18:00 | 7.67 |
| 2014-09-20 00:19:00 | 4.11 |
+---------------------+-------------+
20 rows in set (0.74 sec)

4)如果是兩台設備,匯總流量,假如公司出口有兩台設備,可以用下面的SQL語句匯總每天的流量。下面SQL語句是匯總上面主機網卡的進出流量的。
mysql> select from_unixtime(clock,"%Y-%m-%d %H:%i") as DateTime,sum(round(value/1024/1024,2)) as Traffic_total from history_uint where itemid in (58855,58860) and from_unixtime(clock)>='2014-09-20'and from_unixtime(clock)<'2014-09-21' group by from_unixtime(clock,"%Y-%m-%d %H:%i") limit 20;
+------------------+---------------+
| DateTime | Traffic_total |
+------------------+---------------+
| 2014-09-20 00:00 | 4.23 |
| 2014-09-20 00:01 | 3.30 |
| 2014-09-20 00:02 | 2.25 |
| 2014-09-20 00:03 | 1.66 |
| 2014-09-20 00:04 | 1.10 |
| 2014-09-20 00:05 | 0.98 |
| 2014-09-20 00:06 | 1.35 |
| 2014-09-20 00:07 | 2.81 |
| 2014-09-20 00:08 | 1.45 |
| 2014-09-20 00:09 | 3.21 |
| 2014-09-20 00:10 | 3.11 |
| 2014-09-20 00:11 | 2.80 |
| 2014-09-20 00:12 | 2.68 |
| 2014-09-20 00:13 | 6.05 |
| 2014-09-20 00:14 | 5.21 |
| 2014-09-20 00:15 | 6.80 |
| 2014-09-20 00:16 | 7.60 |
| 2014-09-20 00:17 | 7.04 |
| 2014-09-20 00:18 | 7.81 |
| 2014-09-20 00:19 | 4.27 |
+------------------+---------------+
20 rows in set (1.52 sec)

5)查詢一天中主機流量的最大值,最小值和平均值。
mysql> select date as DateTime,round(min(traffic)/2014/1024,2) as TotalMinIN,round(avg(traffic)/1024/1024,2) as TotalAvgIN,round(max(traffic)/1024/1024,2) as TotalMaxIN from (select from_unixtime(clock,"%Y-%m-%d") as date,sum(value) as traffic from history_uint where itemid in (58855,58860) and from_unixtime(clock)>='2014-09-20' and from_unixtime(clock)<'2014-09-21' group by from_unixtime(clock,"%Y-%m-%d %H:%i") ) tmp;
+------------+------------+------------+------------+
| DateTime | TotalMinIN | TotalAvgIN | TotalMaxIN |
+------------+------------+------------+------------+
| 2014-09-20 | 0.01 | 4.63 | 191.30 |
+------------+------------+------------+------------+
1 row in set (1.74 sec)

6)查詢主機組裡面所有主機CPU Idle平均值(原始值)。
mysql> select from_unixtime(hi.clock,"%Y-%m-%d %H:%i") as DateTime,g.name as Group_Name,h.host as Host, hi.value as Cpu_Avg_Idle from hosts_groups hg join groups g on g.groupid = hg.groupid join items i on hg.hostid = i.hostid join hosts h on h.hostid=i.hostid join history hi on i.itemid = hi.itemid where g.name='上海機房--項目測試' and i.key_='system.cpu.util[,idle]' and from_unixtime(clock)>='2014-09-24' and from_unixtime(clock)<'2014-09-25' group by h.host,from_unixtime(hi.clock,"%Y-%m-%d %H:%i") limit 10;
+------------------+----------------------------+----------+--------------+
| DateTime | Group_Name | Host | Cpu_Avg_Idle |
+------------------+----------------------------+----------+--------------+
| 2014-09-24 00:02 | 上海機房--項目測試 | testwb01 | 94.3960 |
| 2014-09-24 00:07 | 上海機房--項目測試 | testwb01 | 95.2086 |
| 2014-09-24 00:12 | 上海機房--項目測試 | testwb01 | 95.4308 |
| 2014-09-24 00:17 | 上海機房--項目測試 | testwe01 | 95.4580 |
| 2014-09-24 00:22 | 上海機房--項目測試 | testwb01 | 95.4611 |
| 2014-09-24 00:27 | 上海機房--項目測試 | testwb01 | 95.2939 |
| 2014-09-24 00:32 | 上海機房--項目測試 | testwb01 | 96.0896 |
| 2014-09-24 00:37 | 上海機房--項目測試 | testwb01 | 96.5286 |
| 2014-09-24 00:42 | 上海機房--項目測試 | testwb01 | 96.8086 |
| 2014-09-24 00:47 | 上海機房--項目測試 | testwb01 | 96.6854 |
+------------------+----------------------------+----------+--------------+
10 rows in set (0.75 sec)

7)查詢主機組裡面所有主機 CPU Idle平均值(匯總值)。
mysql> select from_unixtime(hi.clock,"%Y-%m-%d %H:%i") as Date,g.name as Group_Name,h.host as Host, hi.value_avg as Cpu_Avg_Idle from hosts_groups hg join groups g on g.groupid = hg.groupid join items i on hg.hostid = i.hostid join hosts h on h.hostid=i.hostid join trends hi on i.itemid = hi.itemid where g.name='上海機房--項目測試' and i.key_='system.cpu.util[,idle]' and from_unixtime(clock)>='2014-09-10' and from_unixtime(clock)<'2014-09-11' group by h.host,from_unixtime(hi.clock,"%Y-%m-%d %H:%i") limit 10;
+------------------+----------------------------+----------+--------------+
| Date | Group_Name | Host | Cpu_Avg_Idle |
+------------------+----------------------------+----------+--------------+
| 2014-09-10 00:00 | 上海機房--項目測試 | testwb01 | 99.9826 |
| 2014-09-10 01:00 | 上海機房--項目測試 | testwb01 | 99.9826 |
| 2014-09-10 02:00 | 上海機房--項目測試 | testwb01 | 99.9825 |
| 2014-09-10 03:00 | 上海機房--項目測試 | testwb01 | 99.9751 |
| 2014-09-10 04:00 | 上海機房--項目測試 | testwb01 | 99.9843 |
| 2014-09-10 05:00 | 上海機房--項目測試 | testwb01 | 99.9831 |
| 2014-09-10 06:00 | 上海機房--項目測試 | testwb01 | 99.9829 |
| 2014-09-10 07:00 | 上海機房--項目測試 | testwb01 | 99.9843 |
| 2014-09-10 08:00 | 上海機房--項目測試 | testwb01 | 99.9849 |
| 2014-09-10 09:00 | 上海機房--項目測試 | testwb01 | 99.9849 |
+------------------+----------------------------+----------+--------------+
10 rows in set (0.01 sec)

8)其它與Zabbix相關的SQL語句。
查詢主機已經添加但沒有開啟監控主機:
select host from hosts where status=1;

查詢NVPS的值:
mysql> SELECT round(SUM(1.0/i.delay),2) AS qps FROM items i,hosts h WHERE i.status='0' AND i.hostid=h.hostid AND h.status='0' AND i.delay<>0;
+--------+
| qps |
+--------+
| 503.40 |
+--------+
1 row in set (0.11 sec)

望採納

4. 如何通過Zabbix獲取監控數據

您好,是這樣的:
zabbix基本架構:
1.Server
zabbix系統核心進程,輪詢並捕獲數據、發送通知等。是zabbix agent和zabbix proxy匯報數據的對象。server自身可遠程檢測網路服務。所有的前後端配置、統計信息、可操作數據存儲於此。包含server、前段界面和後端DB幾部分。
2.Agent
部署在被監控主機上用於監控本地資源和應用並向zabbix server匯報結果。使用本地系統調用故非常高效。有主動和被動兩種檢測模式。被動模式下agent根據server或proxy的具體請求來返回數據。主動模式下先主動由server獲取監控項列表在檢測並返回新的數據。採用主動或被動枯渣檢測取決於相應監控項的配置。
3.Proxy
可以自由選擇部署或者不部署,主要用於分擔server的負載。在集中化監控遠程位置、分支、網路的場景中是很好的解決方案。可從被指掘監控設備收集數據緩存在proxy本地後傳遞給其所屬的zabbix server。proxy需要單獨的資料庫。
4.Java gateway
java實現的守護進程用於監控JMX類型的應用程序。
5.Sender
命令行工具zabbix_sender,用於向zabbix server發送性能數據和可用性數據。多用於用戶腳本定期向server發送數據。
如:
shell> cd bin
shell> ./zabbix_sender -z zabbix -s "Linux DB3" -k db.connections -o 43
6.Get
命令行工具zabbix_get,用於同agent通信從agent獲取數據。可用於zabbix agents的troubleshooting。沒逗悄
如:
shell> cd bin
shell> ./zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"
#zabbix術語表:
host
需要被監控的設備,如交換機、路由器、WEB伺服器、DB伺服器等
host group
被監控設備的邏輯分組,如DB伺服器一組、WEB伺服器一組等。可包含主機和模板。用於許可權控制
item
需要被監控的項,如CPU空閑率、某一塊磁碟的使用率等
trigger
用於評估收到的監控值是否超出設定的閾值的邏輯表達式
event
如trigger狀態改變等值得注意的事件
action
預先定義的響應event的一系列operations
escalation
執行action中的operations的定製場景;一連串的發送通知、執行遠程命令
media
傳遞notification的方式
notification
通過media發送給用戶的關於某個event的消息
remote command
在被監控機器上觸發並自動執行的預定義命令
template
用於簡化和加速主機上大規模監控任務的部署。包含一系列項目,如items, triggers, graphs, screens, applications, low-level discovery rules
application
邏輯組中的一組items
web scenario
一個或多個HTTP request用以檢查web站點可用性
frontend
zabbix的web界面
zabbix api
允許通過JSON RPC 協議創建、更新和獲取zabbix對象如,hosts, items, graphs and others。或者執行其他任務
zabbix server
zabbix核心,履行監控,與zabbix proxies、zabbix client交互、計算trigger、發送notification、存儲數據等任務
zabbix agent
部署在被監控主機上用於監控本地資源和應用
zabbix proxy
可代zabbix server收集數據分擔處理負載

#zabbix配置:
可通過WEB界面或者模板進行配置
需配置內容包括users、user groups、hosts、host groups、items、Triggers、Events、notification、templates、visualisation等。

5. 如何安裝Zabbix

zabbix是一個CS結構的監控系統,之前一直沒有很好的整理下安裝:安裝幾次都要重新看,目前將Zabbix配置安裝進行整理如下
Zabbix配置需要web、php、mysql、gcc等支持
請自行配置好
接下來我們開始操作
操作範例的操作系統為Centos 5.2
tar zxvf zabbix-1.6.2.tar.gz mysql -uroot -p mysql> create databases zabbix; mysql> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 『zabbix』 WITH GRANT OPTION; mysql> use zabbix; mysql> source /usr/local/src/zabbix-1.6.2/create/schema/mysql.sql mysql> source /usr/local/src/zabbix-1.6.2/create/data/data.sql mysql> source /物梁譽usr/local/src/zabbix-1.6.2/create/data/images_mysql.sql cd zabbix-1.6.2
./configure –prefix=/渣蔽usr/local/zabbix/ \ //指定安裝目罩段錄 –enable-server \ //安裝server,被監控節點不需要 –enable-agent \ //安裝agent –with-mysql \ //需要mysql支持需要指定目錄 –with-net-snmp //需要snmp支持需要指定目錄

常用的編譯選項如下,需要更多的可以看幫助
–enable-static Build statically linked binaries –enable-server Turn on build of server –enable-proxy Turn on build of proxy server –enable-agent Turn on build of agent –enable-ipv6 Turn on support of IPv6 –with-mysql –with-oracle –with-pgsql –with-sqlite3 –with-jabber –with-net-snmp –with-ucd-snmp

Zabbix配置客戶端只需執行:
./configure –prefix=/usr/local/zabbix –enable-agent make && make install

Zabbix配置安裝過程沒有報錯基本就OK,接下來增加對應的埠:
vi /etc/services

加入
zabbix_agent 10050/tcp # zabbix agent zabbix_agent 10050/udp # zabbix agent zabbix_trapper 10051/tcp # zabbix trapper zabbix_trapper 10051/udp # zabbix trapper

復制配置文件和服務啟動腳本
cp -rf misc/conf /opt/app/zabbix/etc -R


misc/init.d/

選擇一個自己合適自己環境的啟動腳本,或者自己寫一個
添加一個zabbix用戶
useradd zabbix
然後用腳本啟動zabbix_server和zabbix_agentd
[root@zabbix ~]#ll /usr/local/zabbix/sbin/ total 2344 -rwxr-xr-x 1 root root 362581 Apr 16 22:55 zabbix_agent -rwxr-xr-x 1 root root 425336 Apr 16 22:55 zabbix_agentd -rwxr-xr-x 1 root root 136854 Apr 16 22:55 zabbix_get -rwxr-xr-x 1 root root 163086 Apr 16 22:55 zabbix_sender -rwxr-xr-x 1 root root 1284665 Apr 16 22:55 zabbix_server

Zabbix配置回到zabbix的編譯目錄:
生成配置文件:
mkdir /etc/zabbix cp misc/conf/* /etc/zabbix/ vi frontends/php/include/db.inc.php

更改資料庫相關內容:
$DB_TYPE ="MYSQL"; $DB_SERVER ="localhost"; $DB_DATABASE ="zabbix"; $DB_USER ="zabbix"; $DB_PWD ="zabbix"; cp -rf frontends/php /var/www/html/zabbix -R

php環境需求
PHP version: 5.2.8 Ok PHP Memory limit: 128M Ok PHP post max size: 8M Ok PHP max execution time: 300 sec Ok PHP Databases support: MySQL Ok PHP BC math support yes Ok GD Version: bundled (2.0.34 compatible) Ok Image formats: PNG Ok PHP Timezone: Asia/Shanghai

註:gd-devel沒有安裝上去將無法在web端安裝過去,對應的其他也要安裝,比如net-snmp,可通過yum來安裝,方便。
[root@zabbix ~]#rpm -qa|grep gd gd-devel-2.0.33-9.4.el5_1.1 gd-2.0.33-9.4.el5_1.1

安裝php-bcmath
yum -y install php-bcmath

修改時區
Vi /etc/php.ini date.timezone =Asia/Shanghai

如何安裝Zabbix就介紹到這里了。

6. 怎樣使用zabbix監控伺服器的mysql資料庫

怎樣使用zabbix監控伺服器的
mysql資料庫
進入
zabbix
web
台Configuration-->Hosts
groups-->點擊尺態Create
host
group-->選擇template
選項卡
選擇模板TemplateApp
MySQLTempldate
OS
Linux點擊update
即(032.png)
進入zabbix
web
台configuration-->hosts-->點擊主機
name-->選擇旅圓template選
項卡選擇模板Template
App
MySQL點擊左陵鎮源邊Add按鈕點擊update按鈕即(033.png)

7. 如何通過Zabbix獲取監控數據

##################################
zabbix基本架構
##################################
1.Server
zabbix系統核心進程,輪詢並捕獲數據、發送通知等。是zabbix agent和zabbix proxy匯報數據的對象。server自身可遠程檢測網路服務。所有的前後端配置、統計信息、可操作數據存儲於此。包含server、前段界面和後端DB幾部分。

2.Agent
部署在被監控主機上用於監控本地資源和應用並向zabbix server匯報結果。使用本地系統調用故非常高效。有主動和被動兩種檢測模式。被動模式下agent根據server或proxy的具體請求來返回數據。主動模式下先主動由server獲取監控項列表在檢測並返回新的數據。採用主動或被動檢測取決於相應監控項的配置。

3.Proxy
可以自由選擇部署或者不部署,主要用於分擔server的負載。在集中化監控遠程位置、分支、網路的場景中是很好的解決方案。可從被監控設備收集數據緩存在proxy本地後傳遞給其所屬的zabbix server。proxy需要單獨的資料庫。

4.Java gateway
java實現的守護進程用於監控JMX類型的應用程序。

5.Sender
命令行工具zabbix_sender,用於向zabbix server發送性能數據和可用性數據。多用於用戶腳本定期向server發送數據。
如:
shell> cd bin
shell> ./zabbix_sender -z zabbix -s "Linux DB3" -k db.connections -o 43

6.Get
命令行工具zabbix_get,用於同agent通信從agent獲取數據。可用於zabbix agents的troubleshooting。
如:
shell> cd bin
shell> ./zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"

####################################
#zabbix術語表
####################################
host
需要被監控的設備,如交換機、路由器、WEB伺服器、DB伺服器等

host group
被監控設備的邏輯分組,如DB伺服器一組、WEB伺服器一組等。可包含主機和模板。用於許可權控制

item
需要被監控的項,如CPU空閑率、某一塊磁碟的使用率等

trigger
用於評估收到的監控值是否超出設定的閾值的邏輯表達式

event
如trigger狀態改變等值得注意的事件

action
預先定義的響應event的一系列operations

escalation
執行action中的operations的定製場景;一連串的發送通知、執行遠程命令

media
傳遞notification的方式

notification
通過media發送給用戶的關於某個event的消息

remote command
在被監控機器上觸發並自動執行的預定義命令

template
用於簡化和加速主機上大規模監控任務的部署。包含一系列項目,如items, triggers, graphs, screens, applications, low-level discovery rules

application
邏輯組中的一組items

web scenario
一個或多個HTTP request用以檢查web站點可用性

frontend
zabbix的web界面

zabbix api
允許通過JSON RPC 協議創建、更新和獲取zabbix對象如,hosts, items, graphs and others。或者執行其他任務

zabbix server
zabbix核心,履行監控,與zabbix proxies、zabbix client交互、計算trigger、發送notification、存儲數據等任務

zabbix agent
部署在被監控主機上用於監控本地資源和應用

zabbix proxy
可代zabbix server收集數據分擔處理負載

######################################
#zabbix配置
######################################
可通過WEB界面或者模板進行配置
需配置內容包括users、user groups、hosts、host groups、items、Triggers、Events、notification、templates、visualisation等。
最終配置會被存儲在後端database中。

#####################################
zabbix取數方式
####################################
1.zabbix api
基於WEB的API,通過JSON PRC協議獲取或更改zabbix配置,並可用於獲取歷史監控數據。clients和API間的request和response使用JSON格式。包含一系列可從功能上分為不同組別的方法。

發起HTTP請求的格式類似如下:
POST http://company.com/zabbix/api_jsonrpc.php HTTP/1.1
Content-Type: application/json-rpc
{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}
其中http://company.com/zabbix/是zabbix前端的地址;Content-Type必須指明且為application/json-rpc, application/json or application/jsonrequest三者之一。{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}是請求的具體內容。

一些實例:
*登錄認證
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}
其中:
jsonrpc:指明JSON-RPC協議版本,這里是2.0版本
method:指明調用的API方法,這里是用戶登錄
params:需要傳遞給API method的參數,這里是用戶名和密碼
id:本次請求的標識符
auth:用戶認證令牌,目前尚無所以為null
若參數無誤response將會包含用戶認證令牌,如:
{
"jsonrpc": "2.0",
"result": "",
"id": 1
}

*獲取hosts信息
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": ""
}
本例使用可用的用戶認證令牌通過host.get方法獲取所配置的主機的ID 、name等信息,返回如下
{
"jsonrpc": "2.0",
"result": [
{
"hostid": "10084",
"host": "Zabbix server",
"interfaces": [
{
"interfaceid": "1",
"ip": "127.0.0.1"
}
]
}
],
"id": 2
}
為了考慮性能影響、盡量僅列出所需項而非返回所有數據

*創建新監控項
例如在上一步獲取的host上建立新的監控項、監控/home/joe/目錄的剩餘空間
{
"jsonrpc": "2.0",
"method": "item.create",
"params": {
"name": "Free disk space on $1",
"key_": "vfs.fs.size[/home/joe/,free]",
"hostid": "10084",
"type": 0,
"value_type": 3,
"interfaceid": "1",
"delay": 30
},
"auth": "",
"id": 3
}
其中params參數中的幾個關鍵參數含義如下:
name:監控項的名稱,這個可以自己靈活定義,其中的$1代表key_中的第一個參數,此處為/home/joe/
key_:預定義的監控項,zabbix提供了一系列此類監控內容,此處需從其中進行選擇。
hostid:即上步獲得的hostid
value_type:監控數據值的類型,不同的數字代表不同的類型,此處的3代表整型
delay:zabbix取數時間間隔,此處為30秒取一次

返回結果如下:
{
"jsonrpc": "2.0",
"result": {
"itemids": [
"24759"
]
},
"id": 3
}
itemid為生成的監控項的id

*獲取歷史數據:
從歷史記錄表獲取itemids為23296的按clock降序排列的十條記錄
history參數可能的取值
0 - float;
1 - string;
2 - log;
3 - integer;
4 - text.
{
"jsonrpc": "2.0",
"method": "history.get",
"params": {
"output": "extend",
"history": 0,
"itemids": "23296",
"sortfield": "clock",
"sortorder": "DESC",
"limit": 10
},
"auth": "",
"id": 1
}
返回結果:
{
"jsonrpc": "2.0",
"result": [
{
"itemid": "23296",
"clock": "1351090996",
"value": "0.0850",
"ns": "563157632"
},
{
"itemid": "23296",
"clock": "1351090936",
"value": "0.1600",
"ns": "549216402"
},
...]
}

*錯誤處理
下例忘記了groups這個參數
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.3.1",
"dns": "",
"port": "10050"
}
]
},
"id": 3,
"auth": ""
}
返回結果如下,包含的不是result屬性而是error屬性
{
"jsonrpc": "2.0",
"error": {
"code": -32602,
"message": "Invalid params.",
"data": "No groups for host \"Linux server\"."
},
"id": 3
}

對於獲取監控數據來說,比較關心的應該是history.get這個方法。這種方式實際上最終還是由後台資料庫獲取的。方法提供了豐富的參數,使用非常靈活。但對於一次性大規模的取出大量主機大量監控項的大批數據不太適合。

2.zabbix_get:
命令行工具,可從遠程的zabbix agent獲取數據
zabbix_get [-hV] [-s <host name or IP>] [-p <port number>] [-I <IP address>] [-k <item key>]
-s, --host <host name or IP>
-p, --port <port number>
-I, --source-address <IP address>
-k, --key <item key>
-h, --help
-V, --version.
如:zabbix_get -s 127.0.0.1 -p 10050 -k system.cpu.load[all,avg1]
zabbix api獲取到的是資料庫中的歷史數據,zabbix_get可獲得實時的數據。可根據工具的特點選擇適合的場景。

3.zabbix databases:
直接由zabbix後台資料庫獲取歷史數據。適用於一次性大規模的取出大量主機大量監控項的大批數據。

*相關表
history系列表分別存儲不同數據類型的歷史數據
表中數據以update interval為時間間隔
zabbix.history -numeric(float)
zabbix.history_log -log
zabbix.history_str -character(up to 255 bytes)
zabbix.history_text -text
zabbix.history_unit -numeric(unsigned intergers)

trends_系列表存儲不同類型的歷史數據統計結果
表中數據以小時為時間間隔,存儲每小時的最小、最大和平均值
zabbix.trends -numeric(float)
zabbix.trends_unit -numeric(unsigned intergers)
character\log\text\類型無歷史統計結果

history系列的表只包含itemid、clock、value等數據
trends系列的表只包含itemid、clock、value_min、value_avg、value_max等數據
history、trends需與items、hosts、hosts_groups、groups表關聯來獲取item名稱、host名稱、組別等。

*表及重要的表欄位
hosts
hosts.hostid 主機id
hosts.host 主機名
hosts.status 主機狀態 0為正常監控,1為關閉,3表示是個Template,5尚不不清楚。

hosts_group
hosts_group.hostid 主機id
hosts_group.groupid 所屬組id

groups
groups.groupid 組id
groups.name 組名

items
items.itemid 監控項id
items.hostid 監控項所在主機id
items.name 監控項別名
items.key_ 監控項標准名稱
items.value_type值類型
items.delay 取數時間間隔
items.history 歷史表數據保留天數
items.trends 歷史統計表數據保留天數
item.units 數據單位

items表中value_type與history的對應關系
(主要為了存取效率將不同值類型存在不同的history表中)
value_type history表
0 history
1 history_str
2 history_log
3 history_uint
4 history_text

history
hisrtory.itemid 監控項id

trends
trends.itemid 監控項id

zabbix後台系統的涉及到大量的表,取歷史數據的話關心這幾個即可

*監控項規則解讀
zabbix.items表中存在類似於如下的配置項(如網路網卡監控、磁碟監控等):
name key_
Free disk space on $1 vfs.fs.size[/,free]
Free disk space on / (percentage) vfs.fs.size[/,pfree]
Free disk space on $1 vfs.fs.size[/boot,free]
Free disk space on /boot (percentage) vfs.fs.size[/boot,pfree]
Free disk space on $1 vfs.fs.size[/data,free]
Free disk space on /data (percentage) vfs.fs.size[/data,pfree]
Free disk space on $1 vfs.fs.size[{#FSNAME},free]
Free disk space on {#FSNAME} (percentage) vfs.fs.size[{#FSNAME},pfree]

其中類似於如下的配置是zabbix提供的low level discovery配置方式,用於自動創建監控項適用於有多塊磁碟、多個目錄、多塊網卡等類型情形下監控項的自動發現
可以把{#FSNAME}看做是模板可以匹配配置好的所有的相關項比如:
Free disk space on {#FSNAME} (percentage) vfs.fs.size[{#FSNAME},pfree]
Free disk space on /data (percentage) vfs.fs.size[/data,pfree]
Free disk space on /boot (percentage) vfs.fs.size[/boot,pfree]
Free disk space on / (percentage) vfs.fs.size[/,pfree]

類似的還有:
Incoming network traffic on $1 net.if.in[{#IFNAME}]
Outgoing network traffic on $1 net.if.out[{#IFNAME}]
IO.util.{#DISK_NAME} IO.util[{#DISK_NAME}]
等等

而上邊例子中的$1、$2等對應key_的參數位置,例如
Free disk space on $1 vfs.fs.size[/,free]
中$1就代表/ ,Free disk space on $1相當於Free disk space on /依次類推

8. zabbix 配置DBHost為遠程mysql資料庫

Zabbix的簡單安裝配置說明
1、在已有的LAMP或者LNMP的基礎上安裝zabbix,安談搏喊裝銀陵一些依賴包:
yum -y install mysql-devel libcurl-devel net-snmp-devel

2、添加用戶含野:
groupadd zabbix
useradd zabbix -g zabbix

3、創建資料庫,添加授權賬號
create database zabbix character set utf8;

導入資料庫
mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/schema.sql
mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/images.sql
mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/data.sql

9. 怎樣使用zabbix監控伺服器的mysql資料庫

怎旅圓樣使用zabbix監控伺服器的mysql資料庫
進入 zabbix web 台Configuration-->Hosts groups-->點擊Create host group-->選擇尺態template選項卡選擇模板TemplateApp MySQLTempldate OS Linux點擊update 即(032.png)
進入zabbix web 台configuration-->hosts-->點擊主機 name-->選擇陵鎮源template選
項卡選擇模板Template App MySQL點擊左邊Add按鈕點擊update按鈕即(033.png)

10. 配置zabbix 怎麼將數據導入資料庫表

做過Zabbix的同學都知道,Zabbix通過專用的Agent或者SNMP收集相關的監控數據攔褲,然後存儲到資料庫裡面實時在前台展示。Zabbix監控數據主要分為以下兩類: 歷史數簡鏈簡據:history相喚迅關表,從history_uint表裡面可以查詢到設備監控項目的最大,最小和平均...

閱讀全文

與zabbix如何將收集數據存入資料庫相關的資料

熱點內容
中考信息確認表丟失了怎麼辦 瀏覽:660
丁基下游產品有哪些 瀏覽:404
絕地求生啟動程序放在steam哪裡 瀏覽:941
企業開發微信小程序怎麼設置 瀏覽:4
德技技術公司怎麼樣 瀏覽:188
什麼是二手手機交易市場 瀏覽:518
廣發銀行交易失敗什麼原因 瀏覽:444
來年代理什麼項目致富 瀏覽:844
有代理怎麼做辣條 瀏覽:681
山東專業潤滑油代理怎麼樣 瀏覽:158
硬碟壞了怎麼轉移數據 瀏覽:444
比心信息發不出去怎麼回事 瀏覽:522
深耕華南市場的料企有哪些 瀏覽:226
硬碟壞了數據恢復軟體哪個好 瀏覽:551
綠世界產品怎麼樣 瀏覽:728
公司產權如何交易 瀏覽:107
數據透視為什麼同品種有好幾行 瀏覽:643
什麼微信小程序容易做 瀏覽:820
卸載小米運動後如何清空數據 瀏覽:947
在中國市場哪裡可以買到球衣 瀏覽:224