Sensu Transport

Reference documentation

What is the Sensu Transport?

Sensu services use a message bus (e.g. RabbitMQ) for communication. This message bus communication is provided by the Sensu Transport, which is a library that makes it possible to leverage alternate transport solutions in place of RabbitMQ (the default transport). Sensu services requires access to the same instance of the defined transport (e.g. a RabbitMQ server or cluster) to function. Sensu check requests and check results are published as “messages” to the Sensu Transport, and the corresponding Sensu services receive these messages by subscribing to the appropriate subscriptions.

Selecting a Transport

The Sensu Transport library makes it possible to replace Sensu’s recommended and default transport (RabbitMQ) with alternative solutions. There are currently two (2) transports provided with the sensu-transport library: RabbitMQ and Redis — each presenting unique performance and functional characteristics.

The RabbitMQ Transport is the original Sensu transport, and continues to be the recommended solution for running Sensu in production environments.

Pros

  • Native SSL support
  • Pluggable authentication framework
  • Support for ACLs

Cons

  • Adds Erlang as a runtime dependency to the Sensu architecture (only on systems where RabbitMQ is running)

The Redis Transport

The Redis Transport was an obvious alternative to the original RabbitMQ Transport because Sensu already depends on Redis as a data store. Using Redis as a transport greatly simplifies Sensu’s architecture by removing the need to install/configure RabbitMQ and Erlang (RabbitMQ’s runtime).

Pros

  • Simplifies Sensu architecture by removing need for dedicated transport (by using Redis as the data store and transport)
  • Comparable or better throughput/performance than RabbitMQ

Cons

  • No native support for SSL
  • No support for transport “consumers” metrics (see Health & Info API)

Transport configuration

Example transport definition

The following is an example transport definition, a JSON configuration file located at /etc/sensu/conf.d/transport.json. This example transport configuration indicates that Redis should be used as the Sensu transport.

{
  "transport": {
    "name": "redis",
    "reconnect_on_error": true
  }
}

Transport DNS resolution

The Sensu Transport will resolve provided hostnames before making connection attempts to the RabbitMQ & Redis transports. Resolving DNS hostnames prior to connecting allows Sensu to properly handle resolution failures, log them, and make further attempts to connect to the selected transport. This also allows Sensu to use DNS as a transport failover mechanism.

Transport definition specification

The Sensu Transport uses the "transport": {} definition scope.

Transport attributes

The following attributes are defined within the "transport": {} definition scope.

name
description
The Transport driver to use.
required
false
type
String
allowed values
rabbitmq, redis
default
rabbitmq
example
"name": "redis"
reconnect_on_error
description
Attempt to reconnect after a connection error.
required
false
type
String
default
true
example
"reconnect_on_error": "false"

Start your FREE trial today.

Already using Sensu Core? Upgrade to Sensu Enterprise today to take advantage of its enterprise console, added-value features, built-in integrations, FREE annual training, and enterprise-class support.