Я тестирую Grafana для чтения и графического отображения данных из системы Graphite.swap Графит вернул временную метку и значение в Grafana
Это как графана ожидает JSon данные из графита:
{
"data": [
{
"target": "test-series-0",
"datapoints": [
[
22.504392773143504,
1.476693264195e+12
],
[
22.719552781746028,
1.476693301825e+12
]
]
}
]
}
Система, которую я хочу прочитать данные, обменивает метку времени и значение метрики, например,
{
"data": [
{
"target": "test-series-0",
"datapoints": [
[
1.476693264195e+12
22.504392773143504,
],
[
1.476693301825e+12
22.719552781746028,
]
]
}
]
}
Можно ли создать новый источник данные (копию из графитового источника данных по умолчанию), что либо обменивает значения обратно перед обработкой или работать со значениями, как есть?
Я просмотрел файлы .js, но мне трудно определить, где мне нужно внести изменения, чтобы все указатели были оценены!
EDIT: Я пробовал это: я сделал копию плагина Graphite по умолчанию и переименовал его в графитированную копию и скорректировал идентификатор в plugin.json
.
Тогда я редактировал datasource.js
и datasource.ts
вроде этого:
var e = {
method: "POST",
url: "/render",
data: d.join("&"),
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
};
return a.panelId && (e.requestId = this.name + ".panelId." + a.panelId), this.doGraphiteRequest(e).then(this.convertDataPointsToMs)
}, this.convertDataPointsToMs = function(a) {
if (!a || !a.data) return [];
for (var b = 0; b < a.data.length; b++)
for (var c = a.data[b], d = 0; d < c.datapoints.length; d++) {
var t = c.datapoints[d][0];
c.datapoints[d][0] = c.datapoints[d][1];
c.datapoints[d][0] = t;
c.datapoints[d][1] *= 1e3;
}
С изменением является следующее:
var t = c.datapoints[d][0];
c.datapoints[d][0] = c.datapoints[d][1];
c.datapoints[d][0] = t;
Я сделал это для обоих GET и POST методов в datasource.js/ts
, но это дает мне то же самое результат (отметка времени и метрика).
протестирует завтра, где поставить это? – Remko
То же самое в datasource.js, я также получил ссылку github, вы можете изменить переменные в соответствии с вашим кодом, и вам нужно обернуть его в * обещание –
. Мне кажется, мне нужно больше информации о том, как реализовать предлагаемое решение, оно кажется, что вы предлагаете полностью переписать datasource.js, но я просто хочу сделать обмен поля в массиве datapoints – Remko