当前位置: 首页 > 知识库问答 >
问题:

不显示时间范围内没有数据的石墨指标

慕凌龙
2023-03-14

我有一个AWS服务器集群,我使用Graphite跟踪统计数据。随着新版本软件的部署或集群大小的增长或缩小,集群中的服务器会发生变化。

例如:

昨天添加的指标服务器。1.cpu服务器。2.cpu

今天增加了服务器的指标。2.cpu服务器。3.cpu

当我通过Graphite查看数据时,我只希望它显示在我查询的时间段内有数据的服务器的指标。然而,因为我不知道在这段时间内有哪些服务器可用,所以我在查询中指定了*,这将导致集群中存在的所有服务器都包含在该系列中。

查询最后15分钟:
服务器。*。cpu产生服务器。1.cpu服务器。2.cpu服务器。3.cpu

有没有办法过滤掉没有系列数据的服务器?所以在上面的例子中,我不包括来自servers.1.cpu的指标。但是,如果我的查询时间段是昨天,我将得到servers.1.cpu,但不是servers.3.cpu

共有2个答案

夹谷弘亮
2023-03-14

对于通过statsd发送到Graphite的指标,我们也有类似的问题。在某些情况下,我能够使用currentAbove(0)过滤出没有“有趣”值的序列;对于collectd load插件中的值,这是成功的。

仪表是一个特殊的问题,因为一旦AWS实例终止,该实例的所有仪表指标将保持在其最后值。

我在这方面有一些想法:

  • 使用CloudWatch事件将终止实例的所有仪表设置为0;不幸的是,Graphite糟糕的搜索api会让这有点挑战性
  • 向Graphite添加自定义函数,例如编写一个函数来过滤出第一个

发展了滤除常数序列的思想,averageAbove(integral(nonnegativedeviative(…)),1) 似乎是一个好的开始,但我不知道如何只显示原始系列。

晋弘义
2023-03-14

Graphite在第一次收到单个值时为度量分配所有空间。这导致任何度量稀疏的系统的表示效率非常低。例如,在服务器高度动态的系统中。我决定采用两种可能的解决方案:

>

  • 使用插槽名称作为指标,而不是实际的服务器标识符(IP)。我真的不喜欢这样,因为它会导致您在实际转到生成指标的服务器之前使用插槽名称查找服务器。

    请改用影响数据库。影响数据库仅存储您实际提供的指标,查询仅在实际有数据要返回时才返回数据。此结果是一个紧凑的表示,仅向您显示在查询时间跨度内实际有数据的指标的数据。

  •  类似资料:
    • 我有Grafana和Graphite metrics。我有一个图表显示了ActiveMQ中某些特定队列的排队数。问题是,EnqueueCount显示了自创建队列以来的所有值,因此当我将Grafana中的时间范围缩小到“今天到目前为止”时,图表如下所示: 我希望它只显示当前期间的值-我希望图形始终从0开始。在这种情况下,我想用-2来抵消它。有一个偏移函数,但它仅由常数决定,而我需要类似“由时间段中的

    • 我在Word文档中突出显示了段落,我必须从每个段落的第3到第5个字符中删除突出显示。 通过搜索集合r=ActiveDocument中突出显示的范围。在VBA中,可以完美地找到文本段。 错误出现在。 编译错误:参数数量错误或无效的属性分配。 danI如何在范围内正确指定第3到第5个字符的子范围?谢谢你的帮助。

    • 我每分钟从另一台服务器向托管graphite的服务器发送4个指标。我已经安装了graphite 我使用graphite和Grafana进行实时显示,并将Grafana设置为每10秒自动刷新一次。延迟3分钟有点不寻常。我怀疑网络是否造成了这么大的延迟。是否有必要调查一下为什么延迟如此之大? 非常感谢。

    • 问题内容: 这个问题已经在这里有了答案 : 从日期范围生成天数 (29个答案) 7年前关闭。 我想显示a 和MySQL中的日期之间的所有日期。 例如,具有和字段的表中的数据为: 日期是和 日期, 我想要的结果是: 如何仅使用MySQL查询来实现此目的(而不必使用存储过程,因为我对此并不熟悉)? 编辑: 尽管我仍然没有完全得到想要的结果,但是这里的答案很有帮助。在此示例中,它仅成功运行,但不输出任何

    • 问题内容: 在这里,最低年龄是10岁,因此我们首先计算范围10-15。该范围内有5个学生。对于第二个范围,我们需要找到年龄> 15(即18)。因此,第二个范围是18-23,依此类推。如果能自动计算范围并计算该范围内的数据,我将不胜感激。 问题答案: 您可以在SUM()语句中使用条件来获取该条件所在的计数。我会计算年龄在BETWEEN()必要范围内的条件。试试这个: 这只会返回一行,但是它将包含您需