Ⅰ zabbix jsrpc.php 什麼東西
「jsonrpc」: 「2.0」-這是標準的JSON RPC參數以標示協議版本。所有的請求都會保持不變。
「method」: 「method.name」-這個參數定義了真實執行的操作。例如:host.create、item.update等等
「params」-這里通過傳遞JSON對象來作為特定方法的參數。如果你希望創建監控項,」name」和」key_」參數是需要的,每個方法需要的參數在Zabbix API文檔中都有描述。
「id」: 1-這個欄位用於綁定JSON請求和響應。響應會跟請求有相同的」id」。在一次性發送多個請求時很有用,這些也不需要唯一或者連續
「auth」: 「″-這是一個認證令牌【authentication token】用以鑒別用戶、訪問API。這也是使用API進行相關操作的前提-獲取認證ID。
Ⅱ 如何通過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中。
參考:
https://www.zabbix.com/documentation/2.4/manual/config
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這個方法。這種方式實際上最終還是由後台資料庫獲取的。方法提供了豐富的參數,使用非常靈活。但對於一次性大規模的取出大量主機大量監控項的大批數據不太適合。
Ⅲ zabbix3.0需要php什麼版本
php的,用了thinkphp框架,i wipe,又造一遍輪子,之前和小夥伴@淑高用python弄過一個簡單的運維後台,集成了saltstack和ansible,後來離職了就沒搞了),現在想在cmdb系統中顯示伺服器的一些基本監控情況,這里用到zabbix api來獲取伺服器信息。
zabbix api 需要post過去的數據格式如下
Shell
{
"jsonrpc": "2.0",
"method": "method.name",
"params": {
"param_1_name": "param_1_value",
"param_2_name": "param_2_value"
},
"id": 1,
"auth": "",
}
Ⅳ 監控常用的應用軟體有什麼
常用的有:
1.cactio
實際上cacti不是監控工具,而是個依賴於SNMP的數據採集和數據呈現的工具。但是很多人喜歡用來當監控(因為其功能可以很好的完成這個工作)
功能:數據採集、 保存數據[SQL, txt].
數據展示(rrdtool 繪圖)。
數據分析和報警(很一般)。
2. nagios。
功能:數據報警(報警功能是Nagios的特色功能) [ 故障觸發,故障恢復都可以。
依賴分析報警(能自動的識別到關鍵設備的故障,關聯設備不會報警)。
數據採集(採集的數據是弱項,他只關心警戒位,只關心正常與否的狀態,狀態轉換時可以實現報警,所以它採集的數據不需要保存),當然也有插件彌補這個不足,如PNP4Nagios。
3. zabbix (php)(推薦)
Nagiostcacti整合互相彌補不足!I
nagios和 cacti不適合超大規模的監控、由於大規模的帶寬和網路限制,會導致監控的延遲等問題,所以有很多是 nagios+ cacti整合,但是依然不適合在大規模的環境中,不適合分布式部署, Nagios在大規模中就會出現延遲,失
去 Nagios本事的特色。
那麼 zabbix同時整合了 cacti和 Nagios特點的工具,而且還具有了前兩者不具有的工具,支持分布式等等。
4. 補充工具:
netdata:託管在github上的一款類型zabbix的開源監控工具https:/
/github. com/firehol/netdata
open- falcon:小米公司開源的企業級監控工具(python)(推薦)
Ganglia類似於 zabbix,大型分布式監控系統
開源監控工具對比http://www.oschina.net/news/67525/monitoring-tools
5. 監控軟體數據採集的方式
SNMP 協議。
agent 代理的方式去採集數據。
shell 腳本api 介面
6. 數據展示方式
php html app
7. 數據告警
mail,msm,微信,電話,釘釘機器人
Ⅳ 如何超鏈接到zabbix的screen頁面
使用方式如下:
python ./screen_host.py -H 主機列表 -n screen名稱 -G graph名稱
具體的腳本:
#!/usr/bin/env python
import urllib2
import sys
import json
import argparse
def requestJason(url,values):
data = json.mps(values)
req = urllib2.Request(url, data, {'Content-Type': 'application/json-rpc'})
response = urllib2.urlopen(req, data)
data_get = response.read()
output = json.loads(data_get)
print output
try:
message = output['result']
except:
message = output['error']['data']
quit()
print json.mps(message)
return output
def authenticate(url, username, password):
values = {'jsonrpc': '2.0',
'method': 'user.login',
'params': {
'user': username,
'password': password
},
'id': '0'
}
idvalue = requestJason(url,values)
return idvalue['result']
def getHosts(hostname,url,auth):
host_list = []
values = {'jsonrpc': '2.0',
'method': 'host.get',
'params': {
'output': ["hostid","host"],
'filter': {
'host': hostname
}
},
'auth': auth,
'id': '2'
}
output = requestJason(url,values)
for host in output['result']:
host_list.append(host['hostid'])
return host_list
def getGraphs(host_list,name_list, url, auth, columns, graphtype=0 ,dynamic=0):
if (graphtype == 0):
selecttype = ['graphid']
select = 'selectGraphs'
if (graphtype == 1):
selecttype = ['itemid', 'value_type']
select = 'selectItems'
values = ({'jsonrpc': '2.0',
"method": "graph.get",
"params": {
select: [selecttype,"name"],
"output": ["graphid","name"],
"hostids": host_list,
"filter":{'name':name_list},
"sortfield":"name",
},
"auth": auth,
"id": '3'
})
print values
output = requestJason(url,values)
bb = sorted(output['result'],key = lambda x:x['hosts'][0]['hostid'])
output['result'] = bb
graphs = []
if (graphtype == 0):
for i in output['result']:
print i
graphs.append(i['graphid'])
if (graphtype == 1):
for i in output['result']:
if int(i['value_type']) in (0, 3):
graphs.append(i['itemid'])
graph_list = []
x = 0
y = 0
print graphs
for graph in graphs:
print "x is " + str(x)
print "y is " + str(y)
graph_list.append({
"resourcetype": graphtype,
"resourceid": graph,
"width": "500",
"height": "100",
"x": str(x),
"y": str(y),
"colspan": "0",
"rowspan": "0",
"elements": "0",
"valign": "0",
"halign": "0",
"style": "0",
"url": "",
"dynamic": str(dynamic)
})
x += 1
print type(x)
print type(columns)
if x == int(columns):
x = 0
y += 1
print graph_list
return graph_list
def screenCreate(url, auth, screen_name, graphids, columns):
columns = int(columns)
if len(graphids) % columns == 0:
vsize = len(graphids) / columns
else:
vsize = (len(graphids) / columns) + 1
values = {"jsonrpc": "2.0",
"method": "screen.create",
"params": [{
"name": screen_name,
"hsize": columns,
"vsize": vsize,
"screenitems": []
}],
"auth": auth,
"id": 2
}
for i in graphids:
values['params'][0]['screenitems'].append(i)
output = requestJason(url,values)
def main():
url = 'http://xxxx/api_jsonrpc.php'
username = 'xxxx'
password = 'xxxx'
auth = authenticate(url, username, password)
host_list = getHosts(hostname,url,auth)
print host_list
graph_ids = getGraphs(host_list,graphname, url, auth, columns)
screenCreate(url, auth, screenname, graph_ids, columns)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Create Zabbix screen from all of a host Items or Graphs.')
parser.add_argument('-G', dest='graphname', nargs='+',metavar=('grah name'),
help='Zabbix Host Graph to create screen from')
parser.add_argument('-H', dest='hostname', nargs='+',metavar=('10.19.111.145'),
help='Zabbix Host to create screen from')
parser.add_argument('-n', dest='screenname', type=str,
help='Screen name in Zabbix. Put quotes around it if you want spaces in the name.')
parser.add_argument('-c', dest='columns', type=int,
help='number of columns in the screen')
args = parser.parse_args()
print args
hostname = args.hostname
screenname = args.screenname
columns = args.columns
graphname = args.graphname
if columns is None:
columns = len(graphname)
print columns
main()
Ⅵ zabbix API如何不打log日誌
請明確下具體是哪方面日誌,如果是Debug的話,可以直接在Server配置中關閉。如果是Web日誌的話,因為你這個是正常的API(Web)訪問,只能配置禁止記錄。如果是Nginx,可以參考這樣:
location = /zabbix/api_jsonrpc.php{
access_log off;
log_not_found off;
}
Ⅶ 主流的開源的網路攝像機搭載的WEB界面軟體有哪幾個
1. 開源網路監控工具: NetXMS
NetXMS 提供了企業級開源網路管理和監控程序,它在Windows和Linux上有一個簡單的用戶界面。
NetXMS通過相對簡單的安裝過程為IT基礎架構的所有層提供了分布式網路監控、自動化網路發現和詳細報告。
此外,伺服器設備和代理對於這樣一個全面的產品來說是相當輕量級的。
2. 開源網路監控工具: Pandora FMS
定位於企業級, Pandora FMS 提供了一個時尚且整潔的用戶體驗,提供了易於閱讀的快速洞察工具以及重要的網路統計信息,例如網路狀態、已上報的告警、已部署的代理數量和其他最近執行任務的列表。
Pandora FMS可以在無需外部訪問的情況下執行網路診斷,這意味著用戶可以更快地響應任何網路問題。事實上,FMS聲稱,在代理模式下的器監控系統響應速度約為10秒。
3. 開源網路監控工具: Cacti
最初發布於2001年, Cacti 是一款開源的基於Web的網路監控和專為數據記錄而設計的圖形化工具。它可以用於實時顯示網路數據,如CPU負載或帶寬利用率。
Cacti是RRDtool的前端應用程序,RRDtool是一種用於存儲實時變化數據的開源資料庫工具,其使用SNMP作為其默認收集演算法,但如果你喜歡本地Perl的PHP腳本,那麼你也可以使用它們。
其最新版本0.8.8h於2016年5月發布,主要功能包括無限圖形項目、圖形自動填充支持、圖形數據處理、自定義數據採集腳本、內置SNMP支持、圖形模板、數據源模板、主機模板和基於用戶的管理。
4. 開源網路監控工具: GroundWork Monitor Core
GroundWork Monitor Core 是監控網路、應用和雲計算使用情況的平台。開源版本包含最多可監控50個設備和基於社區的支持的許可證,該軟體還有其對應的商業版本。
在其網路管理功能方面,GroundWork提供網路和設備的自發現和維護、拓撲、報警控制、通過API/SNMP/IPMI的數據收集和對OpenDaylight SDN的支持等功能。
GroundWork還提供了存儲管理,支持大規模的企業級供應商,如NetApp和EMC,以及從磁碟、塊或對象存儲的數據收集和存儲緩沖以及中斷可視化。
由於GroundWork的一站式網路管理方法,這種套件可能更適合那些尋找成熟品牌的大型商業和企業,而不是以開發人員為重點的工具,如Big Brother或Big Sister。
5. 開源網路監控工具:Hyperic
VMware的 Hyperic 工具用於在物理、虛擬或雲環境下監控Web應用程序及其性能。 它適用於應用程序伺服器,web伺服器,資料庫,操作系統,虛擬機管理程序,消息傳遞服務和目錄伺服器。
Hyperic提供基礎架構和操作系統監控,詳細的報告,應用程序和中間件監控,警報和修復工作流程以及通用可擴展的API。
該網路監控工具提供了企業版本,可以提高網路警報功能,並且能更好地創建基準。
6. 開源網路監控工具: Observium
基於Linux的 Observium 是一個自動監測的網路監控工具。 據該網站介紹,「該工具是由一批經驗豐富的專業網路工程師和系統管理員開發和維護的,Observium是一個由用戶自己設計和構建的平台。」
Observium提供社區版本和專業版,使用RRDTool進行緩沖存儲和圖形化功能,並具有易於使用的用戶界面和報告功能。 但是,它沒有報告導出功能,這可能對商務應用來講會是一個問題。
社區版本將為用戶提供對所有支持設備或指標的完整 自動監測功能, 通過自動發現協議進行網路映射, 自動識別數百種設備,並且每六個月發布一個新版本。
而專業版用戶將獲得所有社區版本的功能並且還將獲得實時軟體更新和修復功能,基於規則的自動分組功能,網路閾值和狀態警報系統以及流量統計系統。
7. 開源網路監控工具: Zabbix
Zabbix 作為企業級的網路監控工具,通過從伺服器,虛擬機和網路設備收集的數據提供實時監控,自動發現,映射和可擴展等功能。
Zabbix的企業級監控軟體為用戶提供內置的Java應用伺服器監控,硬體監控,VMware監控和CPU,內存,網路,磁碟空間性能監控。
Ⅷ 如何通過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子句進行判斷了,例如聚合函數的值是否大於某一個值等等。
Ⅸ The requested URL was not found on this server是什麼意思
的意思是在此伺服器上找不到所請求的URL。
組織成正常的中文語序,意思就是:在該伺服器上無法找到您想要瀏覽的這個URL(資源地址)下轄的『item.htm』路徑。
item是條目,htm是html協議的簡寫,item.htm是url地址的一種固定路徑格式,沒有特定含義,可以不翻譯。
(9)zabbixphpapi擴展閱讀:
注意事項:
1、404沒有找到
請求失敗,在伺服器上找不到所需的資源。沒有信息告訴用戶這種情況是暫時的還是永久的。如果伺服器知道,它應該使用410狀態代碼告訴舊資源,由於一些內部配置機制問題,它是永久不可用的,沒有地址跳到。
當伺服器不想透露請求被拒絕的確切原因,或者當沒有其他合適的響應可用時,狀態碼404被廣泛使用。此錯誤最可能的原因是伺服器端沒有頁面。
2、內部伺服器錯誤
伺服器遇到意外情況,導致它無法完成對請求的處理。通常,當伺服器端源代碼中出現錯誤時,就會出現此問題。