私は現在、ONTAPI(パフォーマンス統計監視のようなもの)を使用してプロジェクトをいじっています。
私がやりたいのは、「df」と「df-s」からの情報を再現することです。
APIの「volume-list-info」には必要な情報のほとんどが含まれているように見えるため、これまでのところ順調に進んでいます。足りないものが1つだけあります。それは、実際に使用している「スナップリザーブ」の量です。
それも「スナップショット」カウンターでも見つからないようです。ボリュームごとの計算を行わなくても、理想的にはこれを実行できます。これは、サーバーで処理するためにソースXMLを「ただ」フェッチする軽量プロキシクライアントをサポートすることを望んでいるためです。
または、volume-list-infoのサイズ/使用済み/利用可能からこれを計算する方法はありますか?
この問題を解決し、 優れた「トースター」メーリングリスト ( アーカイブ )のおかげで-私の最終的な解決策は、system-cli
API呼び出しを利用することでした。
#!/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
の結果をキャプチャするために機能します。ただし、欠点が1つだけあります。プレーンテキストの「コマンド出力」blobしか取得できず、それをとにかく解析する必要があるため、ssh hostname df -k
をあまり活用できません。認証とフェッチの方法が異なるだけですが、実際にはそれが問題です。私は後だった。
また、これはNetApp SDKを使用しません。あなたはそれが利点かどうかを考えるかもしれません。個人的には、XML::Twig
とLWP
が非常に適していると思います--YMMV。
とにかく-他の提案は次のとおりです。
ssh hostname df -k
ご存知のように、system-cliが「df」出力を取得する唯一の方法である可能性があります。
「スナップショットに使用されるスペース」はスナップ予約を超える可能性があるため、別の方法を選択します。 snapshot-volume-info APIは、使用可能なサイズを返します(スナップショットを作成する機能が失われる前に、ボリュームで使用できるスペースの量)。
flexvolの他のスペース統計を収集するには、volume-space-get-iter(7mのvolume-space-list-info-iter)またはvolume-footprint-get-iter(7mのvol-footprint-info)APIを使用します。
netApp Manageability 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 )