View Source ZabbixSender.Protocol (ZabbixSender v1.1.2)

Helper module for creating Zabbix Sender Protocol messages and parsing responses

Summary

Types

Response from Zabbix Server

Functions

Decodes zabbix sender data response.

Encodes zabbix sender data request.

Types

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

Response from Zabbix Server

Functions

@spec 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
@spec 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
@spec 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"}