Skip to content

Commit

Permalink
fix(backend): 告警分派规则缺失的问题 TencentBlueKing#7283
Browse files Browse the repository at this point in the history
  • Loading branch information
zhangzhw8 committed Oct 11, 2024
1 parent 3eb0619 commit a1cd8d0
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 17 deletions.
24 changes: 12 additions & 12 deletions dbm-ui/backend/db_monitor/models/alarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -424,11 +424,11 @@ def get_rules_by_dbtype(cls, db_type, bk_biz_id) -> List[Dict[str, Any]]:
rules = []

user_groups = [NoticeGroup.get_groups(bk_biz_id).get(db_type)]
# 补充 dbha 特殊策略的分派规则
# 特殊策略需要独立分派
dispatch_policies = MonitorPolicy.get_dispatch_policies()
if db_type in [DBType.MySQL, DBType.TenDBCluster, DBType.Redis, DBType.Sqlserver]:
policies = MonitorPolicy.get_dbha_policies()
conditions = [
{"field": "alert.strategy_id", "method": "eq", "value": policies, "condition": "and"},
{"field": "alert.strategy_id", "method": "eq", "value": dispatch_policies, "condition": "and"},
{
"field": "cluster_type",
"method": "eq",
Expand All @@ -446,24 +446,22 @@ def get_rules_by_dbtype(cls, db_type, bk_biz_id) -> List[Dict[str, Any]]:
}
)

# 仅分派平台策略
policies = MonitorPolicy.get_policies(db_type)

# 排除无效的db类型,比如cloud
# 仅分派平台策略,排除掉需要特殊分派的策略
policies = list(set(MonitorPolicy.get_policies(db_type)) - set(dispatch_policies))
if policies:
conditions = [{"field": "alert.strategy_id", "value": policies, "method": "eq", "condition": "and"}]

# 业务级分派策略
if bk_biz_id != PLAT_BIZ_ID:
conditions.append({"field": "appid", "value": [str(bk_biz_id)], "method": "eq", "condition": "and"})

rules = [
rules.append(
{
"user_groups": user_groups,
"conditions": conditions,
**BK_MONITOR_DISPATCH_RULE_MIXIN,
}
]
)

return rules

Expand Down Expand Up @@ -1003,10 +1001,12 @@ def get_policies(cls, db_type, bk_biz_id=PLAT_BIZ_ID):
return policy_ids

@classmethod
def get_dbha_policies(cls):
"""获取高可用策略id列表"""
def get_dispatch_policies(cls):
"""获取需独立分派的特殊策略"""
return list(
cls.objects.filter(details__labels__contains=["/DBM_DBHA/"]).values_list("monitor_policy_id", flat=True)
cls.objects.filter(details__labels__contains=["/DBM_NEED_DISPATCH/"]).values_list(
"monitor_policy_id", flat=True
)
)

@classmethod
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,8 @@
"labels": [
"DBM",
"DBM_CLOUD",
"DBM_DBHA"
"DBM_DBHA",
"DBM_NEED_DISPATCH"
],
"app": "",
"path": "",
Expand Down
8 changes: 4 additions & 4 deletions dbm-ui/backend/db_monitor/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,18 @@ def bkm_get_alarm_strategy(name, bk_biz_id=env.DBA_APP_BK_BIZ_ID):
res = BKMonitorV3Api.search_alarm_strategy_v3(
{
"page": 1,
"page_size": 1,
"page_size": 100,
"conditions": [{"key": "name", "value": name}],
"bk_biz_id": bk_biz_id,
"with_notice_group": False,
"with_notice_group_detail": False,
},
use_admin=True,
)

# 批量获取策略
strategy_config_list = res["strategy_config_list"]
return strategy_config_list[0] if strategy_config_list else None
for strategy in res["strategy_config_list"]:
if strategy["name"] == name:
return strategy


def bkm_save_alarm_strategy(params):
Expand Down

0 comments on commit a1cd8d0

Please sign in to comment.