SNMP collection from multiple table

I am dealing with a cloud MIB which responds with all network, devices, and its interfaces with a single poll. I cannot target a specific list of devices. So, these three entities are individual tables. One network can have multiple devices and a device will have a number of interfaces.

Network table
Devices table
Interface table

How to co-relate data from each table? Tried below config but it seems telegraf is not recognizing a tag of inputs.snmp.table.field to be used as a parent/inherit_tags for a different table. Please suggest.

[[inputs.snmp.field]]
name = "orgName"
oid = "MERAKI-CLOUD-CONTROLLER-MIB::organizationName.0"
is_tag = true
[[inputs.snmp.table]]
      #oid = "MERAKI-CLOUD-CONTROLLER-MIB::networkTable"
     name = "meraki_cloud"
      inherit_tags = ["orgName"]
[[inputs.snmp.table.field]]
        oid = "MERAKI-CLOUD-CONTROLLER-MIB::networkName"
        name = "networkName"
        is_tag = true
 [[inputs.snmp.table.field]]
        oid = "MERAKI-CLOUD-CONTROLLER-MIB::networkId"
        name = "networkId"
[[inputs.snmp.table]]
     #oid = "MERAKI-CLOUD-CONTROLLER-MIB::devTable"
      name = "meraki_cloud"
      inherit_tags = ["orgName","networkName"]
 [[inputs.snmp.table.field]]
        oid = "MERAKI-CLOUD-CONTROLLER-MIB::devName"
        name = "deviceName"
        is_tag = true
[[inputs.snmp.table.field]]
        oid = "MERAKI-CLOUD-CONTROLLER-MIB::devStatus"
        name = "deviceStatus"
[[inputs.snmp.table.field]]
        oid = "MERAKI-CLOUD-CONTROLLER-MIB::devPublicIp"
        name = "devicePublicIp"

Following up to see if there are any suggestions to deal with the situation?

You gave some more context on a thread on slack (https://influxcommunity.slack.com/archives/CH99HUH8V/p1603804174315400?thread_ts=1603740076.313700&cid=CH99HUH8V)

M0rdecay’s slack response was correct when he said that you can’t inherit a tag from another table, so devTable can’t inherit from networkTable. Telegraf doesn’t know the relationship between the two tables so it has no way to look up information in one based on information in the other. Another way to say this is that there’s no table join functionality like you find in a database query language like SQL.

In your case I’m not sure you need to correlate tables (or “look up” or “join” which are different terms for the same thing). Usually device manufacturers design the values and tables that their devices provide over SNMP so that you can get the information you need without having to correlate multiple tables. I’d suggest looking more closely at the MIB. For example, the devTable already includes the network name, just under a different name- devNetworkName. You don’t need to join devTable and networkTable in order to know which network a device is on.

It looks like telegraf is working as designed for you. If your device doesn’t provide the information you need in the format you need it, you should consider contacting the device manufacturer for support. You may not the only user of the device running into the problem.

1 Like

@reimda, thanks for the response. This clarifies my questions, I will try to co-relate tables using data point as you referred, I hope, I can build these relations using InfluxQL for building some meaningful dashboards.