サポートセンターホーム


Groovyのヒントとコツ

LogicMonitorの 埋め込まれたGroovyスクリプト engineは、システムおよびデバイスからインストルメンテーションデータを取得するために特別に選択された多数のヘルパークラスを提供します。 次のヒントとコツをご覧ください。

単純なHTTPAPIの呼び出し

多くのデバイスには独自のHTTPAPIがあり、デバイスのパフォーマンスデータを取得するためにアクセスする必要があります。 簡単な例については、次の例を参照してください。ここでは、NetAppEシリーズRESTAPIにフラッシュキャッシュの詳細を照会します。

 
// logicmonitorhttpおよびjsonslurperクラスをインポートしますimportcom.santaba.agent.groovyapi.http。*; import groovy.json.JsonSlurper; //デバイスプロパティテーブルからホスト、資格情報、および管理ステーションbaseurlを取得しますhostname = hostProps.get( "system.hostname"); userid = hostProps.get( "netapp.rest.user"); passwd = hostProps.get( "netapp.rest.pass"); base_url = hostProps.get( "netapp.rest.url"); //完全なエンドポイントURLを作成しますendpoint_url = base_url + "/ devmgr / v2 / storage-systems /" +ホスト名+ "/ flash-cache"; // APIからデータをフェッチしますhttp_body = HTTP.body(endpoint_url、userid、passwd); //この場合、http本体はjsonデータ構造です// jsonslurperを使用して、jsonテキストをGroovyオブジェクトに変換しましょうjson_slurper = new JsonSlurper(); response_obj = json_slurper.parseText(http_body); //応答オブジェクトを反復処理し、キーと値のペアを割り当てますresponse_obj.each(){key、value-> //各キーと値のペアを出力しますprintlnkey + "=" + value; } //正常に実行されたことを示す応答コードで戻りますreturn(0);

この場合、必要に応じてキーと値のポストプロセッサを使用して値を分離し、関心のあるキーと値のペアごとにデータポイントを作成する必要があります。

外部プロセスの実行

一部のデバイスでは、データを抽出するためにCLIツールまたはコンパイル済みバイナリを実行する必要があります。 Groovyでこれを行うには、次のようにします。

//デバイスのホスト名とCLIの資格情報を取得しますhostname = hostProps.get( "system.hostname"); cli_user = hostProps.get( "cli.user"); cli_pass = hostProps.get( "cli.pass"); //実行する外部コマンドを定義しますcommand = "/ usr / local / bin / ipmiutil sensor -c -N" + hostname + "-U" + cli_user + "-P" + cli_pass; //プロセスstdout&stderrを保持するためにいくつかのバッファを設定しますprocess_output = new StringBuffer(); process_errors = new StringBuffer(); //コマンドを実行しますprocess = command.execute(); //プロセスからstdoutとstderrを収集しますprocess.waitForProcessOutput(process_output、process_errors); //予想よりも長く(30秒)実行された場合、プロセスを強制終了しますprocess.waitForOrKill(30000); //プロセスは正常なリターンコードで終了しましたか? if(process.exitValue()== 0){//はい、プロセスは正常に実行されました-必要に応じて出力を処理し、出力しますprintln process_output; //正常に実行されたことを示す応答コードで戻りますreturn(0); } else {//いいえ、プロセスは失敗しました-いくつかの診断とstderrprintlnを出力します 'プロセスの実行: "' +コマンド+ '"は終了コード "' + process.exitValue()+ '"'で失敗しました; println process_errors; //何らかの失敗を示す応答コードで戻りますreturn(1); }

DNSとの相互作用

コレクターには、DNSオブジェクトのスクリプトを許可する機能が含まれています。 これは、ローカルDNSリゾルバーの動作を確認する必要がある場合に便利です。

特定のDNSレコードの解決を確認できる簡単な例を次に示します。

 
// xbilldnsヘルパークラスをインポートしますimportorg.xbill.DNS。*; // DNSルックアップを実行し、records = new Lookup( "gmail.com"、Type.MX).run()//レコードリストを反復処理しますrecords.each(){address-> //アドレスレコードを出力しますprintlnaddress ; } //正常に実行されたことを示す応答コードで戻りますreturn(0);

これをデータポイントポストプロセッサと組み合わせて使用​​すると、特定のアドレスの存在を検索し、見つからない場合はアラートをトリガーできます。

見る http://dnsjava.org/dnsjava-current/doc/ このクラスの完全なドキュメントについては。

記事上で