Class: ZabbixSend::Sender

Inherits:
Object
  • Object
show all
Defined in:
lib/zabbix_send.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build_message(zhost, zkey, zvalue, ztime) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/zabbix_send.rb', line 8

def self.build_message(zhost,zkey,zvalue,ztime)
  msg = {
    "request" => "sender data",
    "data" => [
      {
        "host" => zhost,
        "key" => zkey,
        "value" => zvalue,
        "clock" => ztime
      }]
  }
  body = JSON.generate msg
  data_length = body.bytesize
  data_header = "ZBXD\1".encode("ascii") + [data_length].pack("Q")
  data_to_send = data_header + body
end

.send_message(message, server, port) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/zabbix_send.rb', line 25

def self.send_message(message, server, port)
  s = TCPSocket.new(server, port)
  s.write message
  response_header = s.recv(5)
  if not response_header == "ZBXD\1"
    puts "response: #{response_header}"
    raise 'Got invalid response'
  end
  response_data_header = s.recv(8)
  response_length = response_data_header.unpack("Q")[0]
  response_raw = s.recv(response_length)
  s.close
  response = JSON.load response_raw
end

Instance Method Details

#zabbix_send(zserver, zhost, zkey, zvalue, ztime = Time.now.to_i, zport = 10051) ⇒ Object



40
41
42
43
# File 'lib/zabbix_send.rb', line 40

def zabbix_send(zserver,zhost,zkey,zvalue,ztime=Time.now.to_i,zport=10051)
  z_send = Sender.build_message zhost, zkey, zvalue, ztime
  Sender.send_message z_send, zserver, zport
end