概述
zabbix使用一種自定義的基於tcp的協議與客戶端進行通訊
zabbix zabbix agent
協議內容
- ": json格式,內容又分為主動檢查和被動檢查zbxd\x01
" (5
bytes)
- data length (8 bytes). 1 will be formatted as 01/00/00/00/00/00/00/00 (eight bytes in hex, 64 bit number)
為了避免zabbix記憶體耗盡,zabbix限制每個連線最多使用128m記憶體
被動檢查
server request
\nagent response
[\0是可選的僅在不支援的items時傳送]
主動檢查
(1)獲取相關items的列表
agent request
server response,]}(2)傳送收集的資料
agent send
,server response python模擬的zabbix_sender],"clock
": 1400675595
, "ns
": 78211329
}
#執行!/usr/bin/python
#-*- coding:utf8 -*-
__author__ = '
pdd'
__date__ = '
2016/11/28
''''
script simulate zabbix_sender
'''import
sysimport
json
import
time
import
struct
import
socket
import
argparse
parser = argparse.argumentparser(description='
script simulate zabbix_sender')
parser.add_argument('-z
','--server
',dest='
server
',action='
store
',help='
zabbix server ip')
parser.add_argument('-p
','--port
',dest='
port
',action='
store
',help='
zabbix server port
',default=10051,type=int)
parser.add_argument('-s
','--host
',dest='
host
',action='
store')
parser.add_argument('-k
','--key
',dest='
key',action='
store
',help='
item key')
parser.add_argument('-o
','--value
',dest='
value
',action='
store
',help='
item value')
args =parser.parse_args()
class
metric(object):
def__init__
(self, host, key, value):
self.host =host
self.key =key
self.value =value
def__repr__
(self):
result = '
metric(%r, %r, %r)
' %(self.host, self.key, self.value)
return
result
defsend_to_zabbix():
j =json.dumps
m =metric(args.host, args.key, args.value)
clock = ('
%d' %time.time())
metrics = '
' %(j(m.host), j(m.key), j(m.value), j(clock))
json_data = '
' %metrics
data_len = struct.pack('
', len(json_data))
packet = '
zbxd\x01
' + data_len +json_data
try:
zabbix =socket.socket()
zabbix.connect((args.server, args.port))
zabbix.sendall(packet)
resp_hdr = zabbix.recv(13)
resp_body_len = struct.unpack('
', resp_hdr[5:])[0]
resp_body =zabbix.recv(resp_body_len)
zabbix.close()
resp =json.loads(resp_body)
(resp)
except
:
print('
error while sending data to zabbix')
if__name__=='
__main__':
send_to_zabbix()
參考:
Zabbix 漏洞分析
之前看到zabbix 出現sql注入漏洞,自己來嘗試分析。ps 我沒找到3.0.3版本的 zabbix 暫用的是zabbix 2.2.0版本,如果有問題,請大牛指點。zabbix是乙個基於web介面的提供分布式系統監視以及網路監視功能的企業級的開源解決方案。能監視各種網路引數,保證伺服器系統的安全運...
網路協議分析 VRRP協議分析
2 rip 2的報文格式 3 rip 2的驗證報文 三 例項化 rip報文由頭部 header 和多個路由表項 route entries 部分組成。乙個rip表項中最多可以有25個路由表項。rip是基於udp協議的,所以rip報文的資料報不能超過512個位元組。1 command 長度8bit,報...
網路協議分析 生成樹協議(STP)分析
lan資料鏈路層 例項化二層通訊協議,基本應用是防止交換機冗餘鏈路產生的環路.用於確保乙太網中無環路的邏輯拓撲結構.從而避免了廣播風暴,大量占用交換機的資源。網橋協議資料單元 bridge protocol data unit 是一種生成樹協議問候資料報,它可以配置的間隔發出,用來在網路的網橋間進行...