From 8226d0365c8cd8edb0b6c945954875839724aff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?sdvdxl=E6=9D=9C=E9=BE=99=E5=B0=91?= Date: Fri, 19 Jul 2019 13:53:47 +0800 Subject: [PATCH] =?UTF-8?q?add=20parse=20file=EF=BC=8Ctemplate=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: sdvdxl杜龙少 --- README.md | 14 ++++++++++++++ main.go | 12 +++++------- message-template.md | 2 +- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 1be6d58..ad6e543 100644 --- a/README.md +++ b/README.md @@ -19,3 +19,17 @@ open-falcon alarm 发送消息组件,注意这个是基于2.0版本新增的im 1. 在要告警的地方把上面的这个群组加入即可。 1. 修改alarm组件中 `api` 下,增加 配置:`"im": "http://localhost:23329/api/v1/message"`,端口按照本项目配置文件中的进行修改。 1. 启动本项目即可。 + +## 模板 + +默认模板文件是 `message-template.md`,可以使用的参数如下: + +- 告警等级: {{.Level}} +- 告警类型: {{.Type}} +- 告警指标: {{.Condition}} +- 告警主机: {{.Endpoint}} +- 告警时间: {{.Time}} +- 告警说明: {{.Desc}} +- 次数:{{.Count}} + +**如果参数配置错误会导致模板渲染失败无法发送。** \ No newline at end of file diff --git a/main.go b/main.go index 4c73e51..df74390 100644 --- a/main.go +++ b/main.go @@ -39,11 +39,14 @@ var ( cfg config.Config ding *sender.DingTalk wx *sender.Weixin + + tpl *template.Template ) func main() { - cfg = config.Read() + cfg = config.Read() + tpl = template.Must(template.ParseFiles(cfg.DingTalk.TemplateFile)) if cfg.DingTalk.Enable { ding = sender.NewDingTalk() } @@ -74,13 +77,8 @@ func main() { return err } - t, err := template.New("alarm").ParseFiles(cfg.DingTalk.TemplateFile) - if err != nil { - return err - } - var buffer bytes.Buffer - if err := t.Execute(&buffer, msg); err != nil { + if err := tpl.Execute(&buffer, msg); err != nil { return err } content = buffer.String() diff --git a/message-template.md b/message-template.md index 42aa03a..12d2ac8 100644 --- a/message-template.md +++ b/message-template.md @@ -3,6 +3,6 @@ - 告警等级: {{.Level}} - 告警类型: {{.Type}} - 告警指标: {{.Condition}} -- 告警主机: {{.Host}} +- 告警主机: {{.Endpoint}} - 告警时间: {{.Time}} - 告警说明: {{.Desc}},已持续{{.Count}}分钟