Ver código fonte

add redis data monitor

liqian 2 anos atrás
pai
commit
41d8c314e5
2 arquivos alterados com 104 adições e 0 exclusões
  1. 97 0
      redis_data_monitor.py
  2. 7 0
      redis_data_monitor_task.sh

+ 97 - 0
redis_data_monitor.py

@@ -0,0 +1,97 @@
+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 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):
+    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
+            )
+
+
+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!")

+ 7 - 0
redis_data_monitor_task.sh

@@ -0,0 +1,7 @@
+source /etc/profile
+echo $ROV_OFFLINE_ENV
+if [[ $ROV_OFFLINE_ENV == 'test' ]]; then
+    cd /data2/rov-offline && /root/anaconda3/bin/python /data2/rov-offline/redis_data_monitor.py
+elif [[ $ROV_OFFLINE_ENV == 'pro' ]]; then
+    cd /data/rov-offline && /root/anaconda3/bin/python /data/rov-offline/redis_data_monitor.py
+fi