On Tuesday, February 14, 2017 at 5:31:32 PM UTC-5, Daniel Rich wrote:
> I am trying to collect data from a Cisco switch where some of the data is in 
> IF-MIB::ifTable and some in IF-MIB::ifXTable but both share the same index. 
> Is there a way to relate these tables with the new snmp plugin in the same 
> way that it looks like mapping_table did in the old one?
> 
> 
> Here is my current current configuration:
> 
> 
> 
>   [[inputs.snmp.table]]
>     name = "ifXTable"
>     inherit_tags = [ "hostname" ]
>     oid = "IF-MIB::ifXTable"
>   
>     [[inputs.snmp.table.field]]
>       name = "ifName"
>       oid = "IF-MIB::ifName"
>       is_tag = true
>   
>     [[inputs.snmp.table.field]]
>       name = "ifAlias"
>       oid = "IF-MIB::ifAlias"
>       is_tag = true
>   
>   [[inputs.snmp.table]]
>     name = "ifTable"
>     inherit_tags = [ "hostname" ]
>     oid = "IF-MIB::ifTable"
>   
>     [[inputs.snmp.table.field]]
>       name = "ifDescr"
>       oid = "IF-MIB::ifDescr"
>       is_tag = true
> 
> 
> 
> The problem is that I cannot use the same keys to index into both tables in 
> grafana. If I want to graph the in/out bits on an interface using the ifAlias 
> value, I can do something like:
> 
> 
> SELECT derivative(mean("ifHCInOctets"), 1s) * 8 AS "Out", 
> derivative(mean("ifHCOutOctets"), 1s) * -8 AS "In" FROM "snmp" WHERE 
> "hostname" = 'myswitch.example.com' AND "ifAlias" = 'MyComputer' AND 
> $timeFilter GROUP BY time($interval) fill(null)
> 
> 
> But, if I then want to graph the in/out discards, the following won't work:
> 
> 
> SELECT derivative(mean("ifInDiscards"), 1s) AS "In Discards", 
> derivative(mean("ifOutDiscards"), 1s) * -1 AS "Out Discards" FROM "snmp" 
> WHERE "hostname" = 'myswitch.example.com' AND "ifAlias" = 'MyComputer' AND 
> $timeFilter GROUP BY time($interval) fill(0)
> 
> 
> While the indexes are the same between the tables, the doesn't seem to be any 
> other piece of information that would let me relate them (and I'm not sure 
> how I would use it in grafana even if their was). Here's an example of the 
> snmpwalk for one of the interfaces:
> 
> 
> 
> > snmpwalk -v2c -c xxxxxx myswitch IF-MIB::ifTable | grep 10638
> IF-MIB::ifIndex.10638 = INTEGER: 10638
> IF-MIB::ifDescr.10638 = STRING: GigabitEthernet2/0/38
> IF-MIB::ifType.10638 = INTEGER: ethernetCsmacd(6)
> IF-MIB::ifMtu.10638 = INTEGER: 1500
> IF-MIB::ifSpeed.10638 = Gauge32: 100000000
> IF-MIB::ifPhysAddress.10638 = STRING: 01:23:45:67:89:ab
> IF-MIB::ifAdminStatus.10638 = INTEGER: up(1)
> IF-MIB::ifOperStatus.10638 = INTEGER: up(1)
> IF-MIB::ifLastChange.10638 = Timeticks: (27226) 0:04:32.26
> IF-MIB::ifInOctets.10638 = Counter32: 1162648269
> IF-MIB::ifInUcastPkts.10638 = Counter32: 19443131
> IF-MIB::ifInDiscards.10638 = Counter32: 0
> IF-MIB::ifInErrors.10638 = Counter32: 1
> IF-MIB::ifInUnknownProtos.10638 = Counter32: 0
> IF-MIB::ifOutOctets.10638 = Counter32: 712482063
> IF-MIB::ifOutUcastPkts.10638 = Counter32: 29374244
> IF-MIB::ifOutDiscards.10638 = Counter32: 0
> IF-MIB::ifOutErrors.10638 = Counter32: 0
> 
> 
> > snmpwalk -v2c -c xxxxxx myswitch IF-MIB::ifXTable | grep 10638
> IF-MIB::ifName.10638 = STRING: Gi2/0/38
> IF-MIB::ifInMulticastPkts.10638 = Counter32: 791
> IF-MIB::ifInBroadcastPkts.10638 = Counter32: 809
> IF-MIB::ifOutMulticastPkts.10638 = Counter32: 3189389
> IF-MIB::ifOutBroadcastPkts.10638 = Counter32: 172303
> IF-MIB::ifHCInOctets.10638 = Counter64: 26933585693
> IF-MIB::ifHCInUcastPkts.10638 = Counter64: 19443926
> IF-MIB::ifHCInMulticastPkts.10638 = Counter64: 791
> IF-MIB::ifHCInBroadcastPkts.10638 = Counter64: 809
> IF-MIB::ifHCOutOctets.10638 = Counter64: 13597535403
> IF-MIB::ifHCOutUcastPkts.10638 = Counter64: 29374824
> IF-MIB::ifHCOutMulticastPkts.10638 = Counter64: 3189400
> IF-MIB::ifHCOutBroadcastPkts.10638 = Counter64: 172303
> IF-MIB::ifLinkUpDownTrapEnable.10638 = INTEGER: enabled(1)
> IF-MIB::ifHighSpeed.10638 = Gauge32: 100
> IF-MIB::ifPromiscuousMode.10638 = INTEGER: false(2)
> IF-MIB::ifConnectorPresent.10638 = INTEGER: true(1)
> IF-MIB::ifAlias.10638 = STRING: MyComputer
> IF-MIB::ifCounterDiscontinuityTime.10638 = Timeticks: (0) 0:00:00.00

Yes, you have to just define a single table in the config.

For example:

  [[inputs.snmp.table]]
    name = "ifXTable"
    inherit_tags = [ "hostname" ]
    oid = "IF-MIB::ifXTable"
  
    [[inputs.snmp.table.field]]
      name = "ifName"
      oid = "IF-MIB::ifName"
      is_tag = true
  
    [[inputs.snmp.table.field]]
      name = "ifAlias"
      oid = "IF-MIB::ifAlias"
      is_tag = true

    [[inputs.snmp.table.field]]
      name = "ifDescr"
      oid = "IF-MIB::ifDescr"
      is_tag = true


The downside to this is that on the second table, that you want to join into 
the first one, you have to specify all the fields you want. There is no 
automatic field generation here.
We might be able to introduce some way of doing this, such as passing an array 
to the table `oid` parameter, but I'm not sure how hairy it'd be, and whether 
it would be justified.

-- 
Remember to include the version number!
--- 
You received this message because you are subscribed to the Google Groups 
"InfluxData" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to influxdb+unsubscr...@googlegroups.com.
To post to this group, send email to influxdb@googlegroups.com.
Visit this group at https://groups.google.com/group/influxdb.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/influxdb/b60790de-89d6-46ba-8f94-e1da53da29b6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to