tencent cloud

文档反馈

告警通知变量

最后更新时间:2024-01-22 11:00:27
    在告警策略中配置通知内容自定义接口回调配置时,可使用告警通知变量来自定义告警通知内容,使得收到的告警通知更加清晰准确的描述告警原因。

    快速开始

    配置告警策略 中,为通知内容填写如下配置信息:
    详细日志:
    {{.QueryLog[0][0]}}
    配置完成后如下图所示:
    收到告警通知时,通知内容将自动替换为下值,代表触发告警时最近的一条详细日志:
    详细日志:
    {"content":{"body_bytes_sent":"33352","http_referer":"-","http_user_agent":"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36","remote_addr":"201.80.83.199","remote_user":"-","request_method":"GET","request_uri":"/content/themes/test-com/images/header_about.jpg","status":"404","time_local":"01/Nov/2018:01:16:31"},"fileName":"/root/testLog/nginx.log","pkg_id":"285A243662909DE3-70A","source":"172.17.0.2","time":1653831150008,"topicId":"a54de372-ffe0-49ae-a12e-c340bb2b03f2"}

    通知变量

    变量
    含义
    变量值示例
    说明
    {{.UIN}}
    账号 ID
    100007xxx827
    -
    {{.Nickname}}
    账号昵称
    xx企业
    -
    {{.Region}}
    地域
    广州
    -
    {{.Alarm}}
    告警策略名称
    Nginx 错误日志过多
    -
    {{.AlarmID}}
    告警策略 ID
    notice-3abd7ad6-15b7-4168-xxxx-52e5b961a561
    -
    {{.ExecuteQuery}}
    执行语句
    ["status:>=400 | select count(*) as errorLogCount","status:>=400 | select count(*) as errorLogCount,request_uri group by request_uri order by count(*) desc"]
    数组结构,{{.ExecuteQuery[0]}}代表第1个执行语句的详细日志,{{.ExecuteQuery[1]}}代表第2个执行语句的详细日志,以此类推
    {{.Condition}}
    触发条件
    $1.errorLogCount > 1
    -
    {{.HappenThreshold}}
    告警所需的触发条件持续满足次数
    1
    -
    {{.AlertThreshold}}
    告警间隔时间
    15
    单位:分钟
    {{.Topic}}
    日志主题名称
    nginxLog
    -
    {{.TopicId}}
    日志主题 ID
    a54de372-ffe0-49ae-xxxx-c340bb2b03f2
    -
    {{.StartTime}}
    第一次告警触发时间
    2022-05-28 18:56:37
    时区:Asia/Shanghai
    {{.StartTimeUnix}}
    第一次告警触发时间戳
    1653735397099
    毫秒级 UNIX 时间戳
    {{.NotifyTime}}
    本次告警通知时间
    2022-05-28 19:41:37
    时区:Asia/Shanghai
    {{.NotifyTimeUnix}}
    本次告警通知时间戳
    1653738097099
    毫秒级 UNIX 时间戳
    {{.NotifyType}}
    告警通知类型
    1
    1代表告警通知,2代表恢复通知
    {{.ConsecutiveAlertNums}}
    连续告警次数
    2
    -
    {{.Duration}}
    告警持续时间
    0
    单位:分钟
    {{.TriggerParams}}
    告警触发时参数
    $1.errorLogCount=5;
    -
    {{.ConditionGroup}}
    告警分组触发时对应的分组信息
    {"$1.AppName":"userManageService"}
    告警策略启用分组触发功能时才具备该变量
    {{.DetailUrl}}
    告警详情页面链接
    https://alarm.cls.tencentcs.com/MDv2xxJh
    无需登录账号
    {{.QueryUrl}}
    第一个执行语句的检索分析链接
    https://alarm.cls.tencentcs.com/T0pkxxMA
    -
    {{.Message}}
    通知内容
    -
    特指告警策略配置中填写的“通知内容”
    {{.QueryResult}}
    执行语句执行结果
    详见 {{.QueryResult}} 说明
    -
    {{.QueryLog}}
    执行语句中检索条件匹配到的详细日志
    详见 {{.QueryLog}} 说明
    -
    {{.AnalysisResult}}
    多维分析结果
    详见 {{.AnalysisResult}} 说明
    仅告警触发时具备该变量,告警恢复时无该变量
    相关说明如下:
    
    {{.QueryResult}}
    
    含义:执行语句执行结果。
    说明:数组结构,{{.QueryResult[0]}} 代表第1个执行语句的执行结果,{{.QueryResult[1]}} 代表第2个执行语句的执行结果,以此类推。
    变量值示例: 假设告警策略存在两条执行语句:
    第1个执行语句:status:>=400 | select count(*) as errorLogCount
    第2个执行语句:status:>=400 | select count(*) as errorLogCount,request_uri group by request_uri order by count(*) desc
    则变量值为:
    [
    [{
    "errorLogCount": 7
    }],
    [{
    "errorLogCount": 3,
    "request_uri": "/apple-touch-icon-144x144.png"
    }, {
    "errorLogCount": 3,
    "request_uri": "/feed"
    }, {
    "errorLogCount": 1,
    "request_uri": "/opt/node_apps/test-v5/app/themes/basic/public/static/404.html"
    }]
    ]
    
    {{.QueryLog}}
    
    含义:执行语句中检索条件匹配到的详细日志(不包含 SQL 中的过滤条件)。
    说明:数组结构,{{.QueryLog[0]}} 代表第1个执行语句的详细日志,{{.QueryLog[1]}} 代表第2个执行语句的详细日志,以此类推。每个执行语句最多包含最近的10条详细日志。
    变量值示例
    [
    [{
    "content": {
    "__TAG__": {
    "pod": "nginxPod",
    "cluster": "testCluster"
    },
    "body_bytes_sent": "32847",
    "http_referer": "-",
    "http_user_agent": "Opera/9.80 (Windows NT 6.1; U; en-US) Presto/2.7.62 Version/11.01",
    "remote_addr": "105.86.148.186",
    "remote_user": "-",
    "request_method": "GET",
    "request_uri": "/apple-touch-icon-144x144.png",
    "status": "404",
    "time_local": "01/Nov/2018:00:55:14"
    },
    "fileName": "/root/testLog/nginx.log",
    "pkg_id": "285A243662909DE3-5CD",
    "source": "172.17.0.2",
    "time": 1653739000013,
    "topicId": "a54de372-ffe0-49ae-a12e-c340bb2b03f2"
    }, {
    "content": {
    "__TAG__": {
    "pod": "nginxPod",
    "cluster": "testCluster"
    },
    "body_bytes_sent": "33496",
    "http_referer": "-",
    "http_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36",
    "remote_addr": "222.18.168.242",
    "remote_user": "-",
    "request_method": "GET",
    "request_uri": "/opt/node_apps/test-v5/app/themes/basic/public/static/404.html",
    "status": "404",
    "time_local": "01/Nov/2018:00:54:37"
    },
    "fileName": "/root/testLog/nginx.log",
    "pkg_id": "285A243662909DE3-5C8",
    "source": "172.17.0.2",
    "time": 1653738975008,
    "topicId": "a54de372-ffe0-49ae-a12e-c340bb2b03f2"
    }]
    ]
    
    {{.AnalysisResult}}
    
    含义:多维分析结果。
    说明:对象结构,第一层级对象分别对应每个多维分析的结果。一级对象的 key 为多维分析的名称,value 为该多维分析的结果。仅告警触发(即{{.NotifyType}}=1)时具备该变量,告警恢复(即{{.NotifyType}}=2)时无该变量。
    变量值示例 假设告警策略存在3个多维分析:
    名称:Top URL
    类型:字段TOP5及占比统计
    字段:request_uri
    
    名称:错误日志URL分布类型:自定义检索分析
    分析语句:status:>=400 | select count() as errorLogCount,request_uri group by request_uri order by count() desc
    
    则变量值为:
    { "Top URL": [{ "count": 77, "ratio": 0.45294117647058824, "value": "/" }, { "count": 20, "ratio": 0.11764705882352941, "value": "/favicon.ico" }, { "count": 7, "ratio": 0.041176470588235294, "value": "/blog/feed" }, { "count": 5, "ratio": 0.029411764705882353, "value": "/test-tile-service" }, { "count": 3, "ratio": 0.01764705882352941, "value": "/android-chrome-192x192.png" }], "详细错误日志": [{ "content": { "TAG": { "pod": "nginxPod", "cluster": "testCluster" }, "body_bytes_sent": "32847", "http_referer": "-", "http_user_agent": "Opera/9.80 (Windows NT 6.1; U; en-US) Presto/2.7.62 Version/11.01", "remote_addr": "105.86.148.186", "remote_user": "-", "request_method": "GET", "request_uri": "/apple-touch-icon-144x144.png", "status": "404", "time_local": "01/Nov/2018:00:55:14" }, "fileName": "/root/testLog/nginx.log", "pkg_id": "285A243662909DE3-5CD", "source": "172.17.0.2", "time": 1653739000013, "topicId": "a54de372-ffe0-49ae-a12e-c340bb2b03f2" }, { "content": { "TAG": { "pod": "nginxPod", "cluster": "testCluster" }, "body_bytes_sent": "33496", "http_referer": "-", "http_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", "remote_addr": "222.18.168.242", "remote_user": "-", "request_method": "GET", "request_uri": "/opt/node_apps/test-v5/app/themes/basic/public/static/404.html", "status": "404", "time_local": "01/Nov/2018:00:54:37" }, "fileName": "/root/testLog/nginx.log", "pkg_id": "285A243662909DE3-5C8", "source": "172.17.0.2", "time": 1653738975008, "topicId": "a54de372-ffe0-49ae-a12e-c340bb2b03f2" }], "错误日志URL分布": [{ "errorLogCount": 3, "request_uri": "/apple-touch-icon-144x144.png" }, { "errorLogCount": 3, "request_uri": "/feed" }, { "errorLogCount": 1, "request_uri": "/opt/node_apps/test-v5/app/themes/basic/public/static/404.html" }] }
    

    变量语法

    变量语法类似 Go Template 语法,可对告警通知变量进行提取和格式化处理,以更加清晰的呈现在告警通知内容中。所有变量及变量语法均位于{{ }}中,外部的文本不会进行处理。

    变量提取

    语法格式
    {{.variable[x]}}{{index .variable x}}
    {{.variable.childNodeName}}{{index .variable "childNodeName"}}
    语法说明
    变量为数组时,使用 {{.variable[x]}} 按数组下标提取对应的数组元素,其中 x 为大于等于0的整数,等价于 {{index .variable x}}
    变量为对象时,使用 {{.variable.childNodeKey}} 按子级对象名称(key)提取对应的子级对象值(value),等价于 {{index .variable "childNodeName"}}
    注意:
    子级对象名称包含空格时,请使用 {{index .variable "childNodeName"}}形式的语法,例如 {{index .AnalysisResult "Top URL"}}
    使用示例{{.QueryResult}} 变量值为:
    [
    [{
    "errorLogCount": 7 //提取该值
    }],
    [{
    "errorLogCount": 3,
    "request_uri": "/apple-touch-icon-144x144.png"
    }, {
    "errorLogCount": 3,
    "request_uri": "/feed"
    }, {
    "errorLogCount": 1,
    "request_uri": "/opt/node_apps/test-v5/app/themes/basic/public/static/404.html"
    }]
    ]
    通过以下表达式获取第一个数组中的 errorLogCount 的值:
    {{.QueryResult[0][0].errorLogCount}}
    返回结果:
    7

    循环遍历

    语法格式
    {{range .variable}}
    自定义内容{{.childNode1}}自定义内容{{.childNode2}}...
    {{end}}
    {{range $key,$value := .variable}}
    自定义内容{{$key}}自定义内容{{$value}}...
    {{end}}
    语法说明
    变量为数组或包含多个子级对象的对象时,可使用该语法将其中的每个元素/对象按指定格式展示出来。
    使用示例
    {{.QueryResult}} 变量值为:
    [
    [{
    "errorLogCount": 7
    }],
    [{
    "errorLogCount": 3,
    "request_uri": "/apple-touch-icon-144x144.png"
    }, {
    "errorLogCount": 3,
    "request_uri": "/feed"
    }, {
    "errorLogCount": 1,
    "request_uri": "/opt/node_apps/test-v5/app/themes/basic/public/static/404.html"
    }]
    ]
    通过以下表达式分别展示第二个数组中每个 request_uri 对应的 errorLogCount:
    {{range .QueryResult[1]}}
    * {{.request_uri}}错误日志数:{{.errorLogCount}}
    {{end}}
    返回结果:
    
    * /apple-touch-icon-144x144.png错误日志数:3
    
    * /feed错误日志数:3
    
    * /opt/node_apps/test-v5/app/themes/basic/public/static/404.html错误日志数:1
    
    

    条件判断

    语法格式
    {{if boolen}}
    xxx
    {{end}}
    {{if boolen}}
    xxx
    {{else}}
    xxx
    {{end}}
    {{if boolen}}
    xxx
    {{else if boolen}}
    xxx
    {{end}}
    语法说明
    根据条件判断结果分别执行对应的表达式,条件判断支持使用 and or not 进行逻辑运算,支持比较大小值。
    eq arg1 arg2 : arg1 == arg2时为true
    ne arg1 arg2 : arg1 != arg2时为true
    lt arg1 arg2 : arg1 < arg2时为true
    le arg1 arg2 : arg1 <= arg2时为true
    gt arg1 arg2 : arg1 > arg2时为true
    ge arg1 arg2 : arg1 >= arg2时为true
    使用示例
    {{.QueryResult}} 变量值为:
    [
    [{
    "errorLogCount": 7
    }],
    [{
    "errorLogCount": 3,
    "request_uri": "/apple-touch-icon-144x144.png"
    }, {
    "errorLogCount": 3,
    "request_uri": "/feed"
    }, {
    "errorLogCount": 1,
    "request_uri": "/opt/node_apps/test-v5/app/themes/basic/public/static/404.html"
    }]
    ]
    通过以下表达式分别展示第二个数组中 errorLogCount 大于等于2且小于等于100的 request_uri 及对应的 errorLogCount:
    {{range .QueryResult[1]}}
    {{if and (ge .errorLogCount 2) (le .errorLogCount 100)}}
    * {{.request_uri}}错误日志数:{{.errorLogCount}}
    {{end}}
    {{end}}
    返回结果:
    
    
    * /apple-touch-icon-144x144.png错误日志数:3
    
    
    
    * /feed错误日志数:3
    
    
    
    
    使用 if 还可以判断字段值是否存在,字段值为空白字符串或不存在时,相当于 false。例如:
    {{if .QueryLog[0][0].apple}}
    apple exist, value is : {{.QueryLog[0][0].apple}}
    {{else}}
    apple is not exist
    {{end}}

    移除空白符号

    语法格式
    {{- xxx}}{{xxx -}}
    语法说明
    变量语法在执行过程中会保留语法本身带来的空格、缩进和换行等空白符号,例如循环迭代和条件判断使用示例中的返回结果中包含较多空白行,影响展示效果,此时可在{{ }}的头部或尾部使用-移除其前面或后面的空白符号。
    使用示例
    沿用条件判断中的示例,表达式修改为:
    {{- range .QueryResult[1]}}
    {{- if and (ge .errorLogCount 2) (le .errorLogCount 100)}}
    * {{.request_uri}}错误日志数:{{.errorLogCount}}
    {{- end}}
    {{- end}}
    返回结果:
    * /apple-touch-icon-144x144.png错误日志数:3
    * /feed错误日志数:3

    变量函数

    转义特殊字符

    语法格式
    {{escape .variable}}
    语法说明
    告警变量中很多变量包含特殊符号,如果直接将变量拼接在 JSON 字符串中进行自定义接口回调,可能会导致 JSON 格式错误,导致回调失败。此时可对原始变量值进行转义,再拼接至 JSON 字符串中。
    使用示例
    {{.ExecuteQuery[0]}} 的变量值为 status:>=400 | select count(*) as "错误日志数" 如果不使用转义,自定义接口回调配置中请求内容为:
    {
    "Query":"{{.ExecuteQuery[0]}}"
    }
    返回结果如下(不是一个合法的 JSON):
    {
    "Query":"status:>=400 | select count(*) as "错误日志数""
    }
    此时可使用转义,将自定义接口回调配置中请求内容修改为:
    {
    "Query":"{{escape .ExecuteQuery[0]}}"
    }
    返回结果如下(符合 JSON 语法要求):
    {
    "Query":"status:>=400 | select count(*) as \\"错误日志数\\""
    }
    

    字符串截取

    按长度截取

    语法格式
    {{substr .variable start}}{{substr .variable start length}}
    语法说明
    按指定起始位置和长度(可选)对字符串进行截取。
    使用示例
    {{.QueryLog[0][0].fileName}} 变量值为:
    /root/testLog/nginx.log
    通过以下表达式获取第6个字符开始、总长7个字符的字符串:
    {{substr .QueryLog[0][0].fileName 6 7 }}
    返回结果:
    testLog

    按首尾字符截取

    语法格式
    {{extract .variable "startstring" ["endstring"]}}
    语法说明
    按指定起始字符和结束字符(可选)对字符串进行截取。
    使用示例
    {{.QueryLog[0][0].fileName}}变量值为:
    /root/testLog/nginx.log
    通过以下表达式获取 /root//nginx 之间的字符串:
    {{extract .QueryLog[0][0].fileName "/root/" "/nginx"}}
    返回结果:
    testLog

    是否包含指定字符串

    语法格式
    {{containstr .variable "searchstring"}}
    语法说明
    变量值中是否包含指定的字符串,判断结果可用于条件判断语法中。
    使用示例
    {{.QueryLog[0][0].fileName}} 变量值为:
    /root/testLog/nginx.log
    通过以下表达式获取 /root//nginx 之间的字符串:
    {{if containstr .QueryLog[0][0].fileName "test"}}
    测试日志
    {{else}}
    非测试日志
    {{end}}
    返回结果:
    测试日志

    UNIX 时间戳转换

    语法格式
    {{fromUnixTime .variable}}{{fromUnixTime .variable "timezone"}}
    语法说明
    将 UNIX 时间戳(支持毫秒及秒级时间戳)转换为可读的日期时间。其中时区可选,默认为 Asia/Shanghai。
    使用示例
    {{.QueryLog[0][0].time}} 变量值为:
    1653893435008
    通过以下表达式分别获区不同时区下的日期时间:
    {{fromUnixTime .QueryLog[0][0].time}}
    {{fromUnixTime .QueryLog[0][0].time "Asia/Shanghai"}}
    {{fromUnixTime .QueryLog[0][0].time "Asia/Tokyo"}}
    返回结果:
    
    2022-05-30 14:50:35.008 +0800 CST
    2022-05-30 14:50:35.008 +0800 CST
    2022-05-30 15:50:35.008 +0900 JST
    

    字符串拼接

    语法格式
    {{concat .variable1 .variable2 ...}}
    语法说明
    将指定的多个变量或字符串拼接在一起
    使用示例
    将地域及告警策略名称拼接在一起
    {{concat .Region .Alarm}}
    返回结果:
    广州 alarmTest

    base64/base64url/url 编码及解码

    语法格式
    {{base64_encode .variable}}
    {{base64_decode .variable}}
    {{base64url_encode .variable}}
    {{base64url_decode .variable}}
    {{url_encode .variable}}
    {{url_decode .variable}}
    语法说明
    对指定的变量或字符串进行编码(encode)或解码(decode),其中 base64url 在编解码过程中不会去除或补充尾部的*"="*
    使用示例
    {{base64_encode "test测试"}}
    {{base64_decode "dGVzdOa1i+ivlQ=="}}
    {{base64url_encode "test测试"}}
    {{base64url_decode "dGVzdOa1i-ivlQ=="}}
    {{url_encode "https://console.tencentcloud.com:80/cls?region=ap-chongqing"}}
    {{url_decode "https%3A%2F%2Fconsole.cloud.tencent.com%3A80%2Fcls%3Fregion%3Dap-chongqing"}}
    返回结果:
    dGVzdOa1i+ivlQ==
    test测试
    dGVzdOa1i-ivlQ==
    test测试
    https%3A%2F%2Fconsole.cloud.tencent.com%3A80%2Fcls%3Fregion%3Dap-chongqing
    https://console.tencentcloud.com:80/cls?region=ap-chongqing

    md5/sha1/sha256/sha512 加密

    语法格式
    {{md5 .variable}}
    {{md5 .variable | base64_encode}}
    {{md5 .variable | base64url_encode}}
    {{sha1 .variable}}
    {{sha1 .variable | base64_encode}}
    {{sha1 .variable | base64url_encode}}
    {{sha256 .variable}}
    {{sha256 .variable | base64_encode}}
    {{sha256 .variable | base64url_encode}}
    {{sha512 .variable}}
    {{sha512 .variable | base64_encode}}
    {{sha512 .variable | base64url_encode}}
    语法说明
    对指定的变量或字符串按照特定的加密算法进行加密,默认返回结果编码格式为16进制字符串,可按需修改为 base64 或 base64url 编码格式。
    使用示例
    {{md5 "test"}}
    {{md5 "test" | base64_encode}}
    {{md5 "test" | base64url_encode}}
    {{sha1 "test"}}
    {{sha1 "test" | base64_encode}}
    {{sha1 "test" | base64url_encode}}
    {{sha256 "test"}}
    {{sha256 "test" | base64_encode}}
    {{sha256 "test" | base64url_encode}}
    {{sha512 "test"}}
    {{sha512 "test" | base64_encode}}
    {{sha512 "test" | base64url_encode}}
    返回结果:
    098F6BCD4621D373CADE4E832627B4F6
    CY9rzUYh03PK3k6DJie09g==
    CY9rzUYh03PK3k6DJie09g==
    A94A8FE5CCB19BA61C4C0873D391E987982FBBD3
    qUqP5cyxm6YcTAhz05Hph5gvu9M=
    qUqP5cyxm6YcTAhz05Hph5gvu9M=
    9F86D081884C7D659A2FEAA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08
    n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=
    n4bQgYhMfWWaL-qgxVrQFaO_TxsrC4Is0V1sFbDwCgg=
    EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF
    7iaw3Ur350mqGo7jwQrpkj9hiYB3Lkc/iBml1JQODbJ6wYX4oOHV+E+IvIh/1nsUNzLDBMxfqa2Ob1f1ACio/w==
    7iaw3Ur350mqGo7jwQrpkj9hiYB3Lkc_iBml1JQODbJ6wYX4oOHV-E-IvIh_1nsUNzLDBMxfqa2Ob1f1ACio_w==

    hmac_md5/hmac_sha1/hmac_sha256/hmac_sha512 加密

    语法格式
    {{hmac_md5 .variable "Secretkey"}}
    {{hmac_md5 .variable "Secretkey" | base64_encode}}
    {{hmac_md5 .variable "Secretkey" | base64url_encode}}
    {{hmac_sha1 .variable "Secretkey"}}
    {{hmac_sha1 .variable "Secretkey" | base64_encode}}
    {{hmac_sha1 .variable "Secretkey" | base64url_encode}}
    {{hmac_sha256 .variable "Secretkey"}}
    {{hmac_sha256 .variable "Secretkey" | base64_encode}}
    {{hmac_sha256 .variable "Secretkey" | base64url_encode}}
    {{hmac_sha512 .variable "Secretkey"}}
    {{hmac_sha512 .variable "Secretkey" | base64_encode}}
    {{hmac_sha512 .variable "Secretkey" | base64url_encode}}
    语法说明
    对指定的变量或字符串按照特定的加密算法进行加密,默认返回结果编码格式为16进制字符串,可按需修改为 base64 或 base64url 编码格式。其中 Secretkey 为 hmac 加密算法中的密钥,可按需进行修改。
    使用示例
    {{hmac_md5 "test" "Secretkey"}}
    {{hmac_md5 "test" "Secretkey" | base64_encode}}
    {{hmac_md5 "test" "Secretkey" | base64url_encode}}
    {{hmac_sha1 "test" "Secretkey"}}
    {{hmac_sha1 "test" "Secretkey" | base64_encode}}
    {{hmac_sha1 "test" "Secretkey" | base64url_encode}}
    {{hmac_sha256 "test" "Secretkey"}}
    {{hmac_sha256 "test" "Secretkey" | base64_encode}}
    {{hmac_sha256 "test" "Secretkey" | base64url_encode}}
    {{hmac_sha512 "test" "Secretkey"}}
    {{hmac_sha512 "test" "Secretkey" | base64_encode}}
    {{hmac_sha512 "test" "Secretkey" | base64url_encode}}
    返回结果:
    E7B946D930658699AA668601E33E87CE
    57lG2TBlhpmqZoYB4z6Hzg==
    57lG2TBlhpmqZoYB4z6Hzg==
    2AB64F124D932F5033EAC7AF392AC5CC4D52F503
    KrZPEk2TL1Az6sevOSrFzE1S9QM=
    KrZPEk2TL1Az6sevOSrFzE1S9QM=
    FC49EBC05209B1359773D87C216BA85BCE0163FDE459EA37AB603EC9D8445D23
    /EnrwFIJsTWXc9h8IWuoW84BY/3kWeo3q2A+ydhEXSM=
    _EnrwFIJsTWXc9h8IWuoW84BY_3kWeo3q2A-ydhEXSM=
    D18DF3D943F74769A8B66E43D7EF03639BB6B8B8A2EBC9976170DC58EEE58BE98478F3183E4B5AA3481DE12026AAE3843F8213B39D639EAC6EE93734EA667BC5
    0Y3z2UP3R2motm5D1+8DY5u2uLii68mXYXDcWO7li+mEePMYPktao0gd4SAmquOEP4ITs51jnqxu6Tc06mZ7xQ==
    0Y3z2UP3R2motm5D1-8DY5u2uLii68mXYXDcWO7li-mEePMYPktao0gd4SAmquOEP4ITs51jnqxu6Tc06mZ7xQ==

    参考案例

    案例1:在告警通知中展示最近一条详细日志

    需求场景: 将符合执行语句检索条件的最近一条详细日志添加至告警通知中,以 key:value 的形式展示,每行一个 key,不包含 CLS 预置字段和元数据字段。
    通知内容配置
    {{range $key,$value := .QueryLog[0][0].content}}
    {{if not (containstr $key "__TAG__")}}
    {{- $key}}:{{$value}}
    {{- end}}
    {{- end}}
    其中 .QueryLog[0][0] 代表符合告警策略第一条执行语句检索条件的最近一条详细日志,其值为:
    {
    "content": {
    "__TAG__": {
    "a": "b12fgfe",
    "c": "fgerhcdhgj"
    },
    "body_bytes_sent": "33704",
    "http_referer": "-",
    "http_user_agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36",
    "remote_addr": "247.0.249.191",
    "remote_user": "-",
    "request_method": "GET",
    "request_uri": "/products/hadoop)",
    "status": "404",
    "time_local": "01/Nov/2018:07:54:08"
    },
    "fileName": "/root/testLog/nginx.log",
    "pkg_id": "285A243662909DE3-210B",
    "source": "172.17.0.2",
    "time": 1653908859008,
    "topicId": "a54de372-ffe0-49ae-a12e-c340bb2b03f2"
    }
    告警通知内容
    remote_addr:247.0.249.191
    time_local:01/Nov/2018:07:54:08
    http_user_agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36
    remote_user:-
    http_referer:-
    body_bytes_sent:33704
    request_method:GET
    request_uri:/products/hadoop)
    status:404

    案例2:告警通知中展示执行语句执行结果

    需求场景: 将执行语句执行结果中符合触发条件的部分添加至告警通知中,以列表的形式展示。 告警策略执行语句为:status:>=400 | select count(*) as errorLogCount,request_uri group by request_uri order by count(*) desc 触发条件为:$1.errorLogCount > 10
    通知内容配置
    {{range .QueryResult[0]}}
    {{- if gt .errorLogCount 10}}
    {{.request_uri}}错误日志数:{{.errorLogCount}}
    {{- end}}
    {{- end}}
    其中 .QueryResult[0] 代表告警策略第一条执行语句的执行结果,其值为:
    [{
    "errorLogCount": 161,
    "request_uri": "/apple-touch-icon-144x144.png"
    }, {
    "errorLogCount": 86,
    "request_uri": "/opt/node_apps/test-v5/app/themes/basic/public/static/404.html"
    }, {
    "errorLogCount": 33,
    "request_uri": "/feed"
    }, {
    "errorLogCount": 26,
    "request_uri": "/wp-login.php"
    }, {
    "errorLogCount": 10,
    "request_uri": "/safari-pinned-tab.svg"
    }, {
    "errorLogCount": 7,
    "request_uri": "/mstile-144x144.png"
    }, {
    "errorLogCount": 4,
    "request_uri": "/atom.xml"
    }, {
    "errorLogCount": 3,
    "request_uri": "/content/plugins/prettify-gc-syntax-highlighter/launch.js?ver=3.5.2?ver=3.5.2"
    }]
    告警通知内容
    /apple-touch-icon-144x144.png错误日志数:161
    /opt/node_apps/elastic-v5/app/themes/basic/public/static/404.html错误日志数:86
    /feed错误日志数:33
    /wp-login.php错误日志数:26
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持