Skip to content
share

Send data to MQTT brokers

Output Plugin: MQTT

This plugin publishes the result of Logagent parser as JSON message to MQTT topics. Multiple instances of the plugin can be used, each one with its own topic filter. The optional filter configuration requires a field name (e.g. logSource) to match a regular expression. Messages not matching the filter are ignored. When no filter is specified Logagent sends all messages to the given MQTT topic.

The property 'dynamicTopic' evaluates the following JavaScript expression and can be used to map any data field to the MQTT topic. The variable 'data' contains the parsed log the variable 'context' the input plugin specific context object. MQTT input plugins generate 'context.topic', 'input-elasticsearch-http' generates e.g. 'data._index' property.

Configuration

input:
  files: 
    - /var/log/sensor/*.log
    - /var/log/application-logs/*.log

output: 
  all:
    module: output-mqtt
    url: mqtt://test.mosquitto.org
    topic: logs-and-sensor-data
    debug: false

  sensor-data:
    module: output-mqtt
    url: mqtt://test.mosquitto.org
    topic: sensor-data
    debug: false
    # optional filter settings matching data field with regular expressions
    filter: 
      field: logSource
      match: sensor.*

  log-data:
    module: output-mqtt
    url: mqtt://test.mosquitto.org
    topic: log-data
    debug: false
    filter: 
      field: logSource
      match: application-logs.*

  dynamic-topic:
    module: output-mqtt
    url: mqtt://test.mosquitto.org
    topic: log-data
    debug: false
    dynamicTopic: data.logSource
    # for elasticsearch-http input
    # dynamicTopic: data._index 
    # for MQTT input
    # dynamicTopic: context.topic

Start Logagent

logagent --config mqtt-output.yaml

View events via mqtt client

npm i -g mqtt
mqtt subscribe -h test.mosquitto.org -t sensor-data