监控告警是日志管理系统的重要功能,您可以让日志易轻松替您监控数据,我们可以把您的已存搜索按预设计划周期性执行,当满足触发条件时我们将通过电子邮件及时通知您。
配置告警时的主要内容:
搜索:所选择的搜索,告警名称及描述;
告警阈值:按预设的时间周期性检测,如果预设时间范围内搜索结果计数达到预设的告警条件,就触发告警;
告警类型: 根据需要设置的告警类型配置触发条件;
通知方式:配置电子邮件发送给用户。
请阅读关于配置告警的细节。
如果apache status出现500,已存搜索配置如下:
apache.status:500
如果每分钟响应时间大于3s的次数大于5次,已存搜索配置如下:
json.response_time:[3 TO *]
如果30分钟内error次数超过10次,已存搜索配置如下
apache.status:500 OR json.exception:error
日志易当中有两种方式配置告警:
单击搜索界面右边的“保存”,选择告警。
通过告警模块添加新的告警配置。
不论您通过哪种方式配置告警,配置告警都需要填写以下信息:
名称
您可以自由命名告警的名称,告警被触发时将推送此名称的告警。
描述
为告警做简短的描述,以便您能记起设置告警的原因。
执行计划
告警执行计划,您可以选择简单的时间单位,填写数字。日志易同时支持crontab时间格式配置格式。
格式: [秒] [分] [小时] [日] [月] [周] [年]
序号 | 说明 | 是否必填 | 允许填写的值 | 允许的通配符 |
1 | 秒 | 是 | 0—59 | , - * / |
2 | 分 | 是 | 0—59 | , - * / |
3 | 小时 | 是 | 0—23 | , - * / |
4 | 日 | 是 | 1—31 | , - * ? / L W |
5 | 月 | 是 | 1—12or JAN-DEC | , - * / |
6 | 周 | 是 | 1—7or SUN-SAT | , - * ? / L # |
7 | 年 | 否 | empty 或 1970-2099 | , - * / |
通配符说明:
* :表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。
? :表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ?
- :表示区间。例如 在小时上设置 "10-12",表示 10,11,12 点都会触发。
, :表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发
/ :用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。 在日字段上设置'1/3'所示每月1号开始,每隔三天触发一次。
L :表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于"7"或"SAT"。如果在"L"前加上数字,则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本月最后一个星期五"
W :表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 "1W",它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,"W"前只能设置具体的数字,不允许区间"-").'L'和 'W'可以一组合使用。如果在日字段上设置"LW",则表示在本月的最后一个工作日触发
# :序号(表示每月的第几周星期几),例如在周字段上设置"6#3"表示在每月的第三个周星期六.注意如果指定"6#5",正好第五周没有星期六,则不会触发该配置(用在母亲节和父亲节再合适不过了)周字段的设置,若使用英文字母是不区分大小写的 MON 与mon相同.
搜索
您可以从已存搜索中选择一个作为告警条件使用,日志易将提供已存搜索列表供您选择;如果您正在进行搜索,并决定使用当前搜索建立告警,请直接点击创建告警按钮,进一步创建告警条件。
告警类型
目前日志易提供事件数告警、字段统计告警、连续统计告警、基线对比告警和spl告警五种告警模式。
触发条件
1 事件数告警
您可以创建基于搜索结果的告警触发条件,在一个给定的时间范围内触发告警的阈值数。例如,您可以设置告警条件为5分钟内搜索结果计数超过10次(基于时间戳):
2 字段统计告警
字段统计告警为您提供针对字段内容的告警设置,在触发条件中您需要填写字段名,统计方式可以在下拉框中选择,cardinality(独立计数)、sum (求和)、avg(平均值)、max(最大值)、min(最小值)。
例如,告警触发条件为:clientip在5分钟之内某个ip的计数值超过10,则设定如下:
3 连续统计告警
连续告警为您提供连续触发告警功能,即当某个告警条件在某个时间内连续触发次数达到阀值,才触发告警。
例如,告警触发条件为:apache.status在1小时之内超过404的次数超过50,则触发告警,则设定如下:
4 基线对比告警
基线告警是将阈值设定为一个统计的基线值(随时间变动),您需要选择基线生成的时间范围,同时,基线对比告警给您提供了更灵活的触发范围设定方式——您可以在下拉框中选择大于、小于、在区间内、在区间外。
例如,resp_len如果与上周的统计平均值相比,小于基线值50%或者超过基线值150%即触发告警,设定的告警条件如下:
5 spl告警
用户可以针对通过spl语句建立的新字段建立告警,只需要在空格处填写正确的字段名称即可:
高级配置
支持在告警触发时发起另一个搜索,将其搜索结果附加在告警信息内
防止您在短时间内遭遇告警邮件轰炸,您可以自由设定告警抑制方案(默认不对告警进行抑制)
告警抑制:您可以设定一个固定时间段,在该时间段内触发告警之后则系统不再重复发送同类告警信息 倍增式时间段抑制:第一次触发告警后不再发送告警信息的时间段长度每次翻倍,直到设置的最大时长后重置 恢复提醒 :在告警恢复后通知用户
告警方式
您可以配置收到告警的方式,日志易支持rsyslog告警、邮件告警和告警转发三种模式。
选择添加rsyslog告警,用户可以根据实际情况自由更改Rsyslog地址、协议标准等内容。syslog内容可参考右侧说明。
您可以自行设定邮件标题、通知的邮箱地址以及告警邮件内容。系统提供默认的标准告警模板,屏幕右侧是所有可选择模板变量名称,选择对应的变量名称复制到左侧的内容模板即可,设定完成后勾选“启用该告警”,点击保存完成操作。
添加能接受请求的地址,系统会发送JSON格式的告警内容到该地址。JSON的具体结构与模板基本相同,请参照下述模板。
三种模式都为使用一种模板进行内容的渲染,模板可用的变量:
{
"send_time": Number, //往接收服务发送的时间点,unix时间戳。模板内是python的datetime对象
"is_alert_recovery": false // 默认不是告警恢复邮件结果
"exec_time": Number, //搜索的执行时间点,unix时间戳。模板内是python的diatomite对象。
"name": String, // 对应Web页面上告警名
"description": String, // 对应Web页面上告警的描述
"check_interval": Number, // 检测时间间隔
"search": {
"name": String, // 对应Web上已存搜索的名字
"source_group": String, // 日志分组
"query": String, // query内容
"filter": String // filter内容
"extend_search_name": String, // 告警扩展搜索(可以没有)对应Web上已存搜索的名字
"extend_source_group": String, // 告警扩展搜索(可以没有)的日志分组
"extend_query": String, // 告警扩展搜索(可以没有)的query内容
"extend_filter": String // 告警扩展搜索(可以没有)的filter内容
},
"result": {
"total": Number, //命中了多少条日志
"hits": [
{
"appname": String,
"tag": String,
"hostname": String,
"raw_message": String
}// 一个hit只包含这四项
{// 或者当是spl的统计型的结果的时候
// hit的字段是key:value分别为用户
// eval的值
}
.....
], // 命中的日志的内容,只有count统计和spl统计才有命中的具体日志
"terms": [
{
"key": String,
"doc_count": Number
},
], // 字段统计告警中的独立数统计才有的结果
"columns": [
{
"name": String, // 当spl时候列名的顺序是有意义的
"type": String,
}
], // 当时spl统计才有的结果
"value": Number // 连续统计告警,基线告警的结果。字段统计告警里的最大最小平均值统计的结果。
"extend_total": Number, //告警扩展搜索(可以没有)命中了多少条日志,当为spell的transaction和stats型结果时候是transaction的group和stats结果有多少行,而不是与之关联的事件数。
"extend_hits": [// (可以没有)
{// 普通事件结果
"appname": String,
"tag": String,
"raw_message": String,
"hostname": String
}// 当扩展搜索是spl搜索的stats结果时候,是在spl中eval出来的字段的值
], //告警扩展搜索(可以没有)搜索出来的内容
},
"strategy": {
"name": "count|field_stat|sequence_stat|baseline_cmp|spl_query",// 五种告警策略方式
"description": "事件数告警|字段统计告警|连续统计告警|基线对比告警|spl告警", // 策略中文描述,对应网页上
"trigger": {
"field": String, // 字段,策略count没有此字段
"start_time": Number, // 这次告警查询的开始时间。
"end_time": Number, // 这次告警查询的结束时间。
"method": "count|cardinality|sum|avg|max|min", //统计方法,count策略的method是count
"method_as_string": String,
"threshold": Number, //只有连续告警统计有阈值
"baseline_base_value": Number, //只有基线告警才有,基线的百分比的100%代表的数值。
"baseline_start_time": Number, // 对照基线的时间范围开始时间
"baseline_end_time": Number, // 对照基线的时间范围结束时间
"compare": ">|<|in|ex", // 大于或小于,基线告警专有的还有in和ex
"compare_style": String, // 合法值为fixed或者relative
"compare_value": [
Number
] // Array[Number]比较的值,除了基线告警都是一个值比较,基线告警因为有in和ex这里会是两个值
} // 触发条件
}
}
模板变量都需增加alert前缀,如send_time
应为alert.send_time
,以此类推。可参考模板邮件告警中的默认模板。