API da NetApp para buscar a saída 'df'

2

Atualmente, estou mexendo em um projeto usando o ONTAPI (tipo de coisa de monitoramento de estatísticas de perf.).

O que eu quero fazer é reproduzir as informações de 'df' e 'df -s'.

Está indo bem até agora, porque a api 'volume-list-info' parece ter a maioria das informações que eu quero. Há apenas uma coisa faltando - quanto da 'reserva de snap' que estou realmente usando.

Eu não consigo encontrar nem isso, nem os contadores de "instantâneos". Eu seria idealmente capaz de fazer isso sem ter que fazer um cálculo por volume, porque uma das coisas que eu espero fazer é suportar um cliente proxy leve que 'apenas' busca XML de origem para processamento em um servidor.

Ou existe uma maneira de calcular isso a partir do tamanho / usado / disponível no volume-list-info?

    
por Sobrique 03.07.2015 / 16:38

2 respostas

2

Tendo eliminado este problema, e com agradecimentos a a excelente lista de discussão "torradeiras" (< href="http://network-appliance-toasters.10978.n7.nabble.com/API-calls-to-replicate-a-df-tt26570.html#none"> Arquivo - meu eventual A solução era usar a chamada da API system-cli .

#!/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;

Isso funciona para capturar os resultados de um df -k por meio de uma chamada de API. Mas há apenas uma desvantagem: você só obtém um blob de "comando output" de texto simples, que você precisa analisar de qualquer maneira, para que você não ganhe muito mais do que ssh hostname df -k - apenas um método diferente de autenticação e busca, mas realmente o que eu estava depois.

Também digno de nota - isso não usa o NetApp SDK. Você pode considerar isso uma vantagem ou não. Pessoalmente acho XML::Twig e LWP muito bom trabalhar com - YMMV.

De qualquer forma - outras sugestões incluem:

  • ssh hostname df -k
  • use o SNMP para consultá-lo
  • para uma chamada de API de dois passos, primeiro para enumerar, segundo para consulta.
por 03.07.2015 / 16:42
1

como você descobriu, system-cli pode ser a única maneira de obter saída 'df'.

porque "o espaço usado para instantâneos" pode exceder a reserva de snap, prefiro uma medida diferente. a API snapshot-volume-info retorna o tamanho disponível (quanto mais espaço você pode usar no volume antes de perder a capacidade de criar mais instantâneos).

para coletar outras estatísticas de espaço para um flexvol Eu usaria volume-espaço-get-iter (volume-espaço-lista-info-iter em 7m) ou volume-footprint-get-iter (vol-footprint-info em 7m) APIs.

o download do NetApp Manageability SDK inclui documentação; as chamadas que mencionei estão abaixo, por exemplo:

doc / ontapi / ontapi_1.20 / Vservidor / instantâneo / index.html # snapshot-volume-info doc / ontapi / ontapi_1.20 / Vserver / volume / index.html # volume-espaço-get-iter doc / ontapi / ontapi_1.20 / Vserver / volume / index.html # volume-footprint-get-iter

(um download de documento mais antigo está disponível em link )

    
por 04.07.2015 / 03:05

Tags