Graphite Derivative 显示无数据
Graphite Derivative shows no data
使用graphite/Grafana记录一个mongodb实例中所有集合的大小。为此,我编写了一个简单的 (WIP) python 脚本:
#!/usr/bin/python
from pymongo import MongoClient
import socket
import time
statsd_ip = '127.0.0.1'
statsd_port = 8125
# create a udp socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client = MongoClient(host='12.34.56.78', port=12345)
db = client.my_DB
# get collection list each runtime
collections = db.collection_names()
sizes = {}
# main
while (1):
# get collection size per name
for collection in collections:
sizes[collection] = db.command('collstats', collection)['size']
# write to statsd
for size in sizes:
MESSAGE = "collection_%s:%d|c" % (size, sizes[size])
sock.sendto(MESSAGE, (statsd_ip, statsd_port))
time.sleep(60)
这正确地显示了我在 grafana 中的所有集合大小。但是,我想获得这些尺寸的变化率,所以我在 grafana 中构建了以下石墨查询:
derivative(statsd.myHost.collection_myCollection)
图表完全空白。有什么想法吗?
随访:选择大于24h的时间范围时,所有数据都会从图中消失。我这辈子都想不通。
更新:这是因为我的 collectd 配置为每秒发送样本。然而,collectd 的 statsd 插件每 60 秒接收一次数据,所以我最终得到了大多数数据点 None
。
我通过在浏览器中将 &format=raw
附加到 graphite-api 查询的末尾检查 Graphite 中的原始数据发现了这一点,它为您提供了每个数据点的值作为逗号分隔列表。
对此的临时修复是用 keepLastValue(60)
包围石墨查询。然而,这会创建一个阶梯图,因为每个 None(60 个值)的值成为 60 步内的最后一个有效值。绘制这个的导数然后变成一个宽间距的锯齿图。
为了解决这个问题,我可能会继续修复 collectd 上的刷新间隔或切换到独立的 statsd 实例并根据需要从那里进行配置。
使用graphite/Grafana记录一个mongodb实例中所有集合的大小。为此,我编写了一个简单的 (WIP) python 脚本:
#!/usr/bin/python
from pymongo import MongoClient
import socket
import time
statsd_ip = '127.0.0.1'
statsd_port = 8125
# create a udp socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client = MongoClient(host='12.34.56.78', port=12345)
db = client.my_DB
# get collection list each runtime
collections = db.collection_names()
sizes = {}
# main
while (1):
# get collection size per name
for collection in collections:
sizes[collection] = db.command('collstats', collection)['size']
# write to statsd
for size in sizes:
MESSAGE = "collection_%s:%d|c" % (size, sizes[size])
sock.sendto(MESSAGE, (statsd_ip, statsd_port))
time.sleep(60)
这正确地显示了我在 grafana 中的所有集合大小。但是,我想获得这些尺寸的变化率,所以我在 grafana 中构建了以下石墨查询:
derivative(statsd.myHost.collection_myCollection)
图表完全空白。有什么想法吗?
随访:选择大于24h的时间范围时,所有数据都会从图中消失。我这辈子都想不通。
更新:这是因为我的 collectd 配置为每秒发送样本。然而,collectd 的 statsd 插件每 60 秒接收一次数据,所以我最终得到了大多数数据点 None
。
我通过在浏览器中将 &format=raw
附加到 graphite-api 查询的末尾检查 Graphite 中的原始数据发现了这一点,它为您提供了每个数据点的值作为逗号分隔列表。
对此的临时修复是用 keepLastValue(60)
包围石墨查询。然而,这会创建一个阶梯图,因为每个 None(60 个值)的值成为 60 步内的最后一个有效值。绘制这个的导数然后变成一个宽间距的锯齿图。
为了解决这个问题,我可能会继续修复 collectd 上的刷新间隔或切换到独立的 statsd 实例并根据需要从那里进行配置。