NetApp API 用于获取“df”输出

NetApp API 用于获取“df”输出

我目前正在摆弄一个使用 ONTAPI(性能统计监控之类的东西)的项目。

我想要做的是重现来自“df”和“df -s”的信息。

到目前为止一切顺利,因为 api“volume-list-info”似乎包含了我想要的大部分信息。只缺少一件事 - 我实际使用了多少“快照保留”。

我似乎无法在那个或“快照”计数器中找到它。理想情况下,我能够在不进行每个卷计算的情况下做到这一点,因为我希望做的事情之一是支持轻量级代理客户端,该客户端“仅”获取源 XML 以在服务器上进行处理。

或者有没有办法我可以根据卷列表信息中的大小/已使用/可用来计算这个?

答案1

我一直在努力解决这个问题,感谢优秀的“烤面包机”邮件列表档案) - 我最终的解决方案是利用system-cliAPI 调用。

#!/usr/bin/env perl
use strict;
use warnings;

use XML::Twig;
use LWP;

my $twig = XML::Twig->new( 'pretty_print' => 'indented' );
$twig->set_root(
    XML::Twig::Elt->new(
        'netapp',
        {   version => 1.7,
            vfiler  => "somevfiler",
            xmlns   => "http://www.netapp.com/filer/admin",
        },
    )
);
my $api_req = $twig->root->insert_new_elt('system-cli');
my $args    = $api_req->insert_new_elt('args');
$args->insert_new_elt( 'last_child', 'arg', 'df' );
$args->insert_new_elt( 'last_child', 'arg', '-k' );

$twig->set_doctype('netapp SYSTEM "file:/etc/netapp_filer.dtd"');
$twig->set_xml_version("1.0");
$twig->set_encoding('utf-8');

$twig->print;

exit;

my $user_agent = LWP::UserAgent->new(
    'ssl_opts' => {
        'verify_hostname' => 0,
        'SSL_version'     => 'SSLv3',
    }
);

my $request =
    HTTP::Request->new( 'POST' =>
        'https://myfilername/servlets/netapp.servlets.admin.XMLrequest_filer'
    );
$request->authorization_basic( 'username_here', 'password_here' );
$request->content( $twig->sprint );

my $results = $user_agent->request($request);
if ( not $results->is_success ) {
    print "Error: ", $results->status_line;
    exit;
}

my $results_xml = XML::Twig->new( 'pretty_print' => 'indented_a' );
$results_xml->parse( $results->content );
$results_xml->print;

这可以捕获通过 API 调用的结果df -k。但只有一个缺点 - 您只能获得纯文本“命令输出” blob,然后您必须自己解析它,因此您实际上并没有获得太多好处ssh hostname df -k- 只是一种不同的身份验证和获取方法,但这确实是我所追求的。

还值得注意的是 -没有使用 NetApp SDK。您可能会认为这是一个优势,也可能不认为。我个人觉得它XML::Twig非常LWP好用 - YMMV。

无论如何-其他建议包括:

  • ssh hostname df -k
  • 使用 SNMP 查询
  • 进行两次 API 调用,第一次枚举,第二次查询。

答案2

正如您所发现的,system-cli 可能是获取“df”输出的唯一方法。

因为“用于快照的空间”可能超过快照保留空间,所以我更喜欢采用不同的衡量标准。快照卷信息 API 返回可用大小(在失去制作更多快照的能力之前,您可以在卷中使用多少空间)。

要收集 flexvol 的其他空间统计信息,我会使用 volume-space-get-iter(7m 内的 volume-space-list-info-iter)或 volume-footprint-get-iter(7m 内的 vol-footprint-info)API。

NetApp 可管理性 SDK 下载包括文档;我提到的调用如下,例如:

doc/ontapi/ontapi_1.20/Vserver/snapshot/index.html#snapshot-volume-info doc/ontapi/ontapi_1.20/Vserver/volume/index.html#volume-space-get-iter doc/ontapi/ontapi_1.20/Vserver/volume/index.html#volume-footprint-get-iter

(旧文档可从以下网址下载 http://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Broken-link-for-SDK-API-Doc/mp/97275

相关内容