Grafanaは、複数のソースからの時間データを視覚化および監視するための便利なツールです。 この投稿では、プラグインを開発するための重要な概念を説明します。
グラファンエンジンはクエリの作成に便利なので、1)一時データを視覚化するには、独自のプラグインを作成する必要があります。 2)必要に応じてグラファンの機能を拡張します。
設置
- Grafanaをダウンロードして実行する
-
bin/grafana-server
から起動した後、data
フォルダーが表示されます
プラグインCテクノロジーとは何ですか。 視点
これらの詳細はオプションです。 途中でこれらの概念を理解しました。
Grafana 5.xは、すばらしいAngularアプリバージョン1.6.6 :)であり、 Reactのビットです。 プラグイン自体は角度コントローラーであり、ファイルdata/plugins/your-module/dist/module.js
にあり、 SystemJSモジュールとしてロードできます。 次に、プラグインのメタ記述をplugin.json
ファイルがplugin.json
です。名前、ID、アイコン...
開発プロジェクト
webpackで次のテンプレートを使用することをお勧めします。 なぜそれが優れているのかという機能の説明があります。 ところで、それは公式のドキュメントにあります
システムにnpmがインストールされている必要があります。
cd $GRAFANA_PATH/data/plugins git clone https://github.com/CorpGlory/grafana-plugin-template-webpack.git cd grafana-plugin-template-webpack npm install npm run build
/home/alex/development/grafana/plugins/grafana-plugin-template-webpack
などの別のディレクトリにクローンを作成し、ファイル$GRAFANA_PATH/conf/custom.ini
を作成してそこに書き込むことができます
[plugin.template] path = /home/alex/development/grafana/plugins/grafana-plugin-template-webpack
ここで、Grafanaを再起動する必要があります。 行が表示されます
INFO[05-17|06:08:46] Registering plugin logger=plugins name="Plugin Template Name"
grafanaの開始のログ。
次にlocalhost:3000
に移動し、ロゴの下の+
記号をクリックして新しいダッシュボードを作成します。新しいパネルに「プラグインテンプレート名」を選択してウィンドウが表示されます。 次のウィンドウが表示されます。
開発
src/module.js
を開きsrc/module.js
-これが「メイン」です。 ここから、graphanはプラグインをページにロードし、 PanelCtrl
インスタンスを待機します。 最後の行に注意してください: export { Ctrl as PanelCtrl }
。 一般に、多くの変数が定義され、ライブラリをインポートできる大規模なフロントエンドアプリケーションに囲まれていることに注意してください。 「grafana / *から{...}をインポートする」すべては、すでに利用可能な機能です。
このようにコンストラクタを書き直しましょう:
constructor($scope, $injector) { super($scope, $injector); console.log('hello from console'); }
npm run build
代わりにnpm run build
npm run dev
を使用できるようになりました コードはそれ自体を再構築します。 grafanaバックエンドを再起動することはできません(これはbin/grafana-server
)が、grafanaはプラグインファイルをキャッシュするのが好きなので、バンドルされたグレードをリロードするときは注意してください。 投稿の下部に、ビルドシステムの配置方法について説明し、 partials
あるAngularテンプレートを使用するビデオがあります。
このクラスはAngularコントローラであり、 link(scope, element)
関数があります。 console.log(element)
を作成することをお勧めします。必要なことを実行できるhtml要素があります。
リクエストからの出力データ
コントローラーはPanelCtrl
クラスの子孫であるため、 PanelCtrl
クラスに置き換えましょう。 ここで、 パネル編集モードに入ると、新しいタブが表示されます
ここではGrafana TestDataを使用します
次のように後継クラスのコードを変更しましょう
constructor($scope, $injector) { super($scope, $injector); this.events.on( 'data-received', this._onDataReceived.bind(this) ); } _onDataReceived(data) { console.log(data); }
これは、受信データに関するイベントにサブスクライブするための、親クラスのフィールドであるthis.events
オブジェクトの使用が登場した場所です。 ソースのみの MetricsPanelCtrlのその他の機能
プラグインをリロードし、コンソールのデータソースからデータを取得します。 その後、必要なデータソースを選択し、Grafanaを使用してクエリを作成できます。 必要に応じてレンダリングします。 たとえば、 d3.jsを使用します。
テンプレートに値の出力を追加することもできます。 これを行うには、コンストラクターを変更します。
constructor($scope, $injector) { super($scope, $injector); this.message = "nice!"; }
ファイルpartials/template.html
を変更します:
<div class="hello"> Hello from <b>Template Plugin</b> {{ ctrl.message }} </div>
おわりに
公式文書を読むことができます 。
データをロードする方法と、使用可能なグラファンをさらに取得する方法を理解するために、1つのオープンソースプラグインを扱うことをお勧めします。 たとえば、 typescript 、エディターを使用して、 plugin.json
プラグインplugin.json
、 assets
保存します
ところで、古いAnglarディレクティブの使用は悪です。 名前の衝突があります。 ここで、コンポーネントを使用してプラグインビルダーを構築することについていくつかの考えがあります。
そして、私からの同様のコンテンツを含むビデオ。 音をおaびします。 まだ追加情報があります:
Visual Studio Codeの開発もお勧めします 。この場合、 デビューすることが可能です
みんなに良いコーディング。
PS投稿はAlexander Zobninによってチェックされました 。 どうもありがとうございます。