[solved] SNMP data query with "fake" index
Moderators: Developers, Moderators
[solved] SNMP data query with "fake" index
'lo all,
I'm trying to create a "fake" index, based on OID last digit ...
snmpwalk -v 2c -c public myhost:1161 .1.2.3.4.1.12.700
.iso.2.3.4.1.12.700.1 = STRING: "blah1"
.iso.2.3.4.1.12.700.2 = STRING: "blah2"
.iso.2.3.4.1.12.700.3 = STRING: "blah3"
.iso.2.3.4.1.12.700.4 = STRING: "blah4"
.iso.2.3.4.1.12.700.5 = STRING: "blah5"
.iso.2.3.4.1.12.700.6 = STRING: "blah6"
.iso.2.3.4.1.12.700.7 = STRING: "blah7"
.iso.2.3.4.1.12.700.8 = STRING: "blah8"
.iso.2.3.4.1.12.700.9 = STRING: "blah9"
.iso.2.3.4.1.12.700.10 = STRING: "blah10"
.iso.2.3.4.1.12.700.11 = STRING: "blah11"
End of MIB
I've created snmp XML as per documentation (I think)
/www/resource/snmp_queries/jboss_webservice.xml
<jboss_webservice>
<name>Get jBoss WS metrics</name>
<description>Query jBossWS mbean for WebSerice statistics</description>
<oid_index>.1.2.3.4.1.12.700</oid_index>
<oid_index_parse>OID/REGEXP:.*\.([0-9]{1,2})$</oid_index_parse>
<index_order>objectName</index_order>
<index_order_type>numeric</index_order_type>
<index_title_format>|chosen_order_field|</index_title_format>
<fields>
<objectName>
<name>objectName</name>
<method>walk</method>
<source>index</source>
<direction>input</direction>
<oid>.1.2.3.4.1.12.700</oid>
</objectName>
...
when adding this data query to device I ran the manual snmpwalk on, it shows :
Data Query Debug Information
+ Running data query [16].
+ Found type = '3' [snmp query].
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ XML file parsed ok.
+ Executing SNMP walk for list of indexes @ '.1.2.3.4.1.12.700'
+ No SNMP data returned
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
I checked the REGEXP in test php script, it does return last digit of OID, which is exactly what I need for index, but in CACTI it shows no results. What am I missing ?
grtz,
Gert
I'm trying to create a "fake" index, based on OID last digit ...
snmpwalk -v 2c -c public myhost:1161 .1.2.3.4.1.12.700
.iso.2.3.4.1.12.700.1 = STRING: "blah1"
.iso.2.3.4.1.12.700.2 = STRING: "blah2"
.iso.2.3.4.1.12.700.3 = STRING: "blah3"
.iso.2.3.4.1.12.700.4 = STRING: "blah4"
.iso.2.3.4.1.12.700.5 = STRING: "blah5"
.iso.2.3.4.1.12.700.6 = STRING: "blah6"
.iso.2.3.4.1.12.700.7 = STRING: "blah7"
.iso.2.3.4.1.12.700.8 = STRING: "blah8"
.iso.2.3.4.1.12.700.9 = STRING: "blah9"
.iso.2.3.4.1.12.700.10 = STRING: "blah10"
.iso.2.3.4.1.12.700.11 = STRING: "blah11"
End of MIB
I've created snmp XML as per documentation (I think)
/www/resource/snmp_queries/jboss_webservice.xml
<jboss_webservice>
<name>Get jBoss WS metrics</name>
<description>Query jBossWS mbean for WebSerice statistics</description>
<oid_index>.1.2.3.4.1.12.700</oid_index>
<oid_index_parse>OID/REGEXP:.*\.([0-9]{1,2})$</oid_index_parse>
<index_order>objectName</index_order>
<index_order_type>numeric</index_order_type>
<index_title_format>|chosen_order_field|</index_title_format>
<fields>
<objectName>
<name>objectName</name>
<method>walk</method>
<source>index</source>
<direction>input</direction>
<oid>.1.2.3.4.1.12.700</oid>
</objectName>
...
when adding this data query to device I ran the manual snmpwalk on, it shows :
Data Query Debug Information
+ Running data query [16].
+ Found type = '3' [snmp query].
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ XML file parsed ok.
+ Executing SNMP walk for list of indexes @ '.1.2.3.4.1.12.700'
+ No SNMP data returned
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
I checked the REGEXP in test php script, it does return last digit of OID, which is exactly what I need for index, but in CACTI it shows no results. What am I missing ?
grtz,
Gert
- gandalf
- Developer
- Posts: 22383
- Joined: Thu Dec 02, 2004 2:46 am
- Location: Muenster, Germany
- Contact:
Please see http://docs.cacti.net/manual:087:3a_adv ... alkthrough for a walkthrough.
My first bet is to remove the regexp, as it is not needed
Reinhard
My first bet is to remove the regexp, as it is not needed
Reinhard
After trying gandalf's advice, then try changing the following in the XML:
<objectName>
<name>objectName</name>
<source>index</source>
<direction>input</direction>
</objectName>
<objectName>
<name>objectName</name>
<source>index</source>
<direction>input</direction>
</objectName>
| Scripts: Monitor processes | RFC1213 MIB | DOCSIS Stats | Dell PowerEdge | Speedfan | APC UPS | DOCSIS CMTS | 3ware | Motorola Canopy |
| Guides: Windows Install | [HOWTO] Debug Windows NTFS permission problems |
| Tools: Windows All-in-one Installer |
Hya,
I have tried without REGEXP but same result
I followed instructions from http://docs.cacti.net/howto:data_query_ ... _not_exist
I had also read the "data query walk-through" before because this is not first time I've created custom snmp queries ... have searched the forum extensively, leaving me more confused than before.
Doens't the "OID/REGEXP oid_index_parse" attach the digit as index value to each base OID when snmpwalking ? ( 700.1 701.1 702.1 ... 700.2 701.2 702.2 ... )
snmpwalk -v 2c -c public myhost:1161 .1.2.3.4.1.12.700
.iso.2.3.4.1.12.700.1 = STRING: "blah blah"
.iso.2.3.4.1.12.700.2 = STRING: "bleh bleh"
...
snmpwalk -v 2c -c public myhost:1161 .1.2.3.4.1.12.701
iso.2.3.4.1.12.701.1 = Gauge32: 5751
iso.2.3.4.1.12.701.2 = Gauge32: 6542
...
snmpwalk -v 2c -c public myhost:1161 .1.2.3.4.1.12.703
iso.2.3.4.1.12.703.1 = INTEGER: 5
iso.2.3.4.1.12.703.2 = INTEGER: 12
iso.2.3.4.1.12.703.3 = INTEGER: 1
iso.2.3.4.1.12.703.4 = INTEGER: 0
iso.2.3.4.1.12.703.5 = INTEGER: 0
iso.2.3.4.1.12.703.6 = INTEGER: 9
iso.2.3.4.1.12.703.7 = INTEGER: 0
iso.2.3.4.1.12.703.8 = INTEGER: 50
iso.2.3.4.1.12.703.9 = INTEGER: 0
iso.2.3.4.1.12.703.10 = INTEGER: 0
iso.2.3.4.1.12.703.11 = INTEGER: 1
End of MIB
Here's the current snmp_queries XML ...
thnx for your time
grtz,
gert
I have tried without REGEXP but same result
I followed instructions from http://docs.cacti.net/howto:data_query_ ... _not_exist
I had also read the "data query walk-through" before because this is not first time I've created custom snmp queries ... have searched the forum extensively, leaving me more confused than before.
Doens't the "OID/REGEXP oid_index_parse" attach the digit as index value to each base OID when snmpwalking ? ( 700.1 701.1 702.1 ... 700.2 701.2 702.2 ... )
snmpwalk -v 2c -c public myhost:1161 .1.2.3.4.1.12.700
.iso.2.3.4.1.12.700.1 = STRING: "blah blah"
.iso.2.3.4.1.12.700.2 = STRING: "bleh bleh"
...
snmpwalk -v 2c -c public myhost:1161 .1.2.3.4.1.12.701
iso.2.3.4.1.12.701.1 = Gauge32: 5751
iso.2.3.4.1.12.701.2 = Gauge32: 6542
...
snmpwalk -v 2c -c public myhost:1161 .1.2.3.4.1.12.703
iso.2.3.4.1.12.703.1 = INTEGER: 5
iso.2.3.4.1.12.703.2 = INTEGER: 12
iso.2.3.4.1.12.703.3 = INTEGER: 1
iso.2.3.4.1.12.703.4 = INTEGER: 0
iso.2.3.4.1.12.703.5 = INTEGER: 0
iso.2.3.4.1.12.703.6 = INTEGER: 9
iso.2.3.4.1.12.703.7 = INTEGER: 0
iso.2.3.4.1.12.703.8 = INTEGER: 50
iso.2.3.4.1.12.703.9 = INTEGER: 0
iso.2.3.4.1.12.703.10 = INTEGER: 0
iso.2.3.4.1.12.703.11 = INTEGER: 1
End of MIB
Here's the current snmp_queries XML ...
Code: Select all
<interface>
<name>Get WS metrics</name>
<description>Query WS statistics</description>
<oid_index>.1.2.3.4.1.12.700</oid_index>
<oid_index_parse>OID/REGEXP:.*\.([0-9]*)$</oid_index_parse>
<index_order>wsIndex</index_order>
<index_order_type>numeric</index_order_type>
<fields>
<wsIndex>
<name>wsIndex</name>
<source>index</source>
<direction>input</direction>
</wsIndex>
<minTime>
<name>WS min. time</name>
<method>walk</method>
<source>value</source>
<direction>output</direction>
<oid>.1.2.3.4.1.12.701</oid>
</minTime>
<processingTime>
<name>WS processing time</name>
<method>walk</method>
<source>value</source>
<direction>output</direction>
<oid>.1.2.3.4.1.12.702</oid>
</processingTime>
<requestCount>
<name>WS request count</name>
<method>walk</method>
<source>value</source>
<direction>output</direction>
<oid>.1.2.3.4.1.12.703</oid>
</requestCount>
<maxTime>
<name>WS max. time</name>
<method>walk</method>
<source>value</source>
<direction>output</direction>
<oid>.1.2.3.4.1.12.704</oid>
</maxTime>
<errorCount>
<name>WS error count</name>
<method>walk</method>
<source>value</source>
<direction>output</direction>
<oid>.1.2.3.4.1.12.705</oid>
</errorCount>
</fields>
</interface>
grtz,
gert
Once again, please post the verbose query of the associated data query you added for this device.
| Scripts: Monitor processes | RFC1213 MIB | DOCSIS Stats | Dell PowerEdge | Speedfan | APC UPS | DOCSIS CMTS | 3ware | Motorola Canopy |
| Guides: Windows Install | [HOWTO] Debug Windows NTFS permission problems |
| Tools: Windows All-in-one Installer |
'lo,
I don't know what other debug I can give apart from the one in my original post, it's still the same ...
Data Query Debug Information
+ Running data query [16].
+ Found type = '3' [snmp query].
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ XML file parsed ok.
+ Executing SNMP walk for list of indexes @ '.1.2.3.4.1.12.700'
+ No SNMP data returned
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
it's really puzzling, i've also tried recreating everything from scratch, data query, data template, datasources, graph template ...
grtz,
gert
I don't know what other debug I can give apart from the one in my original post, it's still the same ...
Data Query Debug Information
+ Running data query [16].
+ Found type = '3' [snmp query].
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ XML file parsed ok.
+ Executing SNMP walk for list of indexes @ '.1.2.3.4.1.12.700'
+ No SNMP data returned
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
+ Found data query XML file at '/www/resource/snmp_queries/jboss_webservices.xml'
it's really puzzling, i've also tried recreating everything from scratch, data query, data template, datasources, graph template ...
grtz,
gert
Oops missed your first post. Shouldn't be posting at 1am...
Anyways, there isn't any reason why I can see why cacti can't collect the information while a manual snmpwalk can. You're sure you've set up that device in cacti to use the port 1161 for snmp?
Maybe that STRING value off of 1.2.3.4.1.12.700 is throwing cacti off for it's parsing. Try switching the oid_index_parse to .1.2.3.4.1.12.701 or something.
Anyways, there isn't any reason why I can see why cacti can't collect the information while a manual snmpwalk can. You're sure you've set up that device in cacti to use the port 1161 for snmp?
Maybe that STRING value off of 1.2.3.4.1.12.700 is throwing cacti off for it's parsing. Try switching the oid_index_parse to .1.2.3.4.1.12.701 or something.
| Scripts: Monitor processes | RFC1213 MIB | DOCSIS Stats | Dell PowerEdge | Speedfan | APC UPS | DOCSIS CMTS | 3ware | Motorola Canopy |
| Guides: Windows Install | [HOWTO] Debug Windows NTFS permission problems |
| Tools: Windows All-in-one Installer |
hehe no worries about post again
i also tried 701 .. same result ...
I've upped debug logging on device I'm trying to monitor. Now I see error message about "unknown PDU" when doing query via cacti ... does cacti use snmpwalk or snmpbulkwalk when checking indices ? I think might be something with bulk that work different from regular walk ...
grtz,
gert
i also tried 701 .. same result ...
I've upped debug logging on device I'm trying to monitor. Now I see error message about "unknown PDU" when doing query via cacti ... does cacti use snmpwalk or snmpbulkwalk when checking indices ? I think might be something with bulk that work different from regular walk ...
grtz,
gert
Well, it really depends on the snmp version required, configured paths for the net-snmp stuff in cacti, OS, and the poller type. A network capture like Wireshark should also help reveal what cacti is doing.laerg wrote:does cacti use snmpwalk or snmpbulkwalk when checking indices ? I think might be something with bulk that work different from regular walk ...
Testing with the net-snmp suite of tools, does the device not respond to the various different types of snmp* commands?
| Scripts: Monitor processes | RFC1213 MIB | DOCSIS Stats | Dell PowerEdge | Speedfan | APC UPS | DOCSIS CMTS | 3ware | Motorola Canopy |
| Guides: Windows Install | [HOWTO] Debug Windows NTFS permission problems |
| Tools: Windows All-in-one Installer |
I'm back from away ...
If I do manual "snmpbulkwalk", the snmp daemon of the queried device responds with " Unsupported PDU command......... 165" ... same error I get when doing "Data Query verbose / debug"
So it must be using snmpbulkwalk than for indices query I guess ? I've also tried running cacti with PHP-snmp enabled, but same result ...
I also tried disabling bulkwalk by setting "The Maximum SNMP OID's Per SNMP Get Request" to "0" ... but still snmpbulkwalk seemed to be used because same PDU error keeps showing up.
any other way to completely disable use of snmpbulkwalk ... I'd like to know befor I start delving in code.
grtz,
gert
If I do manual "snmpbulkwalk", the snmp daemon of the queried device responds with " Unsupported PDU command......... 165" ... same error I get when doing "Data Query verbose / debug"
So it must be using snmpbulkwalk than for indices query I guess ? I've also tried running cacti with PHP-snmp enabled, but same result ...
I also tried disabling bulkwalk by setting "The Maximum SNMP OID's Per SNMP Get Request" to "0" ... but still snmpbulkwalk seemed to be used because same PDU error keeps showing up.
any other way to completely disable use of snmpbulkwalk ... I'd like to know befor I start delving in code.
grtz,
gert
Sounding like itlaerg wrote:So it must be using snmpbulkwalk than for indices query I guess ?
That only works with the Spine poller.laerg wrote:I also tried disabling bulkwalk by setting "The Maximum SNMP OID's Per SNMP Get Request" to "0" ... but still snmpbulkwalk seemed to be used because same PDU error keeps showing up.
Developers will have a better idea since they're familiar with the code. You've removed the net-snmp snmpbulkwalk path from cacti's settings? Looking over the php snmp functions, it doesn't appear it has a snmpbulkwalk function...laerg wrote:any other way to completely disable use of snmpbulkwalk ... I'd like to know befor I start delving in code.
Maybe inquire from the vendor why their device doesn't work with snmpbulkwalk?
| Scripts: Monitor processes | RFC1213 MIB | DOCSIS Stats | Dell PowerEdge | Speedfan | APC UPS | DOCSIS CMTS | 3ware | Motorola Canopy |
| Guides: Windows Install | [HOWTO] Debug Windows NTFS permission problems |
| Tools: Windows All-in-one Installer |
Hy,
I managed to work around any usage of snmpbulkwalks; first had to recompile PHP without SNMP support, thus disabling built-in bulk walks
And than had to point to false "snmpbulkwalk" binary in cacti settings, even though I use "SPINE" poller and "max OIDs ..." was set to "0" ...
now the indeces get found OK (possibly slower yes) and I can move on with my life
So I guess that when PHP has SNMP built-in, bulk will always be tried when checking indices ... no way to disable it. And even without SNMP if the path points to working version of "snmpbulkwalk" it uses it, at least with my install of "cacti-0.8.7e / spine-0.8.7e"
Now I will focus on jBoss snmp implementation and why certain PDU's of bulkwalks are not implemented...
thnx for all yer time.
grtz,
gert
I managed to work around any usage of snmpbulkwalks; first had to recompile PHP without SNMP support, thus disabling built-in bulk walks
And than had to point to false "snmpbulkwalk" binary in cacti settings, even though I use "SPINE" poller and "max OIDs ..." was set to "0" ...
now the indeces get found OK (possibly slower yes) and I can move on with my life
So I guess that when PHP has SNMP built-in, bulk will always be tried when checking indices ... no way to disable it. And even without SNMP if the path points to working version of "snmpbulkwalk" it uses it, at least with my install of "cacti-0.8.7e / spine-0.8.7e"
Now I will focus on jBoss snmp implementation and why certain PDU's of bulkwalks are not implemented...
thnx for all yer time.
grtz,
gert
Who is online
Users browsing this forum: No registered users and 6 guests