123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- import datetime
- from config import set_config
- from utils import RedisHelper, send_msg_to_feishu
- from log import Log
- config_, _ = set_config()
- log_ = Log()
- redis_helper = RedisHelper()
- region_code = {
- '河北省': '130000',
- '山西省': '140000',
- '辽宁省': '210000',
- '吉林省': '220000',
- '黑龙江省': '230000',
- '江苏省': '320000',
- '浙江省': '330000',
- '安徽省': '340000',
- '福建省': '350000',
- '江西省': '360000',
- '山东省': '370000',
- '河南省': '410000',
- '湖北省': '420000',
- '湖南省': '430000',
- '广东省': '440000',
- '海南省': '460000',
- '四川省': '510000',
- '贵州省': '520000',
- '云南省': '530000',
- '陕西省': '610000',
- '甘肃省': '620000',
- '青海省': '630000',
- '台湾省': '710000',
- '北京': '110000',
- '天津': '120000',
- '内蒙古': '150000',
- '上海': '310000',
- '广西': '450000',
- '重庆': '500000',
- '西藏': '540000',
- '宁夏': '640000',
- '新疆': '650000',
- '香港': '810000',
- '澳门': '820000',
- 'None': '-1'
- }
- 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 = []
- # rov模型预测列表
- if now_h > 6:
- rov_key_name = f"{config_.RECALL_KEY_NAME_PREFIX}{now_date}"
- redis_data_keys.append(rov_key_name)
- # 地域分组小时级列表
- rule_params = config_.RULE_PARAMS_REGION
- key_prefix_list = [
- config_.RECALL_KEY_NAME_PREFIX_REGION_BY_H,
- config_.RECALL_KEY_NAME_PREFIX_DUP1_REGION_24H_H,
- config_.RECALL_KEY_NAME_PREFIX_DUP2_REGION_24H_H,
- 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 region in region_code_list:
- if region == '-1':
- region_key_name = [f"{key_prefix_list[-1]}{region}.{rule_key}.{now_date}.{now_h}"]
- else:
- region_key_name = [f"{key_prefix}{region}.{rule_key}.{now_date}.{now_h}"
- for key_prefix in key_prefix_list]
- redis_data_keys.extend(region_key_name)
- return redis_data_keys
- def monitor(now_date, now_h):
- 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__':
- now_date = datetime.datetime.today().strftime('%Y%m%d')
- now_h = datetime.datetime.now().hour
- log_.info(f"now_date = {now_date}, now_h = {now_h}")
- monitor(now_date=now_date, now_h=now_h)
- log_.info("end!")
|