These are chat archives for groonga/grafana-datasource-plugin-groonga

6th
Feb 2016
Kouhei Sutou
@kou
Feb 06 2016 03:11
ダッシュボードにデータソースから取得したデータを表示するにはどうしたらいいんだろう。
あぁ、ダッシュボードを作らないといけないのか。
左に緑のぺろんとしたやつをクリックしたらポップアップメニューがでた。
Add Panel→Graphでそれっぽい行ができた。
Kouhei Sutou
@kou
Feb 06 2016 03:21
GroongaDatasource.prototype.queryを作ればいいのかしら。
Kouhei Sutou
@kou
Feb 06 2016 04:38
おぉ、これでなんか出た。グラフにマウスオーバーした時の時刻表示が変だけど。
define([
  'angular'
],
function (angular) {
  'use strict';

  var module = angular.module('grafana.services');

  module.factory('GroongaDatasource', function($q,
                                               $httpParamSerializerJQLike,
                                               backendSrv) {
    function params(data) {
      return $httpParamSerializerJQLike(data);
    }

    function GroongaDatasource(datasource) {
      this.datasource = datasource;
    }

    GroongaDatasource.prototype.testDatasource = function() {
      var options = {
        url: this.datasource.url + '/d/status'
      };
      return backendSrv.datasourceRequest(options).then(function() {
        return {
          status: 'success',
          title: 'Success',
          message: 'OK!'
        };
      });
    };

    GroongaDatasource.prototype.query = function(options) {
      var selectOptions = {
        table: 'Logs',
        filter: 'between(timestamp, ' +
                         options.range.from.unix() + ', "include", ' +
                         options.range.to.unix() + ', "include")',
        'drilldown[code].keys': 'timestamp, code',
        'drilldown[code].output_columns': '_value.timestamp, _value.code, _nsubrecs',
        'drilldown[code].sortby': '_value.timestamp',
        'drilldown[code].limit': -1
      };
      var requestOptions = {
        url: this.datasource.url + '/d/select?' + params(selectOptions)
      };
      return backendSrv.datasourceRequest(requestOptions).then(function(result) {
        var data = []
        var seriesSet = {};
        var drilldown = result.data[1][1].code;
        var i;
        for (i = 2; i < drilldown.length; i++) {
          var record = drilldown[i];
          var timestamp = record[0];
          var code = record[1];
          var nCodes = record[2];
          var series = seriesSet[code];
          var datapoints;
          if (!series) {
            series = seriesSet[code] = {
              target: code,
              datapoints: []
            };
            data.push(series);
          }
          datapoints = series.datapoints;
          datapoints.push([nCodes, timestamp * 1000]);
        };
        return {data: data};
      });
    };

     return GroongaDatasource;
  });
});
Masafumi Yokoyama
@myokoym
Feb 06 2016 14:18
今日はすとうさんの足あとをなぞっていきます
Masafumi Yokoyama
@myokoym
Feb 06 2016 14:26
その前にplugins/datasource/groongaをシンボリックリンクにできるか試してみます
Masafumi Yokoyama
@myokoym
Feb 06 2016 14:32
sudo ln -s ~/work/groonga/grafana-datasource-plugin-groonga /usr/share/grafana/public/app/plugins/datasource/groonga
cat /usr/share/grafana/public/app/plugins/datasource/groonga/plugin.json
{
  "pluginType": "datasource",
  "name": "Groonga",

  "type": "groonga",
  "serviceName": "GroongaDatasource",

  "module": "app/plugins/datasource/groonga/datasource",
  "metrics": true
}
sudo /bin/systemctl restart grafana-server
あれ、 http://localhost:3000/datasources/new のTypeからgroongaがいなくなった
Masafumi Yokoyama
@myokoym
Feb 06 2016 14:40
ディレクトリごとシンボリックリンクにするのがだめなのかな。ファイル単位だとどうだろう。
sudo rm groongaしてsudo mkdir groongaしてsudo ln -s ~/work/groonga/grafana-datasource-plugin-groonga/plugin.json /usr/share/grafana/public/app/plugins/datasource/groonga/plugin.jsonしてsudo /bin/systemctl restart grafana-serverしたらTypeにGroongaが表示された。
Masafumi Yokoyama
@myokoym
Feb 06 2016 14:49
うーん、ひとまずシンボリックリンクは諦めて進もう。
plugin.jsonにpartialsの設定を追加して、partials/config.html<script>alert("XXX")</script>を追加したら、TypeにGroongaを選んだ時にアラートが表示された
Masafumi Yokoyama
@myokoym
Feb 06 2016 14:54
zabbixのプラグインは https://github.com/grafana/grafana-plugins/tree/master/datasources/zabbix よりも https://github.com/alexanderzobnin/grafana-zabbix のほうが新しそう。grafana-3.0ブランチは別にあるからmasterは2.0向けっぽい
Masafumi Yokoyama
@myokoym
Feb 06 2016 15:46
Test connectionしても何も出ないな
あ、datasources.jsじゃなくてdatasource.jsか
datasource.jsにしたらalertとかメッセージとか出た
Masafumi Yokoyama
@myokoym
Feb 06 2016 15:55
backendSrvを使ってみたらUnknown error a.data is nullが出た
aってなんだろ
他のプラグインでbackendSrvを使っている箇所を見てみるか
Masafumi Yokoyama
@myokoym
Feb 06 2016 16:08
あー、いつの間にか接続方式がdirectになってるこれのせいか
proxyにしたらOKになった
Goのサーバーってなんだろう
Masafumi Yokoyama
@myokoym
Feb 06 2016 16:31
proxyのアクセスでGoの標準添付ライブラリのnet/httpが使われているのか
ダッシュボードのグラフが出た。時刻表示は合っているように見える。