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

All Things Open 2018

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

All Things Open 2018

Avatar for Noah Crowley

Noah Crowley

October 23, 2018
Tweet

More Decks by Noah Crowley

Other Decks in Technology

Transcript

  1. A time series is a series of data points indexed

    (or listed or graphed) in time order.
  2. Hardware evolution & reduced cost • Gains in process efficiencies:

    • More chips, cheaper chips, lower power chips • Large numbers of inexpensive, fairly accurate sensors • Increased availability of SoCs
  3. IoT data must be: • Timely – ingestion rates and

    query efficiency is key • Accurate – data integrity and platform reliability is important • Actionable – data visualization, anomaly detection & alerting are essential • Deployable – in the datacenter and at the edge
  4. Where to collect your data • Distributed Collection vs. Centralized

    Collection • How is the data used? • Who uses the data?
  5. Collect in the cloud • All data flows directly to

    the cloud • Analysis and visualization from anywhere • Take advantage of Infrastructure-as-a-Service • At the mercy of your network connection…
  6. Collect at the device • Data is collected close to

    the sensor • Local processing and analysis • Unreliable back-haul network • No requirement for centralized storage or analysis
  7. Distributed data collection • Data is fed to multiple collection

    points • Collection points feed back-end system of record • Distributes data collection load • More tolerant of network outages
  8. Data layer architecture • Data is collected at the edge,

    close to the sensor • Edge collectors are also capable of processing the data • Edge collectors can handle local events & trigger actuation • Data forwarded to a centralized back-end • Can be down-sampled to reduce network costs
  9. IoT Platform Hardware Needs • Extensive protocol support for data

    ingestion • BLE, Zigbee, Zwave, CoAP, MQTT, MODBUS • Storage for local data • Ideally runs a full-fledged OS
  10. Edge Device Components • Pine-64 LTS Main Board ($32.00) •

    WiFi/BLE card ($9.99) • 7” TFT Touchscreen ($35.99) • Pine64 Playbox Enclosure ($9.99) • LiPo Battery ($21.99) • LoRa Board ($19.95)
  11. Pine64 • Quad-core ARM A53 64-bit • 2GB LPDDR3 RAM

    • GPIO • UART • I2C • SPI • LTS version committed to supply until 2022
  12. BLE Sensor Node • Nordic nRF52DK Developer Kit • SenseAir

    K30 CO2 sensor • 4700µF Capacitor • 9v Boost Converter
  13. LoRa Sensor Node • Pocket Geiger Radiation Sensor • Wemos

    D1 Mini • LoRa Radio BoardA White LED
  14. IoT Platform Software Needs • Hardware-agnostic, scalable architecture • Comprehensive

    analytics and visualization tools • Robust Offline Data Capability
  15. Robust Offline Data Capability • Normalization & storage of data

    • Downsample before forwarding to reduce bandwidth usage • Local Event Processing Engine
  16. Telegraf • 100% Open Source • Plugin-driven architecture • Over

    150 plugins: Inputs, Outputs, Processors, Aggregators • Easy to extend • Majority of development is community driven
  17. InfluxDB • Architected for Time Series Data • High rate

    of ingest • Efficient compression and storage on disk • Time-based functionality built-in • Downsampling
  18. Installing the InfluxData Platform $ curl -sL https://repos.influxdata.com/influxdb.key | sudo

    apt-key add - $ source /etc/lsb-release $ echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list sudo apt-get update $ sudo apt-get install influxdb chronograf telegraf kapacitor
  19. Kapacitor • Data processing engine — stream or batch •

    Downsampling, etc. • Anomaly detection • Alerting
  20. TICKscript • AlertNode • BarrierNode • BatchNode • ChangeDetectNode •

    CombineNode • DefaultNode • DeleteNode • DerivativeNode • EC2AutoscaleNode • EvalNode • FlattenNode • FromNode • GroupByNode • HTTPOutputNode • HTTPPostNode • InfluxDBOutputNode • InfluxQLNode • JoinNode • K8sAutoscaleNode • Kapacitor LoopbackNode • LogNode • NoOpNode • QueryNode • SampleNode • ShiftNode • SideloadNode • StateCountNode • StateDurationNode • StatsNode • StreamNode • SwarmAutoscaleNode • UDF (User Defined Function)Node • UnionNode • WhereNode • WindowNode
  21. Kapacitor Alerting • Alert Types: • Threshold Alert • Deadman

    Alert • Alerts based on Calculated Value • Alert Mechanisms: • TCP/HTTP • Pager Duty • MQTT
  22. Join Our Community! • On the Web: https://community.influxdata.com • On

    GitHub: https://github.com/influxdata • On Slack: https://gophersinvite.herokuapp.com & join #influxdb • On Twitter: @InfluxDB and @noahcrowley