Posted on January 13, 2020 3:25 pm
 |  Asked by Silvan Steiner
 |  602 views
RESOLVED
0
0
Print Friendly, PDF & Email

Hi

I’m trying to get used to get CLI values to influxdb.
I’ve setuped telegraf on EOS, it works perfect for snmp.

Arista have interesting trending data which are not available via snmp,
like:
* show storm-control
* show interface transceiver csv

I’ve written python scripts, which uses FastCli -T 5 -p2 -c ""
The scripts works perfect if i execute them in bash.
If i’m running it as telegraf.exec, the system user get’s the error

“Cannot connect to ConfigAgent”.

Im using: 4.21.8M on Arista DCS-7050SX3-48YC8-F

How do you gather such Cli-only data for your trending platforms?
Did you have faced the same problem with your implementation, to pass the
Config Agent?

Thanks for any hints or tips :)

Attachments:
0
Posted by Tamas Plugor
Answered on January 13, 2020 4:53 pm

Hi Silvan,

How are you running telegraf.exec? I assume you are running it either as a daemon or from bash, can you provide an example? Did you compile it with GOOS=linux and GOARCH=386 ? In what namespace is telegraf trying to communicate with ConfigAgent?

We have our streaming telemetry agent called TerminAttr which can stream the full state of our switches to CloudVision Portal (CVP) via gRPC and are presented in nice pre-built graphs and tables on the UI. You can check the overview here: https://www.arista.com/en/products/eos/eos-cloudvision

TerminAttr can also be used to stream to 3rd party systems like InfluxDB, Prometheus, ELK, etc. using an openconfig connector that can talk to TerminAttr (subscribe to internal states on the switches) and serve those data in a schema that those 3rd party systems understand. We have a few proof-of-concept adapters published on our github page: https://github.com/aristanetworks/goarista/tree/master/cmd

The flow would be something like the following:
-TerminAttr gets all states from all agents on the switch
-the oc* connector subscribes to specific paths by talking to TerminAttr
-the oc* connector sends data to the Open-Source Telemetry system

For InfluxDB you could use octsdb along with TerminAttr: https://github.com/aristanetworks/goarista/tree/master/cmd/octsdb

For more info about subscription paths you might find this article useful: https://eos.arista.com/understanding-subscription-paths-for-open-source-telemetry-streaming/

storm-control data can be found in /Sysdb/bridging/stormcontrol/status/slice//intfStatus/EthernetX

for example on a 7160 this would be the path for Ethernet24

[admin@xpswitch ~]$ curl localhost:6060/rest/Sysdb/bridging/stormcontrol/status/slice/xp/intfStatus/Ethernet24
{
"allDrop": 0,
"allLevel": {
"level": 9000,
"type": "percentage"
},
"allRate": 22500,
"broadcastDrop": 0,
"broadcastLevel": {
"level": 10000,
"type": "percentage"
},
"broadcastRate": 25000,
"multicastDrop": 0,
"multicastLevel": {
"level": 10000,
"type": "percentage"
},
"multicastRate": 25000,
"name": "Ethernet24",
"uucastDrop": 0,
"uucastLevel": {
"level": 10000,
"type": "percentage"
},
"uucastRate": 25000
}

Hope this helps!
Tamas

0
Posted by Silvan Steiner
Answered on January 17, 2020 1:15 pm

Hi Tamas,

0o, Great to have such a quit and rich answer from you!

i've started as a daemon with systemctl, with the Linux Binaries (32-bit) & systemd script from influxdata.com/download.

it's pre compiled but linux 32-bit, it's currently running in namespace ns-mgmt

it's quite a hack but works for snmp and was straight forward to implement.

Your Solution with TerminAttr looks very rich!

TerminAttr works, next step is oc config.

thank you for all your links and your time!

silvan

Post your Answer

You must be logged in to post an answer.