Leslie Zhang

Results 81 comments of Leslie Zhang

我今天升级插件后也遇到了这个问题,重新源码安装vim。 参考: @zeyee @tanrich

同样的问题,就偶尔某个客户端不行。

@running-db 多个地址写在里面。你看文档上都有写的。后面的功能上加上了告警组的功能,可以将告警组配置在 `app.conf` 配置里,然后 rules 里填写对应的一个/多个告警组就可以。

我测试了一下,自定义模板传过来的 `ddurl` 上没有 `secret` 参数,所以程序判断为空了。 看下自定义钉钉模板传过来的 `secret` 参数为什么消失了?

原因是这里: ![image](https://github.com/feiyu563/PrometheusAlert/assets/18358275/976a63c9-a581-46c5-ad3c-97be8fa26ddb) `ddurl=xxx&secret=xxx` 在 beego 的 `input.Get()` 是两个参数了,所以并不能取到 `&secret=xxx` 的值。

临时解决方法有,这两个方法对传递多个钉钉地址、有加签和不加签名都不会有影响。 1,使用告警组来配置地址,在参数上使用 `alertgroup=告警组` 这种方式 2,或者,将 `&` 符号替换为 `%26` 编码,如 `ddurl=xxx%26secret=xxx` 让程序判断它们是一起的来处理它。 ```yml # 1 使用方法 http://xxx:8080/prometheusalert?type=dd&tpl=prometheus-dd&alertgroup=告警组&at=xxx # 2 使用方法 http://xxx:8080/prometheusalert?type=dd&tpl=prometheus-dd&ddurl=xxx%26secret=xxx ```

所以在自定义模板的参数中,需要对 ddurl 和 secret 分别取值,然后组装成一个字符串,再将值给 ddurl。 ``` ddurl := beego.Input().Get("ddurl") secret := beego.Input().Get("secret") if len(secret) != 0 { ddurl = ddurl + "&secret=" secret } ```

但是这样又有一个问题,在自定义模板 URL 参数的 ddurl 里面有多个地址,有的加签,有的不加签名。上面的处理又会有问题。 上面的示例只适合单个地址,处理多个地址还是有问题,因此暂时不提修改代码,仅更新文档。