Merge pull request 'support refer env variables in alert template' (#88) from alert_env_support into master

This commit is contained in:
silenceqi 2023-05-17 12:19:12 +08:00
commit d76b2295b4
2 changed files with 30 additions and 2 deletions

View File

@ -894,6 +894,10 @@ func newParameterCtx(rule *alerting.Rule, checkResults *alerting.ConditionResult
alerting2.ParamRelationValues: resultItem.RelationValues, alerting2.ParamRelationValues: resultItem.RelationValues,
}) })
} }
envVariables, err := alerting2.GetEnvVariables()
if err != nil {
log.Errorf("get env variables error: %v", err)
}
paramsCtx := util.MapStr{ paramsCtx := util.MapStr{
alerting2.ParamRuleID: rule.ID, alerting2.ParamRuleID: rule.ID,
alerting2.ParamResourceID: rule.Resource.ID, alerting2.ParamResourceID: rule.Resource.ID,
@ -903,8 +907,9 @@ func newParameterCtx(rule *alerting.Rule, checkResults *alerting.ConditionResult
"first_threshold": firstThreshold, "first_threshold": firstThreshold,
"rule_name": rule.Name, "rule_name": rule.Name,
"priority": priority, "priority": priority,
"env": envVariables,
} }
err := util.MergeFields(paramsCtx, extraParams, true) err = util.MergeFields(paramsCtx, extraParams, true)
if err != nil { if err != nil {
log.Errorf("merge template params error: %v", err) 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 { if err != nil {
return nil, err, message 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{ act = &action.WebhookAction{
Data: channel.Webhook, Data: &wh,
Message: string(message), Message: string(message),
} }
default: default:

17
service/alerting/env.go Normal file
View File

@ -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
}