1
0
Fork 0
telegraf/plugins/aggregators/starlark/testdata/merge.star

31 lines
768 B
Text
Raw Normal View History

# Example of a merge aggregator implemented with a starlark script.
load('time.star', 'time')
state = {}
def add(metric):
metrics = state.get("metrics")
if metrics == None:
metrics = {}
state["metrics"] = metrics
state["ordered"] = []
gId = groupID(metric)
m = metrics.get(gId)
if m == None:
m = deepcopy(metric)
metrics[gId] = m
state["ordered"].append(m)
else:
for k, v in metric.fields.items():
m.fields[k] = v
def push():
return state.get("ordered")
def reset():
state.clear()
def groupID(metric):
key = metric.name + "-"
for k, v in metric.tags.items():
key = key + k + "-" + v + "-"
key = key + "-" + str(metric.time)
return hash(key)