Groovyのヒントとコツ

最終更新日: 25 年 2024 月 XNUMX 日

LogicMonitorの 埋め込まれたGroovyスクリプト エンジンは、システムやデバイスから計測データを取得するために特別に選択されたヘルパー クラスを多数提供します。次のヒントとコツを参照してください。

単純な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/ このクラスの完全なドキュメントについては。

Groovy Lib v2 および v4 のサポート

Groovy lib v2 に加えて、コレクターは Groovy lib v4 もサポートします。 EA Collector 34.500 以降では、Groovy lib v2 と v4 の両方を使用できるようになりました。最初の行はコメント (//) として追加され、スクリプトを実行する Groovy バージョンを定義します。

Groovy ライブラリ v2

//!/lib-groovy/v2
println "version=" + GroovySystem.version

Groovy ライブラリ v4

//!/lib-groovy/v4
println "version=" + GroovySystem.version

注: バージョン コメントを定義しない場合、スクリプトはデフォルトで Groovy lib v2 を使用します。

記事上で