我正在使用度量标准注册表将度量标准登录到jmx。我使用下面的代码
protected void submitMetric(String metricName, long value) {
mr.register(metricName, new Gauge<Long>() {
@Override
public Long getValue() {
return value;
}
});
}
第一次正常。如果我再次尝试,则会收到错误消息 名为*****的指标已经存在。但是我想为发送到控制器的每个请求记录相同度量的值,以便可以在Grafana中进行可视化。
有什么办法可以为每个请求记录相同度量标准名称的值吗?
还如何每1分钟检查一次记录的所有数据点。我们应该对每分钟的值求和吗?我在metrics.xml中有以下内容
<publish name="****">
<delay>60</delay>
<unit>SECONDS</unit>
</publish>
答案 0 :(得分:0)
通常,您要创建一个量规并注册一次,例如,通过AtomicLong创建量规。然后,您只需在AtomicLong上设置值即可更新量规的值。在这种情况下,由于您要按名称访问量规,因此可以保留一张AtomicLongs的地图,并在用新量规更新该地图时注册该量规一次:
Microsoft.CodeAnalysis.Scripting.CompilationErrorException
HResult=0x80131500
Message=(1,34): error CS0103: The name 'X' does not exist in the current context
Source=Microsoft.CodeAnalysis.Scripting
StackTrace:
at Microsoft.CodeAnalysis.Scripting.ScriptBuilder.ThrowIfAnyCompilationErrors(DiagnosticBag diagnostics, DiagnosticFormatter formatter)
at Microsoft.CodeAnalysis.Scripting.ScriptBuilder.CreateExecutor[T](ScriptCompiler compiler, Compilation compilation, Boolean emitDebugInformation, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Scripting.Script`1.GetExecutor(CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Scripting.Script`1.RunAsync(Object globals, Func`2 catchException, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.RunAsync[T](String code, ScriptOptions options, Object globals, Type globalsType, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.EvaluateAsync[T](String code, ScriptOptions options, Object globals, Type globalsType, CancellationToken cancellationToken)
at Trady.Form1.InitializeScriptEngineAsync() in C:\Users\idf\Form1.cs:line 79
at Form1..ctor() in C:\Users\idf\Form1.cs:line 56
at Trady.Program.Main() in C:\Users\idf\Program.cs:line 19