我有一个批处理,可以运行一系列任务(不是 spring-batch)。我想为每个批处理运行的每个任务记录指标(例如读取的行、写入的行以及许多其他内容)。结果可能如下所示(使用 json 表示法来演示指标的层次结构):
{
"batchRun": 1234,
"tasks": [
{
"id": "task1",
"duration": 500,
"inputs": [
{
"file": "data1.csv",
"rowsRead": 10,
"duration": 100
}
],
"outputs": [
{
"file": "data-out1.csv",
"rowsWritten": 20,
"duration": 200
}
]
},
{
"id": "task2",
"duration": 5000,
"inputs": [
{
"file": "data2.csv",
"rowsRead": 100000,
"duration": 1000
}
],
"outputs": [
{
"file": "data-out2.csv",
"rowsWritten": 200000,
"duration": 2000
}
]
}
]
}
我希望能够将这些指标作为一个批处理运行的整体查看,并且我希望能够将 2 个作业运行相互比较。
我将如何使用千分尺和任何消耗公制的应用程序来执行此操作? (Prometheus、Datadog 等)。
是否有可能具有这种等级性质?并比较 2 批运行?
我见过的所有示例似乎都与系统指标(如内存或线程使用情况)更相关 - 因此更像是一个时间点样本,没有这种额外的层次结构上下文。
谢谢。
更新 1:
我知道我可以在记录时向度量添加标签,例如 https://www.baeldung.com/micrometer 但我没有立即看到前端将如何以合理的方式使用它们 - 他们似乎不支持键/值对。
所以在不知道更好的情况下,我认为它看起来像:
Counter counter = Counter
.builder("instance")
.description("Count read rows")
.tags(
"batchRun=1234",
"tasks[1]",
"taskId=task1",
"input=data1.csv",
"/tasks/0/inputs/0/file/data1.csv"
)
.register(registry);
我希望有人完全按照我的意愿去做,这样他们就会理解最终目标并提出一些有助于我理解的建议。