2017-03-02 8 views
1

私はgrafana 4とinfluxDBを使用しています。grafana scripted influxdb

は、私は私はこのためにスクリプトダッシュボードを使用しようとしています。この

http://my_grafana:3000/dashboard/script/scripted.js?name=CPULoad&host=ussd1

のようなURLにパラメータを構築することにより、特定のホストの言うCPU使用率のグラフを表示する必要があるが、私は把握することはできませんscripted.jsにCPULoadのデータを探す場所を教える方法。

誰でも私にいくつかのポインタを教えていただけますか?

に関して、

マーティン

答えて

1

まあ、私はそれがどのように機能するかがわかったが、私はそれはどこにも文書化されていないことを奇妙であると言っているし、それがソースコードに少し変更を必要とします...

文脈の少し最初

私は「Nagiosの」と呼ばれるinfluxdbデータベースを持っています。このデータベースの中には、いくつかのシリーズがあります。

http://10.72.6.220:3000/dashboard/script/scripted.js?name=CPULoad&field=load1&hostname=ussd3 
name indicates the series in influxDB I want to graph 
field indicates which field to use 
hostname indicates the host to choose 

:influxdbでshowシリーズは、次のようにシリーズすなわち、cpuload内のデータの構造はscripted.jsにこの

> select * from "nagios.CPULoad" limit 1 
name: nagios.CPULoad 
time    hostname  load1 load15 load5 state 
----    --------  ----- ------ ----- ----- 
1487867813000000000 cbba.storage 0  0  0  OK 

私のURLのようなものですされ、以下の

> show series 
key 
--- 
nagios.CPULoad,hostname=cbba.storage,state=OK 
nagios.CPULoad,hostname=ussd1,state=OK 
nagios.CPULoad,hostname=ussd2,state=OK 
nagios.CPULoad,hostname=ussd3,state=OK 
nagios.CPULoad,hostname=ussd4,state=OK 

を示しgrafana scripted.jsをビルドするSQLは次のとおりです。

SELECT mean("load1") FROM "nagios.CPULoad" WHERE "hostname" = 'ussd3' AND $timeFilter GROUP BY time($interval) fill(null) 

内部scripted.jsを構築するためのコードがdashboard.rows構造で「ターゲット」パラメータを変更関与し、それがこのようなことが判明した(私は、コードを通過した後にこれを見つけた)

targets: [ 
     { 
     "measurement": "nagios." + ARGS.name, 
     "metric": ARGS.name, 
     "tags": { 
      "hostname": { 
        operator: "=" , 
        value: ARGS.hostname 
       } 
     }, 
     "select": [[{ 
        type: "field", 
        params: [ARGS.field] 
       }, { 
        type: "mean", 
        params: [] 
       }]], 
     }, 
    ], 

私は理由を知りませんが、キー "hostname"を考慮に入れてコードを修正しなければなりませんでした。 bは、 "ホスト名"

を運ぶので、私は利便

a.prototype.renderTagCondition = function(a, b, c) { 
    var d = "" 
     , e = a.operator 
     , f = a.value; 
    return b > 0 && (d = (a.condition || "AND") + " "), 
    e || (e = /^\/.*\/$/.test(f) ? "=~" : "="), 
    "=~" !== e && "!~" !== e ? (c && (f = this.templateSrv.replace(f, this.scopedVars)), 
    ">" !== e && "<" !== e && (f = "'" + f.replace(/\\/g, "\\\\") + "'")) : c && (f = this.templateSrv.replace(f, this.scopedVars, "regex")), 
    d + '"' + a.key + '" ' + e + " " + f 
} 

d + '"' + a.key + '" ' + e + " " + f 

が間違っているように思わ返された値のためにここにコピーする機能renderTagConditionで...それは

d + '"' + b + '" ' + e + " " + f 

する必要があります

この後、私が最初に述べたURLを呼び出すと、すべてうまく動きましたl

関連する問題