導航:首頁 > 編程語言 > zabbixapiphp

zabbixapiphp

發布時間:2022-09-04 14:10:11

Ⅰ 監控常用的應用軟體有什麼

常用的有:
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 API如何不打log日誌

請明確下具體是哪方面日誌,如果是Debug的話,可以直接在Server配置中關閉。如果是Web日誌的話,因為你這個是正常的API(Web)訪問,只能配置禁止記錄。如果是Nginx,可以參考這樣:

location = /zabbix/api_jsonrpc.php{

access_log off;

log_not_found off;

}

Ⅲ 如何超鏈接到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 3版本 需要什麼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": "",
}

Ⅳ 如何通過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 /依次類推

Ⅵ 主流的開源的網路攝像機搭載的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 通過什麼方式監控vmware

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 常用用法:

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子句進行判斷了,例如聚合函數的值是否大於某一個值等等。
分享
本回答由電腦網路分類達人 化曉峰認證
其他類似問題
2015-05-26如何通過Zabbix獲取監控數據
2015-02-03如何從Zabbix資料庫中獲取監控數據
2014-12-24zabbix對zabbix錯誤日誌進行監控求助
2014-11-06Zabbix 如何監控伺服器硬體信息
2015-04-26zabbix怎麼監控nginx
更多關於zabbix 通過什麼方式監控vmware的問題>>
為您推薦:

2015-01-03 10:22提問者採納
##################################
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 /依次類推

Ⅷ 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": "",
}

閱讀全文

與zabbixapiphp相關的資料

熱點內容
unix網路編程卷4 瀏覽:806
找靚機app下單什麼時候發貨 瀏覽:411
android一個應用兩個進程 瀏覽:801
linux硬碟復制 瀏覽:806
php圖片伺服器搭建 瀏覽:798
下載壓縮文件怎麼打開 瀏覽:192
新建文件夾叫什麼名字 瀏覽:565
windows20的開機命令 瀏覽:332
微信一般在電腦的那個文件夾 瀏覽:509
go在win7下編譯特別慢 瀏覽:256
光遇ios耳機安卓為什麼沒有 瀏覽:904
小米手機桌面文件夾經常自動散開 瀏覽:607
小米電話手錶用什麼app進行設置 瀏覽:265
虛擬列印機pdf下載 瀏覽:671
jdk編譯運行方法 瀏覽:459
android執行shell命令 瀏覽:349
程序員頭像女 瀏覽:57
有什麼可以變頭發顏色的app 瀏覽:935
玩具解壓屋游戲下載 瀏覽:849
我的世界拔刀劍伺服器地址id 瀏覽:891