ad_monitor_util.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. # -*- coding: utf-8 -*-
  2. import argparse
  3. import datetime
  4. import json
  5. import requests
  6. server_robot = {
  7. 'webhook': 'https://open.feishu.cn/open-apis/bot/v2/hook/926982f5-e7af-40f5-81fd-27d8f42718e4',
  8. }
  9. level_header_template_map = {
  10. "info": "turquoise",
  11. "error": "red",
  12. "warn": "yellow"
  13. }
  14. level_header_title_content_map = {
  15. "info": "广告模型自动更新通知",
  16. "error": "广告模型自动更新告警",
  17. "warn": "广告模型自动更新告警"
  18. }
  19. def send_card_msg_to_feishu(webhook, card_json):
  20. """发送消息到飞书"""
  21. headers = {'Content-Type': 'application/json'}
  22. payload_message = {
  23. "msg_type": "interactive",
  24. "card": card_json
  25. }
  26. print(f"推送飞书消息内容: {json.dumps(payload_message)}")
  27. response = requests.request('POST', url=webhook, headers=headers, data=json.dumps(payload_message))
  28. print(response.text)
  29. def seconds_convert(seconds):
  30. hours = seconds // 3600
  31. minutes = (seconds % 3600) // 60
  32. seconds = seconds % 60
  33. return f"{hours}小时 {minutes}分钟 {seconds}秒"
  34. def _monitor(level, msg: str, start, elapsed):
  35. """消息推送"""
  36. now = datetime.datetime.now()
  37. if now.hour > 6:
  38. msg = msg.replace("\\n", "\n").replace("\\t", "\t")
  39. mgs_text = f"- 当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}" \
  40. f"\n- 任务开始时间: {start}" \
  41. f"\n- 任务耗时: {seconds_convert(elapsed)}" \
  42. f"\n- 任务描述: {msg}"
  43. card_json = {
  44. "config": {},
  45. "i18n_elements": {
  46. "zh_cn": [
  47. {
  48. "tag": "markdown",
  49. "content": "",
  50. "text_align": "left",
  51. "text_size": "normal"
  52. },
  53. {
  54. "tag": "markdown",
  55. "content": mgs_text,
  56. "text_align": "left",
  57. "text_size": "normal"
  58. }
  59. ]
  60. },
  61. "i18n_header": {
  62. "zh_cn": {
  63. "title": {
  64. "tag": "plain_text",
  65. "content": level_header_title_content_map[level]
  66. },
  67. "subtitle": {
  68. "tag": "plain_text",
  69. "content": ""
  70. },
  71. "template": level_header_template_map[level]
  72. }
  73. }
  74. }
  75. send_card_msg_to_feishu(
  76. webhook=server_robot.get('webhook'),
  77. card_json=card_json
  78. )
  79. if __name__ == '__main__':
  80. parser = argparse.ArgumentParser(description='告警Utils')
  81. parser.add_argument('--level', type=str, help='通知级别, info, warn, error', required=True)
  82. parser.add_argument('--msg', type=str, help='消息', required=True)
  83. parser.add_argument('--start', type=str, help='任务开始时间', required=True)
  84. parser.add_argument('--elapsed', type=int, help='任务耗时【秒】', required=True)
  85. args = parser.parse_args()
  86. _monitor(
  87. level=args.level,
  88. msg=args.msg,
  89. start=args.start,
  90. elapsed=args.elapsed
  91. )