2017-03-02 11 views
1

을 스크립트.grafana 내가 grafana 4 influxDB을 사용하고 influxdb

나는 내가 이것에 대한 스크립트 대시 보드를 사용하려고이

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

같은 URL의 매개 변수를 구축하여 특정 호스트에 대한 말을 CPU 사용량의 그래프를 표시해야하지만 난 알아낼 수 없습니다 scripted.js에게 CPULoad의 데이터를 찾는 위치를 알려주는 방법.

는 사람이 좀 포인터를 줄 수 있습니까?

관련,

마틴

답변

1

잘 나는 그것이 어떻게 작동하는지 발견,하지만 난 어디 문서화되지 않는다는 이상한라고해야하고 소스 코드에 약간의 수정을 포함 ...

첫 번째 상황의

조금 나는 "Nagios의"라는 influxdb 데이터베이스를 가지고있다. 이 데이터베이스에는 여러 시리즈가 있습니다. 다음과 같이 influxdb에서 쇼 시리즈는 시리즈 CPULoad의 데이터의 다음

> 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 

구조는 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처럼 보여줍니다

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 

SELECT mean("load1") FROM "nagios.CPULoad" WHERE "hostname" = 'ussd3' AND $timeFilter GROUP BY time($interval) fill(null) 
다음과 같이 내가 grafana scripted.js 구축하고자하는 SQL입니다 내부 scripted.js 구축 6,

코드는 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: [] 
       }]], 
     }, 
    ], 

(I 코드 거쳐이 발견) 이유는 모르겠지만 키 "호스트 이름"을 고려하기 위해 코드를 수정해야했습니다. 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