Hi all,
Trying to create a task to alert on AWS lambda error rates.
Haven’t been able to merge the two requests/errors streams.
Please let me know.
Current script:
var requests = stream
|from()
.measurement('cloudwatch_aws_lambda')
.groupBy('function_name')
|window()
.period(3h)
.every(1m)
|default()
.field('invocations_sum', 0.0)
var errors = stream
|from()
.measurement('cloudwatch_aws_lambda')
.groupBy('function_name')
|window()
.period(3h)
.every(1m)
|default()
.field('errors_sum', 0.0)
errors|join(requests)
.as('errors', 'requests')
.tolerance(1m)
|where(lambda: "errors.errors_sum" > 0 OR "requests.invocations_sum" > 0)
|eval(lambda: "errors.errors_sum" * 100.0 / "requests.invocations_sum")
.as('errors_rate')
|alert()
.id('Identity {{ index .Tags "function_name" }}')
.message('{{ .Level }} {{ .ID }} error rate at {{index .Fields "error_rate"}}% ({{index .Fields "errors_sum"}}/{{index .Fields "invocations_sum"}} requests)')
.info(lambda: "error_rate" > 2)
.infoReset(lambda: "error_rate" < 2)
.warn(lambda: "error_rate" > 10)
.warnReset(lambda: "error_rate" < 10)
.crit(lambda: "error_rate" > 25)
.critReset(lambda: "error_rate" < 25)
.slack()