2
sykp241095 2013-05-29 13:27:48 +08:00
|
3
ioiioi OP @sykp241095
嗯,我安装完graph-explorer后,看不到图像,启用chrome的javascript console,在network tab中看到有一个地方出错,那就是http://localhost/render,根据graph-explorer的wiki说明,应该是graphite-web的bug导致。 能否分享下/etc/init.d/carbon-cache和/etc/init.d/carbon-relay,我每次都要手工杀进程,然后./carbon-cache.py start,有点小累。 另外,我如果重装最新版本的graphite,旧版本的数据如何导入? |
4
ericFork 2013-05-29 21:24:19 +08:00
@ioiioi 其实 carbon-cache.py 是有 stop 的……
理论上只要 carbon 和 whipser 没有大变更,把 storage/whisper 下的所有文件 copy 过去就可以了 |
5
ioiioi OP 我今晚一直在跟
/opt/graphite/storage/log/webapp/error.log Target WSGI script '/opt/graphite/conf/graphite.wsgi' cannot be loaded as Python module. 做斗争,已经参考 http://ericfarkas.com/posts/statsd-graphite-ubuntu/ 改了 chown -R www-data:www-data /opt/graphite/storage 并重启了apache2和carbon-cache.py 但还是出现同样的错误。 有木有什么建议? |
6
ericFork 2013-05-29 23:59:48 +08:00
graphite-web 就是一个 django 的 webapp,推荐用 gunicorn 直接跑……不要再用 apache 了
|
7
ioiioi OP hmm, 我没接触过gunicorn。相对于apache,有什么优势呢?
|
8
ericFork 2013-05-30 01:02:19 +08:00
|
9
ioiioi OP @sykp241095,
我假如使用了gunicorn,或者是graphite自带的bin/run-graphite-devel-server.py 该如何让graph-explorer去获取graphite里面的metrics呢? |
10
sykp241095 2013-05-30 18:04:06 +08:00
在config.py里设置你的graphite_url,比如:
graphite_url = 'http://graphitehost:8000' 然后还得需要一个cron,这个cron是必须的,来定期从这个url里GET所有的metric信息。 具体的参照 https://github.com/vimeo/graph-explorer#configuration-of-graph-explorer |
11
ioiioi OP @sykp241095
我相信你有对比过其它的frontend,你觉得哪一种最成熟,最实用? |
12
ericFork 2013-05-30 23:26:34 +08:00
@ioiioi 我不会告诉你 @sykp241095 现在就在用 graph-explorer 的
|
14
sykp241095 2013-05-31 10:07:25 +08:00
@ioiioi
我也是碰巧找到了这个,觉得已经很好,就没调研其他的了。 我觉得graph-explorer已经不错了,可以自定义查询条件,而不是写死在代码里,比较灵活。 如果你用的是最新的代码,性能上会很好,还支持用gunicorn起多个worker。 |
15
ioiioi OP @sykp241095
你的graphite版本是? 我重装了graphite,用的是0.9.x,应该是0.9.10,然后git clone最新版的graph-explorer,在grapht-explorer的debug tab,可以看到metrics,通过search也能看到targets matching: 62/376,可就是无法限制图片,通过chrome的javascript console,看到render有error。 你没遇到这种问题吗? |
16
sykp241095 2013-05-31 16:13:25 +08:00
@ioiioi
在我们包系统里是0.9.10-r1,应该和0.9.10有些差别。不过如果不用apache来起graphite-web的话,影响应该不大。我们是用gunicorn来起的。 我这边的graph-explorer一点问题都没有,我用的chrome。 |
17
sykp241095 2013-06-03 10:01:41 +08:00
推荐个新鲜出炉的: https://github.com/huoxy/graphite-observer
一个实时的可以针对单个指标的监控dashboard。 插件支持。比如有个插件是sa.py,那么对应的可访问url是http://<ip>:<port>/dashboard/sa sa.py里会定义一个list,它的每个元素都是一个dict。 dict(desc = 'hostA cpu', path = 'servers.hostA.cpu.total.user', max = 400, min = 0) 每一个dict对应页面里的一个泡泡。 在第一次访问/dashboard/sa的时候,会将插件里的配置下方到browser。再由客户端判断这个指标的状态,判断依据是这个指标过去1分钟的平均值是否在max和min之间。如果是False,在页面里的泡泡会不断的膨胀缩小,非常明显,起警示的作用。 页面左下角还有实时的检测log,当鼠标悬浮在一个泡泡时,右下角会实时显示这个泡泡所对应指标的状态。 |
18
ioiioi OP @sykp241095
这个是你写的?真厉害! 我花了一个周末时间,终于搞定nginx(reverse proxy)+graphite+gunicorn+graph-explorer+supervisor。 但在nginx的配置中还是有些疑问: 1. graph-explorer通过gunicorn -w 4 app:'default_app()' -b 0.0.0.0:8001启动 2. graphite 通过/usr/local/bin/gunicorn_django -u www-data -g www-data -b 0.0.0.0:8000 --log-file=... /opt/graphite/webapp/graphite启动,配置中的graphite_url写成http://localhost:8001 通过chrome的javascript console,看到http://localhost/render error,说是 Access-Control-Allow-Origin denied,于是我就配置nginx作为反向代理,graph-explorer的config.py配置成透过nginx来获取graphite的数据,这样才能成功看到图像,但我总觉得这种实现方式不够干净,你是怎么实现的呢? |
19
ioiioi OP 其实我需要的frontend应该是etsy开发的dashboard,它可以将一大堆开源网管软件整合输出到一个dashboard中,因为我相信没有一款开源网管软件可以通吃,所以多者并存是常态,但是sa在不同的界面间切换就很痛苦,所以迫切需要一个可以整合多种输出到统一页面中的dashboard。
graph-explorer只是方便搜索到某一个metrics及其历史记录而已,其作用很像logstash+kibana。 |
20
ioiioi OP etsy的dashboard估计又要废了,作者已经好久没有更新了,开源软件选型的成本很高,根本不知道下一秒会发生什么。
|
21
sykp241095 2013-06-03 13:35:15 +08:00
|
22
sykp241095 2013-06-03 13:39:01 +08:00
@ioiioi
我们打算用三套: 1,graphite-web: graphite自带的dashboard,作为最基本的。 2,graph-explorer: ad-hoc的需求,即时查询的dashboard;有汇总的特性,如将多个图放到一个页面。 3,graphite-observer: 自定义dashboard,比如我就关注a,b,c三个指标,那么我可以将这三个指标放在一个页面里。 |
23
ericFork 2013-06-03 13:46:34 +08:00
|
25
ericFork 2013-06-03 17:19:06 +08:00
@sykp241095 上面说:
「在第一次访问/dashboard/sa的时候,会将插件里的配置下方到browser。再由客户端判断这个指标的状态,判断依据是这个指标过去1分钟的平均值是否在max和min之间。如果是False,在页面里的泡泡会不断的膨胀缩小,非常明显,起警示的作用。 页面左下角还有实时的检测log,当鼠标悬浮在一个泡泡时,右下角会实时显示这个泡泡所对应指标的状态。」 @ioiioi 就是上面这个的图 |
26
ioiioi OP @sykp241095
我看到你在github的diamond中提到将某个collector的单位由KB改成B,我现在正在用diamond来搜集服务器的性能数据,但是遇到一个问题,diamond的单位要么是byte,要么是bit,当数值很大时,在graphite中画的图很难看,有什么办法可以动态调整单位?collectd似乎可以动态调整,譬如disk plugin捕获的数值在graphite可以显示成GB。 另外,你们选用哪一种来捕获数据,diamond、collectd or else? |
28
sykp241095 2013-06-04 12:11:16 +08:00
@ioiioi
我们用diamond。 对于单位,我比较倾向于使用byte。那个是死的,插件默认支持byte/bit两种;有一些collector支持kb等大单位,但需要collector自身支持的。 至于如何换算单位,我觉得应该交给绘图的工具来做。 |