Subscribe
Accepted Solution

Reading wafl perf-object-get-instances via API results in errno="13001"

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

Re: Reading wafl perf-object-get-instances via API results in errno="13001"

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

Re: Reading wafl perf-object-get-instances via API results in errno="13001"

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...