ZabbixSender.Protocol (ZabbixSender v1.1.0) View Source

Helper module for creating Zabbix Sender Protocol messages and parsing responses

Link to this section Summary

Types

Response from Zabbix Server

Functions

Decodes zabbix sender data response.

Encodes zabbix sender data request.

Link to this section Types

Specs

response_t() :: %{
  failed: non_neg_integer(),
  processed: non_neg_integer(),
  seconds_spent: number(),
  total: pos_integer()
}

Response from Zabbix Server

Link to this section Functions

Specs

decode_response(map()) :: {:error, :unexpected_response} | {:ok, response_t()}

Decodes zabbix sender data response.

Examples

iex> ZabbixSender.Protocol.decode_response(%{"response" => "success", "info" => "processed: 1; failed: 1; total: 2; seconds spent: 0.000055"})
{:ok, %{failed: 1, processed: 1, seconds_spent: 5.5e-5, total: 2}}
iex> ZabbixSender.Protocol.decode_response(%{"response" => "success", "info" => "failed: 1; total: 2; seconds spent: 0.000055"})
{:ok, %{failed: 1, processed: nil, seconds_spent: 5.5e-5, total: 2}}
iex> ZabbixSender.Protocol.decode_response(%{"response" => "error"})
{:error, :unexpected_response}
Link to this function

encode_request(data, timestamp)

View Source

Specs

encode_request([...], pos_integer()) :: %{
  request: String.t(),
  data: list(),
  clock: pos_integer()
}

Encodes zabbix sender data request.

Examples

iex> ZabbixSender.Protocol.encode_request([%{"key" => "value"}], 1570451084)
%{clock: 1570451084, data: [%{"key" => "value"}], request: "sender data"}
Link to this function

value(hostname, key, value, timestamp)

View Source

Specs

value(String.t(), String.t(), any(), pos_integer() | nil) :: %{
  :host => String.t(),
  :key => String.t(),
  :value => String.t(),
  optional(:clock) => pos_integer()
}

Builds zabbix value.

Examples

iex> ZabbixSender.Protocol.value("localhost", "key", 1.23, 1570451084)
%{clock: 1570451084, host: "localhost", key: "key", value: "1.23"}
iex> ZabbixSender.Protocol.value("localhost", "key", 23, nil)
%{host: "localhost", key: "key", value: "23"}