我想使用石墨从不同的服务器收集指标。默认情况下,carbon 在所有接口上监听 2003,这对我来说很好。
现在理论上任何人都可以在那里发送度量数据。是否有防止这种情况发生的标准方法(类似于 http base auth )或者我是否需要弄乱物理接口上基于 IP 的限制?
我想使用石墨从不同的服务器收集指标。默认情况下,carbon 在所有接口上监听 2003,这对我来说很好。
现在理论上任何人都可以在那里发送度量数据。是否有防止这种情况发生的标准方法(类似于 http base auth )或者我是否需要弄乱物理接口上基于 IP 的限制?
我有三个指标“memoryFree”、“memoryBuffered”、“memoryCached”。这些指标出现在以下指标树中的每个 ec2 主机下:
system.radar123.collectd.ec2*_com.memory.
对于每个 ec2 主机,我想将三个指标相加并显示总和。这个怎么做?是否有一个石墨网络函数可以遍历通配符并分别处理每一个?
我的第一篇文章所以请温柔!所以我在 Ubuntu 16.04 服务器上安装并运行了石墨。(版本 0.10)
我正在发送指标,一切正常,但我一次发送多个时间戳。正如我每分钟发送一次数据,每 10 秒时间戳。每分钟都有新数据进来。可能会在一分钟后重新发送具有相应时间戳(与以前相同)的密钥。因此,由于石墨的工作方式,新值被保存而最后一个丢失。所以我在 carbon-cache 前面放了一个 carbon-aggregator,认为它会聚合每个时间戳的值。它不是。它聚合在一个时间间隔内接收到的所有值,忽略时间戳。
我发现 statsd 具有相同的功能。我想要的是聚合器聚合每个时间戳的值。就像将数据保留 1 分钟一样,看看是否收到了相同键和时间戳的数据点。如果是这样总结它们。如果没有这样的数据,将原始数据转发到 carbon-cache。
有没有办法用石墨或statsd做到这一点,或者我必须在碳缓存(而不是碳聚合器)前面写我自己的小缓冲区,这样做吗?它可能是 C 中自制结构的链接列表,导致大约 150 行代码,但会花费宝贵的时间。
肯定有人遇到过同样的问题,但是有人找到解决方案了吗?
Bump:真的没有人遇到过这个问题吗?
提前致谢!
试图将石墨与 grafana 连接起来。手册说:
Url 您的石墨网络或石墨 api 安装的 http 协议、ip 和端口。
我在哪里可以找到它们中的任何一个?我grep-ed /opt/graphite/,我发现唯一与'graphite-web'相关的东西与我用来打开基本石墨屏幕的url有关(带有树和石墨作曲家的那个)。我尝试了这个 url,但在 grafana 的“编辑数据源”中得到橙色的“未知错误”(/var/log/grafana/* 或主日志中没有错误)。
它们都在同一台服务器上,所以我使用了http://127.0.0.1:81/graphite/(卷曲显示<title>Graphite Browser</title>
和框架集)
我根本找不到graphite-api。
grafana-4.0.1
石墨...嗯,我还没有找到如何检查版本,但它是几天前安装的pip install https://github.com/graphite-project/graphite-web/tarball/master
有人可以帮忙吗?
大约需要 15 分钟,Sensu 发送的指标才会出现在 Graphite 中。
问题
讨论
虽然已配置保留 1 分钟:
/opt/graphite/conf/storage-schemas.conf
[carbon]
pattern = ^carbon\.
retentions = 60:90d
[default_1min_for_1day]
pattern = .*
retentions = 60s:1d
以及 sensu 客户端:
/var/log/sensu/sensu-client.log
{"timestamp":"2016-08-16T23:17:54.131805+0000","level":"info","message":
"publishing check result","payload":{"client":"rhel","check":{"type":"metric",
"command":"/etc/sensu/plugins/metrics-memory-percent.rb","handlers":["relay"],
"name":"load_metrics3","issued":1471389473,"interval":10,"subscribers":["ALL"],
"executed":1471389473,"duration":0.226,
"output":"box01-ubuntu.memory_percent.free 3.6590918167658453
1471389474\nbox01-ubuntu.memory_percent.buffers 0.0 1471389474\nbox01-ubuntu.memory_percent.cached 22.651064339630178 1471389474\n
box01-ubuntu.memory_percent.dirty 0.01837134070849475 1471389474\n
box01-ubuntu.memory_percent.swapUsed 7.438716420871131 1471389474\
nbox01-ubuntu.memory_percent.usedWOBuffersCaches 73.68984384360398 1471389474\nbox01-ubuntu.memory_percent.freeWOBuffersCaches 26.310156156396022 1471389474\n","status":0}}}
作为石墨日志活动:
/opt/graphite/storage/log/carbon-cache/carbon-cache-a/creates.log
16/08/2016 23:14:29 :: new metric box01-ubuntu.memory_percent.freeWOBuffersCaches
matched schema default_1min_for_1day
图表在 15 分钟后出现。
我有多个系列stats.counters.app.view.isbn.fetch.found.{yes,no}.$service
。我想计算每$service
.
#A
reduceSeries(mapSeries(group(#B, #C), 0), 'asPercent', 1, 'none', 'total')
#B
aliasSub(groupByNode(stats.counters.app.view.isbn.fetch.found.*.*.rate, 8, "sumSeries"), "^(.*)$", "\1.total")
#C
aliasSub(groupByNode(stats.counters.app.view.isbn.fetch.found.no.*.rate, 8, "sumSeries"), "^(.*)$", "\1.none")
但是,这会导致错误。从我尝试过的所有可能的变体中,这个感觉是最正确的,但它仍然失败。
我的服务器向 Graphite 发送mem_total
和mem_free
指标,但我想mem_used
在我的仪表板上显示。我目前正在通过以下方式解决问题:
offset(scale(servers.foo.*.mem_free,-1),30823052)
其中30823052
k 是总内存。
我想知道是否有一种方法可以利用石墨为我计算mem_used
,mem_total
这样mem_free
我就可以避免在查询中硬编码总内存量?
我最近一直在用 Grafana 做一些测试,并想出了一个部分解决方案,即:
A) servers.foo.server1.mem_total (mark invisible)
B) servers.foo.server1.mem_free (mark invisible)
C) diffSeries(#A, #B)
但是,这个解决方案只能在没有通配符的情况下工作——我真的很想能够使用通配符,而不是必须为每台服务器做这种事情。
我正在查看可用的功能,groupByNode 似乎它可能是我正在寻找的解决方案的一部分,但我还没有想出一种方法来做我想做的事。