ウィジェット・テンプレートの作成ウィジェットの作成と修正には、ホーム(Home)>ダッシュボード(Dashboard) ページを使用します。Traffic Sentinel は、多くのタイプのデータを設定することが出来る、いくつかの標準ウィジェットを提供します。 ( ダッシュボードのカスタマイズ チュートリアル参照 ) Traffic Sentinelのウィジェット機能では、XML(eXtensible Markup Language)で記述されたテンプレート文書を利用します。 XML文書によりレポートの構造(タイトル、見出し、セクションおよび本文)が定義されます。 ウィジェット テンプレートに含まれているスクリプトにより、クエリの作成、結果の処理、およびテーブルやチャートのレポートへの追加が行われます。 このチュートリアルでは、Traffic Sentinelに新しい機能を追加するウィジェット テンプレートを作成しインストールする方法について説明します。 このチュートリアルの学習に入る前に、Traffic Sentinelのスクリプティング機能について紹介しているクエリのスクリプト化のチュートリアルを学習することをお勧めします。 XML下の例はテンプレートの基本的要素を示しています。 まず、以下の内容の time.xml という新規テンプレート ファイルを作成します。: <widget name="Time" type="html" refresh="60"> <link>//www.inmon.com/tutorials2/widgettemplate.php</link> <description>This widget contains tutorial Time example.</description> <input name="datefmt" type="string" label="Format" value="yy-mm-dd HH:mm"/> <script><![CDATA[ print("<p>"); print(formatdate(new Date(), datefmt)); println("</p>"); ]]></script> </widget> この簡単な例では、ウィジェットテンプレートの基本コンポーネントについて説明しています。 各テンプレート(template)にはカテゴリー(category)が割り当てられ、名前(name)が付けられます。 また、テンプレートについての説明(description)も設定されます。 このウィジェット(widget)には、名前(name) や タイプ(type) (あるいは、随時 リフレッシュ(refresh)する時間(秒))が、与えられます。2つにサポートされたウィジェットのタイプがあります。:
ホーム(Home)>インストール(Install)ページを使用して新しいテンプレートファイルをインストールすることが出来ます。(そのファイルには、.xml の拡張子が必要です)。 スクリプティングクエリのスクリプト化 では、Traffic Sentinelの基本的なスクリプティング テクニックについて説明しています。 一般に、新規スクリプトを作成する時には、レポート(Report)>スクリプト(Script)インターフェースを用いてスクリプトを実際に試してみるのが最良の方法です。 基本的なクエリが正常に動作するようになったら、それをウィジェットテンプレートに組み込みます。 Traffic Sentinelは、ウィジェットテンプレート用の追加のJavascriptファンクションを提供します。 print() と println()time.xml の例では、どのようにして、print() や println() の機能が、HTML出力を生成するのに使用することができるかを示しています。また、これはウィジェット出力領域に対して適切なフォームで表示されるかを注意する必要があります。適切なフォームでないHTMLは、ウィジェットページ全体の障害につながります。 Widget(ウィジェット)Widgetクラスは、ウィジェット内での情報の表示を単純化する機能を提供します。以下のセクションは、どのようにしてWidgetクラスがテーブルやチャートを表示しているかを示しています。 Table(テーブル)Tableクラスは、表形式データを表示します。クエリのスクリプト化のチュートリアルでは、クエリの結果としてテーブルを取得する方法を紹介しています。 下のスクリプトは、クエリの結果をウィジェットに追加する方法を示しています。 <widget name="Top IP Sources Table" type="html" refresh="60" > <description>Top sources of bytes.</description> <input name="interval" type="interval" value="last5minutes" > <option value="last5minutes" >Last 5 Minutes</option> <option value="last10minutes" >Last 10 Minutes</option> </input> <script> var w = Widget.current(); var q = Query.topN("rttraffic","ipsource,bytes",null,interval,"bytes",5); var table = q.run(); w.table(table); </script> </widget>注意: このスクリプトはcategoryおよびintervalという2つのデータを入力します。これらの入力データのデフォルト値は、それぞれ"ipsource"および"today"です。 Tableクラスは、他のタイプの表形式データをレポートに追加するのにも役立ちます。 このウィジェットでは、テーブルを表示するための、html パラメータを type にセットします。60秒間隔で更新するために refresh に 60 をセットします。interval では、デフォルト値としてlast5minutes を持ち、単一の入力が許される設定を行なっています。Chart(チャート)Chartクラスは、ウィジェット内に含めるチャートを組み立てるのに使用します。 以下の例は、どのようにして、表形式のクエリ結果から組み立てられるかを示しています。 <widget name="Top IP Sources Chart" type="png" refresh="60"> <description>Chart showing top IP sources by number of bytes.</description> <input name="interval" type="interval" value="last5minutes" > <option value="last5minutes" >Last 5 Minutes</option> <option value="last10minutes" >Last 10 Minutes</option> </input> <script> var w = Widget.current(); var q = Query.topN("rttraffic","ipsource,bytes",null,interval,"bytes",5); var table = q.run(); var chart = Chart.singleSeries( "bar", "Top IP Sources", table, "IP Source", 0, "Bytes", 1); w.chart(chart); </script> </widget> Inputs(インプット)<input /> タグは、ウィジェットテンプレートの重要なパートで、ダッシュボード・ページで値を編集することを可能とします(ダッシュボードのカスタマイズ 参照)。Inputs は、それぞれに異なったセッティングを持つようにインスタンス化するために複数のウィジェットのコピーを可能とします。 input は、以下の属性を持ちます。:
全ての input には、少なくとも、name と type は必要です。 もし、input で、一覧の形式を示す場合は(例;規定の値のセットのひとつのみを持つ)、<option> 句を使うことができます。(まず、 chartの例 を参照して下さい。). もし、input がオプショナル(例: request&eq;"false")の場合、スクリプトは、変数が存在すると仮定してはいけません。以下の一節は、どのようにして、オプショナル・インプットの存在をテストするかを示しています。 <input name="height" type="integer" /> <script> var h = 100; if(typeof(height) != 'undefined') h = height; Inputのtypeは、変数のチェックに使用され、それらが正しいかを確認します。input 値がフォーム内に入力された時、それらはチェックされ、もし入力に不正値があればユーザに通知されます。さらに、inputのtypeは、入力フィールドに入力された値が、提供されている共通のオプションとして適切かをユーザに支援するのに使用されます。 以下の types が定義されています。:
typeの末尾が [] で終了する場合、指定されたタイプの値のコンマ区切りのリストを許可します。(例: view.rttraffic.key[])。 |