Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MQTT for Sysadmins

MQTT for Sysadmins

Jan-Piet Mens

April 05, 2014

More Decks by Jan-Piet Mens

Other Decks in Technology


  1. transport protocol binary payload, 256MB, (+2 bytes) , fast, lightweight,

    ideal for low- bandwith, high-latency networks
  2. PUB/SUB decoupled senders recipients: flexibility one producer to many (changing)

    consumers no queueing broker can hold messages until subscriber reconnects durable (retain) Last Will and Testament single TCP port (easy on firewalls)
  3. MQTT brokers $SYS topic $SYS/broker/clients/total 1771 $SYS/broker/messages/received 36597465 $SYS/broker/messages/sent 39714120

    $SYS/broker/messages/stored 2941 $SYS/broker/bytes/received 2830787008 $SYS/broker/bytes/sent 3810653433 $SYS/broker/version mosquitto version 1.2 $SYS/broker/publish/messages/received 19798673 $SYS/broker/publish/messages/sent 30622855 $SYS/broker/publish/bytes/received 1868229299 $SYS/broker/publish/bytes/sent 3185942282
  4. CLI utilities mosquitto_sub -v [-h localhost] [-p 1883] [--cafile file]

    [--cert file --key file] [-u username [-P password]] [ --tls-version tlsv1.2 ] -t 'topic/#' subscribe publish mosquitto_pub ... [-r] -m payload
  5. Python API: PUB #!/usr/bin/env python import paho.mqtt.publish as mqtt mqtt.single('conf/hello',

    'Hello MQTT') $ mosquitto_sub -h localhost -v -t 'conf/#' conf/hello Hello MQTT payload topic
  6. Python API: SUB #!/usr/bin/env python import paho.mqtt.client as paho def

    on_connect(mosq, userdata, rc): mqttc.subscribe("conf/+", 0) def on_message(mosq, userdata, msg): print "%s %s" % (msg.topic, str(msg.payload)) mqttc = paho.Client() mqttc.on_connect = on_connect mqttc.on_message = on_message mqttc.connect("localhost", 1883, 60) mqttc.loop_forever() callbacks
  7. Python API: SUB $ mosquitto_pub -t 'conf/thirsty' -m 'Beertime?' $

    mosquitto_pub -t 'conf/catering' -m 'Coffee is ready' $ ./sub.py conf/thirsty Beertime? conf/catering Coffee is ready
  8. MQTT out there Github (notifications), power metering, trains, FaceBook messenger,

    connected cars, temperature monitoring, host monitoring (load)
  9. job control, reporting https://gist.github.com/jpmens/7101170 $ mosquitto_sub -v -t 'processes/#' processes/run.sh

    Starting processes/run.sh Still running processes/monitor/spec1 Starting processes/run.sh Still going strong at Tue Oct 22 15:49:07 CEST 2013 processes/run.sh That's it, folks!