- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 Grafana 进行测试,以从 Graphite 系统读取数据并绘制数据图表。
这就是 Grafana 期望来自 Graphite 的 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,
]
]
}
]
}
是否可以创建一个新的数据源(来自默认 Graphite 数据源的副本),在处理之前将值换回或按原样使用这些值?
我查看了 .js 文件,但我发现很难确定我需要在何处进行更改,因此不胜感激!
编辑:我试过这个:我复制了默认的 Graphite 插件并将其重命名为 graphite-copy 并调整了 plugin.json
中的 id。
然后我像这样编辑了 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;
我在 datasource.js/ts
中对 GET 和 POST 方法都做了这个,但它给了我相同的结果(时间戳和指标切换)。
最佳答案
您可以使用 angular.factory
在 angular
中执行类似的操作
var module = angular.module(grafana.services);
module.factory('Datasrc',function($q, backendsrv, templatesrv){
//$q,backendsrv templatesrv supported by grafana
function Datasrc(datasource){
this.type =// the datasource type;
this.url = datasource.url;
this.auth = datasource.basicAuth;
this.timestamp = true;
this.supportMetrics = true;
}
AtsdDatasource.prototype.query = function (options) {
var queries = _.compact(qs);
if (_.isEmpty(queries)) {
var d = $q.defer();
d.resolve({ data: [] });
return d.promise;
}
Datasrc.prototype._performQuery = function (queries) {
var query = [];
query.push(
{
data :[
objecttype = query.type,
datapoints = query.//swap the values here
//enter the other necessary fields or declare more in the factory
]
});
if (query.length === 0) {
var d = $q.defer();
d.resolve({ data: undefined });
return d.promise; //promise called here
}
var options = {
method: 'POST',
url: this.url + '/api/v1/series',
data: {
queries: tsQueries
},
headers: {
Authorization: this.basicAuth
}
};
return backendSrv.datasourceRequest(options).then(function (result) {
return result;
});
};
}
});
关于javascript - 在 Grafana 中交换 Graphite 返回的时间戳和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40108915/
有没有办法简单地显示选定时间段内值的变化?我感兴趣的是最后一个值与初始值相比的偏移量。在一段时间内,这些值可能会高于和低于这些值,这并不是真正相关的(并且在我的情况下是异常(exception))。
我目前正在使用 Ganglia 收集监控指标,我想使用 Graphite 显示包含该数据的图表。我知道这样的集成是可能的,我找到了 article描述应该如何做。我不太确定这种集成是如何工作的,尤其是
我已经在专用的 Ubuntu 服务器上安装了 Graphite,它正确地收集了自己的系统性能数据,例如cpu 使用率 和 load_avg 并将其发送到 Carbon,然后我可以在 Graphite
我们需要收集多个服务器和业务流程上的时间序列信息,并考虑使用 Graphite 。如果我们想显示原始数据似乎很好。但是,如果我们想对这些数据进行 BI 并运行自定义查询怎么办? Graphite 是否
让我们想象一下我在 Graphite 中有这个查询: level1.level2.*.level4.count 我希望我的别名是level is: level3 但我找不到路。 看完graphite
假设我有一个名为 a.b.c.count 的指标.我正在尝试编写一个 python 脚本来读取度量的最新值 a.b.c.count在 Graphite 中。 我浏览了文档并发现我们可以使用 curl
我有一个应用程序,它通过statsd向 Graphite 发布许多统计信息。每当服务接收到一条消息时,其中一个统计信息就会简单地向statsd发送一个统计增量。我需要显示一个图表,显示此统计信息随时间
前段时间我用 nginx 部署了 Graphite ,有厨师,但没有卡住要安装的版本。因此,现在,尝试使用相同的配方进行安装时,由于缺少与版本相关的内容而出现错误。 我需要找到我在其他 CentOS
我们运行 etsy/statsd 节点应用程序,它每 10 秒将统计信息刷新到 carbon/whisper。如果您发送 100 个增量(计数),在前 10 秒内,graphite 会正确显示它们,例
如何将我的指标保存在根级别。当前已保存在统计层次结构下(请参阅 graphite )想要保存在顶层(Graphite)下 最佳答案 将这些设置添加到您的 statsd 配置文件中(可能类似于 /etc
我有一个计数器指标,我将其称为a.metric.count 正常绘制时,这将是一条不断增加的向上线,这没有多大用处。我想要的是显示每小时发生的事件数。 最佳答案 使用derivative函数,如下所述
我想删除 Graphite 的存储耳语数据,但 Graphite 文档中没有任何内容。 我所做的一种方法是手动删除 /opt/graphite...../whispers/stats... 中的文件。
我在网上搜索过,但找不到任何漂亮的 Graphite 模板,这些模板可以放置在 graphtemplates.conf 中,并通过在查询字符串中添加 ?template=[name] 来在图表中使用。
我正在开始检测 Web 应用程序,并使用 StatsD 收集尽可能多的相关指标。例如,以下是我当前使用的高级指标名称的一些示例: http.responseTime http.status.4xx h
在设置 Graphite 时,我不小心将保留期设置为 1800 天而不是 180 天。 '10s:6h,10min:1800d' 据我了解,现在更改保留不会清除旧数据。我不确定如何在不破坏我们拥有的所
我正在使用 Graphite 和 Collectd 来监控我的服务器。特别是,我正在使用 tail插件来计算失败的 SSH 登录。我正在为这个指标使用一个计数器,所以希望看到 1、2、3、0 等...
我正在准备重构一些Graphite指标名称,并希望能够保留历史数据。 .wsp文件是否可以重命名(如果更高级别的组件发生更改,则可以将其移动到新目录中)吗? 示例:group.subgroup1.me
我正在遵循这些说明(https://www.digitalocean.com/community/tutorials/how-to-install-and-use-graphite-on-an-ubu
每次用户连接到我的网站时,我都会发送一条消息。 使用这种格式: "user_login 1 13xxxxxxx" (key value timestamp) 我的问题是 Graphite 给我一个图
我正在玩grafana,我想创建一个面板,在其中比较一台应用服务器的数据与其他服务器的平均值。就像是: apps.machine1.someMetric averageSeries(apps.*.no
我是一名优秀的程序员,十分优秀!