Software Development Kit (SDK) and API Discussions
Software Development Kit (SDK) and API Discussions
Hi,
We use collectd with netapp plugin (using netapp-manageability-sdk) to query our filers about performance data. This worked fine until we upgraded to the latest ONTAP version 8.1.3P2 (in 7-Mode). Since the upgrade we get this error:
status="failed" errno="13001" reason="Not enough memory to get instances for wafl.Use perf-object-get-instances-iter-* calls and/or ask for specific counters to limit the amount of data retrieved"
I've tried to query the API directly via HTTPS calls (without collectd):
wget --no-proxy --post-data '<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE netapp SYSTEM "file:/etc/netapp_filer.dtd"><netapp version="1.1" xmlns="http://www.netapp.com/filer/admin"><perf-object-get-instances><objectname>wafl</objectname><counters><counter>name_cache_hit</counter></counters></perf-object-get-instances></netapp>' http://user:pass@filer/servlets/netapp.servlets.admin.XMLrequest_filer
Which results in:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE netapp SYSTEM '/na_admin/netapp_filer.dtd'>
<netapp version='1.1' xmlns='http://www.netapp.com/filer/admin'>
<results status="failed" errno="13001" reason="Not enough memory to get instances for wafl.Use perf-object-get-instances-iter-* calls and/or ask for specific counters to limit the amount of data retrieved"/></netapp>
Funny thing is, if we query <perf-object-get-instances-iter-start><objectname>wafl</objectname><counters><counter>name_cache_miss</counter></counters></perf-object-get-instance-iter-start> the output is the same, use -iter-* calls! But we used an -iter-* call!
If we query for the processors and not wafl, everything works fine:
wget --no-proxy --post-data '<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE netapp SYSTEM "file:/etc/netapp_filer.dtd"><netapp version="1.1" xmlns="http://www.netapp.com/filer/admin"><perf-object-instance-list-info><objectname>processor</objectname></perf-object-instance-list-info></netapp>' http://user:pass@filer/servlets/netapp.servlets.admin.XMLrequest_filer
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE netapp SYSTEM '/na_admin/netapp_filer.dtd'>
<netapp version='1.1' xmlns='http://www.netapp.com/filer/admin'>
<results status="passed"><instances><instance-info><name>processor0</name></instance-info><instance-info><name>processor1</name></instance-info><instance-info><name>processor2</name></instance-info><instance-info><name>processor3</name></instance-info></instances></results></netapp>
Even when querying the stats from one processor, which results in about 4k of values, works fine:
wget --no-proxy --post-data '<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE netapp SYSTEM "file:/etc/netapp_filer.dtd"><netapp version="1.1" xmlns="http://www.netapp.com/filer/admin"><perf-object-get-instances><objectname>processor</objectname></perf-object-get-instances></netapp>' http://user:pass@filer/servlets/netapp.servlets.admin.XMLrequest_filer
Anyone encountered these problems? And/or knows a solution how to get the data from the filer? For us it looks like an error in the API?
Any help would be appreciated.
Best regards,
Christoph
Solved! See The Solution
Hi Christoph,
Hmm, it does look like that API is behaving strangely in 8.1.3P2. I did get the call working by adding an instance parameter of "wafl" to the call. Try the following and see if it works for you.
<?xml version="1.0" encoding="UTF-8"?>
<netapp xmlns="http://www.netapp.com/filer/admin" version="1.1">
<perf-object-get-instances>
<objectname>wafl</objectname>
<counters>
<counter>name_cache_hit</counter>
</counters>
<instances>
<instance>wafl</instance>
</instances>
</perf-object-get-instances>
</netapp>
-Ben
Hi Christoph,
Hmm, it does look like that API is behaving strangely in 8.1.3P2. I did get the call working by adding an instance parameter of "wafl" to the call. Try the following and see if it works for you.
<?xml version="1.0" encoding="UTF-8"?>
<netapp xmlns="http://www.netapp.com/filer/admin" version="1.1">
<perf-object-get-instances>
<objectname>wafl</objectname>
<counters>
<counter>name_cache_hit</counter>
</counters>
<instances>
<instance>wafl</instance>
</instances>
</perf-object-get-instances>
</netapp>
-Ben
Hi Ben,
Yes, you're right! I've discovered the same thing yesterday evening. With the <instances><instance>wafl</instance></instances> parameter everything works fine! The error could be better ... Cause, if you don't give the <objectname>wafl</objectname> the error is more specific: <result errno='13006' resason='Missint input: objectname' status='failed'/> Would be great if this is for missing instance as well!
Nevertheless, thanks for you post!
Best regards,
Chris...