# omczmq: Output module for ZeroMQ

Module Name: | omczmq
Author: | Brian Knox <bknox@digitalocean.com>

## Purpose

The `omczmq` module publishes messages over ZeroMQ using the CZMQ library. Messages are formatted with templates and sent according to the configured socket type and topic list. The module supports dynamic topics, CURVE authentication and heartbeat settings when available in the underlying libraries.

## Configuration Parameters

Note

Parameter names are case-insensitive.

### Module Parameters

`authenticator`

  Start a ZAauth authenticator thread when set to `on`.

`authtype`

  Set to `CURVECLIENT` or `CURVESERVER` to enable CURVE security.

`servercertpath`

  Path to the server certificate used for CURVE.

`clientcertpath`

  Path to the client certificate or directory of allowed clients.

### Action Parameters

`endpoints`

  Space-separated list of ZeroMQ endpoints to connect or bind.

`socktype`

  ZeroMQ socket type such as `PUSH`, `PUB`, `DEALER`, `RADIO` or `CLIENT`.

`sendtimeout`

  Timeout in milliseconds before a send operation fails.

`sendhwm`

  Maximum number of queued messages before new ones are dropped.

`connecttimeout`

  Connection timeout in milliseconds (requires libzmq 4.2 or later).

`heartbeativl`

  Interval in milliseconds between heartbeat pings (libzmq >= 4.2).

`heartbeattimeout`

  Time in milliseconds to wait for a heartbeat reply (libzmq >= 4.2).

`heartbeatttl`

  Time a peer may wait between pings before disconnecting (libzmq >= 4.2).

`template`

  Name of the template used to format messages. Defaults to `RSYSLOG_ForwardFormat`.

`topics`

  Comma-separated list of topics for `PUB` or `RADIO` sockets.

`topicframe`

  When `on` the topic is sent as a separate frame on `PUB` sockets.

`dynatopic`

  If `on` each topic name is treated as a template.

## Examples

    module(
        load="omczmq"                          # load the output module
        servercertpath="/etc/curve.d/example_server"  # server certificate path
        clientcertpath="/etc/curve.d/allowed_clients" # allowed client directory
        authtype="CURVESERVER"                 # enable CURVE server mode
        authenticator="on"                     # start ZAauth authenticator
    )

    template(name="host_program_topic" type="list") { # build a dynamic topic
        property(name="hostname")                     # host segment
        constant(value=".")                           # separator
        property(name="programname")                  # program segment
    }

    action(
        type="omczmq"                          # use the omczmq output
        socktype="PUB"                         # create a PUB socket
        endpoints="@tcp://*:31338"             # bind to port 31338
        topics="host_program_topic"            # topic template name
        dynatopic="on"                         # treat topic as template
        topicframe="on"                        # send topic as separate frame
    )

Support: rsyslog Assistant | GitHub Discussions | GitHub Issues: rsyslog source project

Contributing: Source & docs: rsyslog source project

© 2008–2025 Rainer Gerhards and others. Licensed under the Apache License 2.0.