这有点棘手。我正在尝试以特定时间点的使用百分比来绘制 CPU 使用情况。为此,我从中获取样本/proc/stat- 这些是绝对样本,它们看起来像这样:
app01.cpu.total.user 45997117 1358816118
app01.cpu.total.nice 165511 1358816118
app01.cpu.total.system 36679893 1358816118
app01.cpu.total.idle 3519926642 1358816118
app01.cpu.total.iowait 3854916 1358816118
app01.cpu.total.irq 2553 1358816118
app01.cpu.total.softirq 189828 1358816118
app01.cpu.total.steal 4497297 1358816118
app01.cpu.total.guest 0 1358816118
Run Code Online (Sandbox Code Playgroud)
我用来显示这些的函数是:
scale(divideSeries(stats.app01.cpu.total.user,sumSeries(stats.app01.cpu.total.*)), 100)
Run Code Online (Sandbox Code Playgroud)
基本上应该以百分比显示结果。我注意到当我像这样绘制图表时得到相同的结果:
asPercent(stats.app01.cpu.total.user,sumSeries(stats.app01.cpu.total.*))
Run Code Online (Sandbox Code Playgroud)
我的问题是,我注意到曲线在不断增长——虽然增长很小,但它正在增长——我真的不太明白为什么。事实上,它应该相当平坦,并且根据采样时的 CPU 使用情况而下降和增长。我当然不会期望出现增长趋势。但我可能会错过一些东西,因此我转向这里寻求帮助。
require 'statsd'
statsd = Statsd.new('localhost', 8125).tap{|sd| sd.namespace = 'account'}
1.times do
statsd.increment 'hitcount4'
end
sleep 5
5.times do
statsd.increment 'hitcount4'
end
sleep 10
10.times do
statsd.increment 'hitcount4'
end
Run Code Online (Sandbox Code Playgroud)
我正在使用红宝石宝石 statsd-ruby
我运行上面的脚本它成功执行,图形出现,但我只能看到x轴上的一条线而没有(没有y轴的值),如何获取上述脚本的图形?
我想记录每个增量调用.
/opt/graphite/statsd/local.js的内容
{
graphitePort: 2003
, graphiteHost: "127.0.0.1"
, port: 8125
, backends: [ "./backends/graphite", "./backends/repeater", "./backends/console" ]
, repeater: [ { host: '10.1.2.15', port: 8125 } ]
, graphite: { legacyNamespace: false, globalPrefix: "rtpg.testing_server_2" }
, flushInterval: 10
}
Run Code Online (Sandbox Code Playgroud)
/opt/graphite/conf/storage-schemas.conf的内容
[carbon]
pattern = ^carbon\.
retentions = 60:90d
[stats] …Run Code Online (Sandbox Code Playgroud) 我为我的统计数据运行statsd/graphite.我的统计数据可能看起来像
a.b.c.u1 = 13
a.b.c.u2 = 16
a.b.c.u3 = 18
a.b.c.u4 = 20
a.b.c.u5 = 21
a.b.c.u6 = 22
Run Code Online (Sandbox Code Playgroud)
我希望得到 a.b.c.$u价值> = 20的全部.
我如何使用石墨功能?
./statsd-client.sh 'development.com.alpha.operation.testing.rate:1|c'然后我尝试查询过去24小时的摘要:
http://example.com/render?format=json&target=summarize(stats.development.com.alpha.operation.testing.rate,"24hours","sum",true)&from = -24hours&tz = UTC
我得到1个数据点如下:
"datapoints": [[0.0, 1386277560]]}]
Run Code Online (Sandbox Code Playgroud)
为什么我得到0.0?甚至Graphite Composer也不会显示任何内容
当我执行10次操作时,我期待值为"10".我做错了什么?
存储schemas.conf
[carbon]
pattern = ^carbon\.
retentions = 60:90d
[default_1min_for_1day]
pattern = .*
retentions = 60s:1d
Run Code Online (Sandbox Code Playgroud)
请帮我理解这个问题.
编辑:
根据下面的答案,我更改了存储聚合,并在metric_file.wsp上运行whisper-info后得到以下响应.但我仍然在数据点中获得"0.0"作为值,而Graphite浏览器不显示任何内容.
maxRetention: 86400
xFilesFactor: 0.0
aggregationMethod: sum
fileSize: 17308
Archive 0
retention: 86400
secondsPerPoint: 60
points: 1440
size: 17280
offset: 28
Run Code Online (Sandbox Code Playgroud)
我还看了另一个答案中建议的stats_counts树,但它是一样的.
我的设置有什么问题.我正在使用默认设置,除了存储聚合中下面的答案所建议的更改
Graphite抛出无法打开的数据库文件
tail -f /etc/httpd/logs/error_log
Run Code Online (Sandbox Code Playgroud)
这是setting.py文件配置
DATABASES = {
'default': {
'NAME': '/opt/graphite/webapp/test.db',
'ENGINE': 'django.db.backends.sqlite3',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': ''
}
}
Run Code Online (Sandbox Code Playgroud)
DONE
python manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
该文件存在于以下位置
[root@bash graphite]# ls -l /opt/graphite/webapp/test.db
-rw-rw-rw- 1 nobody nobody 65536 Nov 11 22:22 /opt/graphite/webapp/test.db
Run Code Online (Sandbox Code Playgroud)
它会抛出错误
[Tue Nov 11 22:24:15 2014] [error] File "/usr/lib/python2.6/site-packages/django/db/backends/util.py", line 53, in execute
[Tue Nov 11 22:24:15 2014] [error] return self.cursor.execute(sql, params)
[Tue Nov 11 22:24:15 2014] [error] File "/usr/lib/python2.6/site-packages/django/db/backends/sqlite3/base.py", line 452, in execute
[Tue Nov …Run Code Online (Sandbox Code Playgroud) 为了获得一些“视觉警报”,我想在 Grafana 中的同一个图形上同时绘制两条曲线:
这个想法是为了能够比较前一周同一天的数据演变。
我找不到 Graphite 函数(但我可能在文档中遗漏了一些东西)。
有没有办法做到这一点?
我正在寻找类似于 sumSeriesWithWildcards 的东西,但对于最大值/最小值。我的意思是,它应该计算最小值或最大值,而不是计算在所需字段上聚合的总和。我很惊讶没有在 Graphite 库中找到 maxSeriesWithWildcards 调用。如果它不存在,我怎么能模拟呢?
谢谢,你好,索林
我正在使用一个 groovy 脚本来计算我的构建持续时间并将指标发布到托管石墨,从命令行将产生以下卷曲并产生预期效果:
echo {someMetricHere} | nc carbon.hostedgraphite.com 2003
Run Code Online (Sandbox Code Playgroud)
但是,在我的 groovy 脚本中,生成指标的最后一步是运行以下命令:
"echo "+ metric +" | nc carbon.hostedgraphite.com 2003".execute()
Run Code Online (Sandbox Code Playgroud)
它的回归:
捕获:java.io.IOException:无法运行程序“|”:错误=20,不是目录 java.io.IOException:无法运行程序“|”:错误=20,不是 hudson8814765985646265134.run(hudson8814765985646265134. :27) 由:java.io.IOException: error=20, Not a directory ... 1 more
我假设该命令不理解“|” 命令的一部分,对如何修复此脚本以运行预期的 bash 有何建议?我认为可以在工作区中创建一个 .sh 文件,但我不确定如何。
想要查看完整脚本的人的 Pastebin:https : //pastebin.com/izaXVucF
干杯:)
我正在尝试在 grafana 中构建百分比列表,但无法让divideSeries+ 通配符正常工作。
我发现Grafana划分2个系列,这看起来像是我想要的,但不幸的是mapSeries我的grafana实例(版本4.6.0-1)中没有功能。
这就是我所得到的,但我不想指定 ID“1234”,而是想使用通配符,并将每个 ID 分组在一起。
divideSeries(stats.dhcp.pools.1234.cur,stats.dhcp.pools.1234.max)
Run Code Online (Sandbox Code Playgroud)
从逻辑上讲,我尝试过:divideSeries(stats.dhcp.pools.*.cur,stats.dhcp.pools.*.max)--但这不起作用。我尝试使用asPercent,但它具有与 相同的限制divideSeries。
我认为applyByNode这就是我想要的,但我似乎无法将这个例子转化为实际有效的东西。
我正在尝试在新安装的ubuntu 18.04系统上设置石墨网。我使用了apt数据包管理器,因此获得了1.0.2版的石墨网。我通常完成配置,但是尝试在浏览器中打开石墨网时出现“内部服务器错误”。石墨网的Apache错误日志显示:
[Fri May 25 07:02:47.097839 2018] [wsgi:error] [pid 13350] [remote XXX.XXX.XXX.XXX:XXXX] mod_wsgi (pid=13350): Exception occurred processing WSGI script '/usr/share/graphite-web/graphite.wsgi'.
[Fri May 25 07:02:47.102111 2018] [wsgi:error] [pid 13350] [remote XXX.XXX.XXX.XXX:XXXX] Traceback (most recent call last):
[Fri May 25 07:02:47.102210 2018] [wsgi:error] [pid 13350] [remote XXX.XXX.XXX.XXX:XXXX] File "/usr/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 157, in __call__
[Fri May 25 07:02:47.102389 2018] [wsgi:error] [pid 13350] [remote XXX.XXX.XXX.XXX:XXXX] response = self.get_response(request)
[Fri May 25 07:02:47.102535 2018] [wsgi:error] [pid 13350] [remote XXX.XXX.XXX.XXX:XXXX] File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 124, in get_response …Run Code Online (Sandbox Code Playgroud) 以毫秒精度存储每点的时间是否可能?
由于Graphite基于Whisper,我看了一下whisper.py文件.它包含:
UnitMultipliers = {
's' : 1,
'm' : 60,
'h' : 60 * 60,
'd' : 60 * 60 * 24,
'y' : 60 * 60 * 24 * 365,
}
Run Code Online (Sandbox Code Playgroud)
因此,似乎可以记录最大精度为1s的事件.我如何应对每10ms产生一次事件的系统?
我正在尝试绘制每分钟调用一次API的次数。通过将Coda Hale指标与Graphite一起使用,我可以看到连续计数(即,如果调用API 5次,它将在时间上显示恒定的5值线),或者我可以看到每分钟的指数加权移动平均值..... ........但是我想看看的是每分钟调用API的次数。我尝试使用Coda Hale的计数器,计时器和仪表,也尝试使用Graphite渲染功能,但无法获得所需的内容。
有人做过吗-道歉,如果这是一个基本问题