liqian 2 سال پیش
والد
کامیت
7d80546417
1فایلهای تغییر یافته به همراه93 افزوده شده و 12 حذف شده
  1. 93 12
      redis_data_monitor.py

+ 93 - 12
redis_data_monitor.py

@@ -46,6 +46,95 @@ region_code = {
 }
 
 
+def rov_data_monitor(now_date, now_h):
+    """rov模型预测列表"""
+    if now_h > 6:
+        rov_key_name = f"{config_.RECALL_KEY_NAME_PREFIX}{now_date}"
+        if not redis_helper.key_exists(key_name=rov_key_name):
+            msg_text = f"\n- 所属项目: rov-server/rov-offline" \
+                       f"\n- 告警名称: 离线更新数据未按时更新告警" \
+                       f"\n- 所属环境: {config_.ENV_TEXT}" \
+                       f"\n- now_date: {now_date}" \
+                       f"\n- now_h: {now_h}" \
+                       f"\n- 告警描述: rov模型预测列表数据未按时更新"
+            log_.info(f"msg_text = {msg_text}")
+            send_msg_to_feishu(
+                webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
+                key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
+                msg_text=msg_text
+            )
+
+
+def region_data_monitor(now_date, now_h):
+    """地域分组数据"""
+    # 地域分组小时级列表
+    rule_params = config_.RULE_PARAMS_REGION
+    key_prefix_dict = {
+        '地域分组小时级数据': config_.RECALL_KEY_NAME_PREFIX_REGION_BY_H,
+        '地域分组相对24h去重后数据': config_.RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H,
+        '不区分地域相对24h去重后数据': config_.RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H,
+        'rov模型预测列表去重后数据': config_.RECALL_KEY_NAME_PREFIX_DUP_REGION_H,
+    }
+    region_code_list = [code for region, code in region_code.items()]
+    for rule_key, _ in rule_params.items():
+        for key_con, key_prefix in key_prefix_dict.items():
+            no_update_region_list = []
+            for region in region_code_list:
+                region_key_name = f"{key_prefix}{region}.{rule_key}.{now_date}.{now_h}"
+                if not redis_helper.key_exists(key_name=region_key_name):
+                    no_update_region_list.append(region)
+            if len(no_update_region_list) == len(region_code_list):
+                msg_text = f"\n- 所属项目: rov-server/rov-offline" \
+                           f"\n- 告警名称: 离线更新数据未按时更新告警" \
+                           f"\n- 所属环境: {config_.ENV_TEXT}" \
+                           f"\n- now_date: {now_date}" \
+                           f"\n- now_h: {now_h}" \
+                           f"\n- 告警描述: {key_con}未按时更新, rule_key={rule_key}"
+                log_.info(f"msg_text = {msg_text}")
+                send_msg_to_feishu(
+                    webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
+                    key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
+                    msg_text=msg_text
+                )
+
+
+def special_videos_monitor(now_date, now_h):
+    """特殊mid(屏蔽名单)指定视频列表"""
+    if now_h > 4:
+        rov_key_name = f"{config_.KEY_NAME_PREFIX_SPECIAL_VIDEOS}{now_date}"
+        if not redis_helper.key_exists(key_name=rov_key_name):
+            msg_text = f"\n- 所属项目: rov-server/rov-offline" \
+                       f"\n- 告警名称: 离线更新数据未按时更新告警" \
+                       f"\n- 所属环境: {config_.ENV_TEXT}" \
+                       f"\n- now_date: {now_date}" \
+                       f"\n- now_h: {now_h}" \
+                       f"\n- 告警描述: 特殊mid(屏蔽名单)指定视频列表数据未按时更新"
+            log_.info(f"msg_text = {msg_text}")
+            send_msg_to_feishu(
+                webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
+                key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
+                msg_text=msg_text
+            )
+
+
+def whole_movies_monitor(now_date, now_h):
+    """完整影视资源列表"""
+    rov_key_name = f"{config_.RECALL_KEY_NAME_PREFIX_WHOLE_MOVIES}{now_date}.{now_h}"
+    if not redis_helper.key_exists(key_name=rov_key_name):
+        msg_text = f"\n- 所属项目: rov-server/rov-offline" \
+                   f"\n- 告警名称: 离线更新数据未按时更新告警" \
+                   f"\n- 所属环境: {config_.ENV_TEXT}" \
+                   f"\n- now_date: {now_date}" \
+                   f"\n- now_h: {now_h}" \
+                   f"\n- 告警描述: 完整影视资源列表数据未按时更新"
+        log_.info(f"msg_text = {msg_text}")
+        send_msg_to_feishu(
+            webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
+            key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
+            msg_text=msg_text
+        )
+
+
 def get_redis_data_keys(now_date, now_h):
     # 检查所需列表是否已更新好
     redis_data_keys = []
@@ -75,18 +164,10 @@ def get_redis_data_keys(now_date, now_h):
 
 
 def monitor(now_date, now_h):
-    redis_data_keys = get_redis_data_keys(now_date=now_date, now_h=now_h)
-    log_.info(f"redis_data_keys = {redis_data_keys}")
-    for key_name in redis_data_keys:
-        if not redis_helper.key_exists(key_name=key_name):
-            msg_text = f"{config_.ENV_TEXT} —— now_date = {now_date}, now_h = {now_h}, key = {key_name}, " \
-                       f"数据未按时更新,请及时查看解决。"
-            log_.info(f"msg_text = {msg_text}")
-            send_msg_to_feishu(
-                webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
-                key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
-                msg_text=msg_text
-            )
+    rov_data_monitor(now_date=now_date, now_h=now_h)
+    region_data_monitor(now_date=now_date, now_h=now_h)
+    special_videos_monitor(now_date=now_date, now_h=now_h)
+    whole_movies_monitor(now_date=now_date, now_h=now_h)
 
 
 if __name__ == '__main__':