为什么com.netflix.spectator.api.Counter产生"标准化"值?

时间:2017-01-25 09:58:57

标签: java spring-boot spring-cloud metrics spring-cloud-netflix

我正在尝试使用Spectator进行计数。用法如下:

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        asd = request.json
        session['formdata'] = asd
        if 'formdata' in session:
            return json.dumps({'success': True}), 200, {'ContentType': 'application/json'}
    return render_template("index.html")

@app.route('/preview', methods=['GET', 'POST'])
def preview():
    if 'formdata' in session:

        renderedform = formbuilder(json.dumps(session['formdata']))
        renderedform = renderedform.renderform()
        session.pop('formdata')
        return render_template("asd.html",renderform = renderedform)
    return "Error"

而不是打电话:

@Autowired
private Registry registry;

当我去registry.counter("ping").count(); 时,我看到了:

http://localhost:8080/metrics

为什么会这样?如何配置Spectator进行计数?

1 个答案:

答案 0 :(得分:4)

在Spectator用语中,Counter用于测量某个事件发生的速率(即总是在某个时域上进行归一化)。有更详细的解释here。在将度量标准发送到度量服务器之前,度量标准发布者执行此标准化(例如,将Atlas设置为在固定时间间隔上发布,并因此在该时间窗口上进行标准化)。由于对于计数器 rate 是重要的,因此不需要保留时间窗内的离散计数器事件。

如果您只想在所有时间计算某些事件的总发生次数,则应使用Gauge(请参阅explanation)。但是,我要提醒您,对于长时间运行的服务,计算某些事件发生的总次数可能最终会溢出。通常,Gauges用于计算具有自然上限(并且不一定单调增加)的事物,例如缓存中的元素总数或运行线程的数量。