跳转至

创建检测规则


进入安全监测 > 安全事件管理 > 新建规则,即可开始创建。

基础设置

检测频率

规则会按照此处设置的时间间隔(如每 5 分钟、每 1 小时)运行一次。包含最近 1 分钟、最近 5 分钟、最近 15 分钟、最近 30 分钟、最近 1 小时、最近 6 小时、最近 12 小时、最近 24 小时。

除选定系统提供的以上特定选项,您还可以输入自定义 crontab 任务,基于分钟、小时、天、月、周等周期配置定时任务执行情况。

检测区间

表示每次执行任务时,数据查询的时间范围。受检测频率影响,可选检测区间会不同。

检测频率 检测区间(下拉可选项)
1m 1m/5m/15m/30m/1h/3h
5m 5m/15m/30m/1h/3h
15m 15m/30m/1h/3h/6h
30m 30m/1h/3h/6h
1h 1h/3h/6h/12h/24h
6h 6h/12h/24h
12h 12h/24h
24h 24h

定义检测规则

定义安全检测逻辑时,您可以在脚本中使用 DQL 查询数据,并通过定义条件表达式(例如字段匹配、阈值判断等)来设定信号触发逻辑。

在自主编写规则时,您可以:

  • 设置文本自动换行或内容溢出;
  • 使用快捷键对内容进行格式处理;
  • 一键复制;
  • 直接在内容框中书写脚本内容;
  • 选用 fx 函数

示例:

# data1,ok = dql("T::re(`.*`):(avg(duration), service, span_id, status) by host limit 1")
# #data2 = dql("T::re(`.*`):(max(duration), service, span_id, status) by host limit 2")


# #result:检测结果,必填,类型 基本类型(字符串、整数、浮点)
# #result = data1.avg(duration)

# #dimension_tags:检测对象,可选,类型 map
# #dimension_tags = {"host":data1['series'][0][0]['tags']['host']}

# #status:等级,可选,类型 枚举,此处若定义优先级大于用户页面定义等级
# #可选值:critical、high、medium、low、info
# status = "high"

# #extra_data:附加属性,可选,类型 map
# #related_data = {"service":"wwwww"}
# #related_data = {"service":data1['series'][0][0]['columns']['service'],
#                # "span_id":data1['series'][0][0]['columns']['span_id'],
#                # "status":data1['series'][0][0]['columns']['status']}


# #fn trigger(result: int|float|bool|str, level: str = "", dim_tags: map = {}, related_data: map = {})
# #trigger(data1,status,dimension_tags,related_data)
# host = dql_series_get(data1,"host")
# service = dql_series_get(data1,"service")
# status = dql_series_get(data1,"status")
# trigger(data1,status,dimension_tags={"host":host},related_data={"service":service,"status":status})



data1 = dql("T::re(`.*`):(avg(duration), service, span_id, status) by host limit 1")
status = "high"
host = dql_series_get(data1,"host")
#printf("%v", {"host": host_o})
#host_info = dql_series_get(host_o,"host")
#printf("%v", {"host": host_info})
service = dql_series_get(data1,"service")
span_id = dql_series_get(data1,"span_id")

trigger(data1,status,dimension_tags={"host":host[0][0]},related_data={"service":service,"span_id":span_id})

在上述脚本示例中,主要分为三个部分:

  1. 数据查询:通过 DQL 查询所有指标(re(.*)),计算每个 host 分组下 duration 字段的平均值,同时返回servicespan_idstatus 字段,limit 1 表示只返回 1 条结果;
  2. 数据处理:

    host = dql_series_get(data1,"host")  # 从查询结果提取 `host` 字段
    service = dql_series_get(data1,"service") # 提取 `service` 字段
    span_id = dql_series_get(data1,"span_id") # 提取 `span_id` 字段
    
    3. 告警触发:

trigger(data1,status,dimension_tags={"host":host[0][0]},related_data={"service":service,"span_id":span_id})
表示触发一个优先级为 high 的告警,dimension_tags 标识检测对象(这里用 host 作为维度标签) ,related_data 附加关联数据(servicespan_id)。

注意

在脚本编辑过程中,只有添加 dimension_tagsrelated_data 两个字段后才会在最终产生的事件中出现相关信息。

安全等级

选择当前监测规则的安全等级:

等级 df_status 取值
严重 critical
high
medium
low
信息 info
注意

如果检测规则中通过条件判断自定义了安全等级(如 status=high),系统将优先采用规则中定义的安全等级,此时全局安全等级配置将不再生效。

配置规则描述

在添加检测规则时,输入检测结论和补救建议。这些内容将作为告警通知的标题和描述向外发送。

  1. 定义规则标题;
  2. 输入规则描述
  3. 选择为当前规则添加全局标签

告警配置

选择当前工作空间内已有的告警策略进行关联。规则启用后,将根据所选告警策略触发告警通知。

权限

为安全监测数据设置查看权限,从而提高数据安全性。

工作空间内,拥有“安全监测”管理权限的成员角色都可以操作此规则。


仅指定的成员可以操作此规则,可选择工作空间内的成员、角色和团队。


文档评价

文档内容是否对您有帮助? ×