SaltStack: Enabling legacy devices to generate Telemetry

Nitin Kumar (~vnitinv)


Description:

Now a days many networking vendor (Juniper, Cisco, Arista) newer devices supports Telemetry interfaces which provides data based on sensors defined on the device, that can push telemetry data to tools like fluentd, telegraf, Kafka. These data then is used to define Rules for Machine learning.

However with legacy devices there are no telemetry sensors and even for newer devices, areas of interest as needed for troubleshooting are yet to be defined as sensors or are under development.

This is where Salt can be very handy.

SaltStack architecture:

                                                  +-----+
                                                  |-----|
                                                  |     |
                                                ->|     |
                                /\            -/  +-----+
                               /--\        --/
     +-----+                  -    -    --/       +-----+
     |     |                 +-----+  -/          |-----|
  +--|--+  |<--------------->|     |-/------------|     |
  |  |  |  |                 +-----+-\            |     |
  |  |  |  |                          -\          +-----+
  |  +-----+                  0MQ       --\
  |     |                                  --\
  +-----+                                     -\  +-----+
                                                ->|-----|
  SaltStack MASTER(S)                             |     |
                                                  |     |
                                                  +-----+
                                                 MINIONS (clients)
                                              Connected to Devices

Some of the salient feature of SaltStack which enables us to build such solutions

  • Schedulers: Schedule frequency for data collection (so that, data is time series)
  • Returners: To store data to DB and bus, for ex InfluxDB, Casandra, Kafka
  • Modules/States: To call Inbuilt/Custom APIs
  • Orchestrate: Initial setup to environment. Like facts/grains setting.
  • Reactor: React on event, which helps in loop back actions
  • Engine: Ever listening system on given port/IO and process incoming data.

Goal:

  • SaltStack can help us to build many solution around your company products.
  • It can be also used as enabler or plugin to other software stacks.

Say:

               +------------------------+
               |Dashboard/applications  |
               |                        |
               +------------^-----------+
                            |
                            |                 Middleware
+---------------------------+-------------------------------+
|                                                           |
| Messaging bus                                    Storage   <----------+
| (ex Kafka)               engine              (ex influxdb)|          |
|                                                           |          |
+-------------------------------^---------------------------+          |
                                |                              +-------+-------+
       +------------------------|----------------------------->|               |
       |                        |    |------------------------>|  SaltStack    |
       |        |--------------><--------------------|    +--->|               |
       |        |               ^    |               |    |    +-------+-------+
       |        |               |    |               |    |
       v        |               |    v               |    v
 +-----+--------++          +---+----+-----+       +-+----+--------+
 |               |          |              |       |               |
 |               +          |              +       |               +
 |               |          |              |       |               |
 +---------------+          +--------------+       +---------------+
                           device(s)

Content URLs:

https://www.youtube.com/watch?v=xw4l68jUu3Q

https://github.com/Juniper/py-junos-eznc

https://github.com/Juniper/salt

Speaker Info:

https://www.linkedin.com/in/nitinnitp/

https://github.com/vnitinv

Speaker Links:

My Open Source Contributions:

https://github.com/Juniper/py-junos-eznc

https://github.com/Juniper/salt

https://github.com/Juniper/ansible-junos-stdlib

https://github.com/ncclient

https://github.com/jeffkaufman/icdiff

Id: 1209
Section: Networking and Security
Type: Talks
Target Audience: Intermediate
Last Updated: