From ba9fbd94bbb02250d92e6080ac9ef95292836203 Mon Sep 17 00:00:00 2001 From: liugq Date: Wed, 17 May 2023 12:14:51 +0800 Subject: [PATCH] support refer env variables in alert template --- service/alerting/elasticsearch/engine.go | 15 +++++++++++++-- service/alerting/env.go | 17 +++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 service/alerting/env.go diff --git a/service/alerting/elasticsearch/engine.go b/service/alerting/elasticsearch/engine.go index 075778ca..2666938b 100644 --- a/service/alerting/elasticsearch/engine.go +++ b/service/alerting/elasticsearch/engine.go @@ -894,6 +894,10 @@ func newParameterCtx(rule *alerting.Rule, checkResults *alerting.ConditionResult alerting2.ParamRelationValues: resultItem.RelationValues, }) } + envVariables, err := alerting2.GetEnvVariables() + if err != nil { + log.Errorf("get env variables error: %v", err) + } paramsCtx := util.MapStr{ alerting2.ParamRuleID: rule.ID, alerting2.ParamResourceID: rule.Resource.ID, @@ -903,8 +907,9 @@ func newParameterCtx(rule *alerting.Rule, checkResults *alerting.ConditionResult "first_threshold": firstThreshold, "rule_name": rule.Name, "priority": priority, + "env": envVariables, } - err := util.MergeFields(paramsCtx, extraParams, true) + err = util.MergeFields(paramsCtx, extraParams, true) if err != nil { log.Errorf("merge template params error: %v", err) } @@ -982,8 +987,14 @@ func performChannel(channel *alerting.Channel, ctx map[string]interface{}) ([]by if err != nil { return nil, err, message } + wh := *channel.Webhook + urlBytes, err := resolveMessage(wh.URL, ctx) + if err != nil { + return nil, err, message + } + wh.URL = string(urlBytes) act = &action.WebhookAction{ - Data: channel.Webhook, + Data: &wh, Message: string(message), } default: diff --git a/service/alerting/env.go b/service/alerting/env.go new file mode 100644 index 00000000..0cf3ff2b --- /dev/null +++ b/service/alerting/env.go @@ -0,0 +1,17 @@ +/* Copyright © INFINI Ltd. All rights reserved. + * Web: https://infinilabs.com + * Email: hello#infini.ltd */ + +package alerting + +import ( + "infini.sh/framework/core/config" + "infini.sh/framework/core/global" +) + +func GetEnvVariables() (map[string]interface{}, error){ + configFile := global.Env().GetConfigFile() + envVariables, err := config.LoadEnvVariables(configFile) + //todo override env variables with the variables defined in console ui + return envVariables, err +}