Skip to content

Zabbix Output

The Zabbix Output receives Storm tuples, convert them in a Json event and sent that event to Zabbix server. It supports SSL (TLS) authentication.

Note: This node DOES NOT use bulked asynchronous strategy yet. This node DOES NOT batch by small groups and each tuple sent one zabbix event.

Warning

This node is a "Custom Node". Therefore, you need to make sure the jar is in the execution environment and note the subtlety of the node declaration. This node declaration will change in a future version.

Overview

{
  type: third_party_node
  class: org.thales.punch.nodes.zabbix.ZabbixOutputNode
  settings: {
    "host": "127.0.0.1",
    "port": 10051,
    "event_hostname": "Precision-5530",
    "event_key": "zabbix_trapper_key",
    "ssl_truststore_location: "/trust/store/path",
    "ssl_truststore_password": "trustStorePassword",
    "connection_timeout": 3000,
  }
  subscribe: [
    {
      component: punchlet_node
      stream: logs
      fields: ["host", "key", "value", "clock"]
    }
  ]
  publish: [
    {
      stream: logs
      fields: ["host", "key", "value", "failed", "processed", "total", "json_mapper"]
    }
  ]
}

Parameters

The zabbix output accepts the following settings:

  • host: (string, mandatory)

    the hostname/ip of the zabbix server

  • port: (integer: mandatory)

    the zabbix port.

  • event_hostname (string: optional)

    set default event "host" key. Can be override by tuple field "host".

  • event_key (string: optional)

    set default event "key" key. Can be override by tuple field "key".

  • ssl_truststore_location (string: optional)

    ssl authentication, pass trust store path.

  • ssl_truststore_password (string: optional)

    password for the trust store

  • connection_timeout (integer: option)

    connexion timeout for socket

Failing strategy

You may want to avoid failing your tuple in case of event error, in order to keep your punchline running for example. To do that and keep track of the failing tuples, you can define a _ppf_errors stream in your publish settings. If such a stream exists, then your node will not fail tuple but ack them and send them to the _ppf_errors stream, in order to be processed.

{
  type: third_party_node
  class: org.thales.punch.nodes.zabbix.ZabbixOutputNode
  settings : {
    publish : [
      {
         stream : _ppf_errors
      }
    ]
  }
  subscribe: [

  ]
}

All these following fields will be provided:

  • host : contains the input host sent to zabbix
  • key : contains the input key sent to zabbix
  • value : contains the input value sent to zabbix
  • clock : contains the event clock (timestamp) sent to zabbix
  • processed : number of processed (succeed) events accepted by zabbix. Because one event is sent for each input tuple, the expected value is "1". "0" in case of zabbix server failure
  • failed : number of failed events by zabbix server. Because one event is sent for each input tuple, the expected value is "0". "1" in case of zabbix server failure.
  • total : number of events sent to zabbix server. Because one event is sent for each input tuple, the expected value is always "1".
  • spent_time : time used by zabbix server to process event in second.

Security

Additional parameters are available to configure the Zabbix output node with security settings for :

  • TLS and authentication uses trust store Example :
{
  type: third_party_node
  class: org.thales.punch.nodes.zabbix.ZabbixOutputNode
  settings: {
    host: 127.0.0.1
    port: 10051
    ssl_truststore_location: data/certs/truststore.jks
    ssl_truststore_pass: truststore_secret
  }
}

Note

For Security configuration read Zabbix encryption documentation