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.
Builds zabbix value.
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}
@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"}
@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"}