在
0.6
版本后,部分消息渠道支持markdown
格式,详细使用方法请参考文档 markdown格式消息
消息模板使用的语法是Freemarker
,具体用法参考Freemarker
官方文档。可用的变量分两部分。一部分是报警规则设置,一部分是查询出来的数据。不同规则可使用的变量如下表格。
字段名 | 类型 | 说明 | 适用的判断类型 |
---|---|---|---|
TIME_WINDOW | int | 查询时间范围窗口大小(单位: 分钟) | 数值 |
NUMBER | double | 数值类型值 | 数值 |
THRESHOLD | double | 判断阈值 | 数值 |
COUNT | long | 查询记录数量 | 数值 |
ALERT_SILENCE | long | 静默时间 | 数值 |
CURRENT_TIME | String | 当前时间 | 数值 |
ALARM_ID | long | 监控ID | 数值 |
ALARM_NAME | String | 监控名称 | 数值 |
当聚合类型是avg时,NUMBER表示平均值;当聚合类型是count时,NUMBER表示数量;当聚合类型是sum时,NUMBER表示和;以此类推。
字段名 | 类型 | 说明 | 适用的数据源 |
---|---|---|---|
HTTP_STATUS | int | HTTP状态码 | HTTP |
HTTP_COST | long | 请求耗时 | HTTP |
查询的数据可用变量取决于你的数据格式。以我们部门程序日志数值监控为例,可用变量和我们日志格式是一致的。如下表格:
序号 | 字段名 | 类型 | 说明 | Elasticsearch存储 |
---|---|---|---|---|
1 | LogAt | DateTime | 日志时间 | iso8601 |
2 | TraceId | string | 跟踪Id | 不分词 |
3 | Department | string | 部门 | 不分词,统一小写 |
4 | Team | string | 团队 | 不分词,统一小写 |
5 | Project | string | 项目名称 | 不分词,统一小写 |
6 | Host | string | 域名 | 不分词,统一小写 |
7 | ServerIP | string | 服务器IP | 不分词,统一小写 |
8 | ContextPath | string | 虚拟目录 | 不分词,统一小写 |
9 | UriStem | string | url主干 | 不分词,统一小写 |
10 | QueryString | string | GET参数 | 分词 |
11 | FormString | string | POST参数 | 分词 |
12 | UserAgent | string | UserAgent | 分词 |
13 | Level | string | 日志级别 | 不分词,统一大写 |
14 | Class | string | 记录日志所在类名 | 不分词 |
15 | Method | string | 记录日志所在方法名 | 不分词 |
16 | MethodParams | string | 抛出自定义异常方法参数 | 分词 |
17 | Line | int | 行号 | 整数 |
18 | Logger | string | 日志名 | 不分词 |
19 | IOType | string | 自定义异常io类型 | 不分词 |
20 | ExceptionType | string | 异常类型 | 不分词 |
21 | ExceptionMessage | string | 异常信息 | 分词 |
22 | CustomMessage | string | 自定义信息 | 分词 |
23 | StackTrace | string | 堆栈信息 | 分词 |
24 | HawkKey | string | Key | 不分词 |
这样我们一般为程序日志报警定制的消息模板为:
${Project}最近${TIME_WINDOW}分钟内有异常日志${NUMBER}条。最近一条异常信息:
服务器IP: ${ServerIP}
异常类型: ${ExceptionType}
自定义信息: ${CustomMessage}
异常信息: ${ExceptionMessage}
比如监控访问日志,我们一般定制的消息模板为:
域名${host}最近${TIME_WINDOW}分钟内有非200请求${NUMBER}。最近一条信息:
服务器IP: ${server_ip}
调用IP: ${client_ip}
HttpCode: ${code}
耗时: ${cost}
或者我们监控访问日志的耗时,定制的消息模板为:
域名${host}最近${TIME_WINDOW}分钟内有耗时超过500ms请求${NUMBER}。最近一条信息:
服务器IP: ${server_ip}
调用IP: ${client_ip}
HttpCode: ${code}
耗时: ${cost}
这里用我们内部使用的例子供大家参考使用,具体模板内容,你需要自己根据数据格式定制。如果你想使用我们的日志格式,请参考
另外一个开源项目: autolog4j
[https://github.com/AutohomeCorp/autolog4j]
Freemarker
提供了字符串截取的操作,例如:
${userName?truncate(16)}
如果userName
长度超过16,将被截取。更多使用方法请参考freemarker文档;
默认报警消息title
是: 霜之哀伤监控平台。可以配置config_map
表config_key
为AlertTitle
的行的config_value
值来设置自定义报警消息头。例如:
INSERT INTO config_map(config_key, config_value, creator, create_at, modifier, modify_at)
VALUES('AlertTitle', '霜之哀伤监控平台', 'admin', now(), 'admin', now());
同一个config_key
禁止配置多条,对config_key
建了唯一索引。
注意如果你的报警机器人依赖报警消息头作为关键词,请记得同时改机器人配置,否则会导致机器人消息无法发送。