ad_monitor_util.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. 'key_word': '定时任务告警'
  9. }
  10. level_header_template_map = {
  11. "info": "turquoise",
  12. "error": "red",
  13. "warn": "yellow"
  14. }
  15. level_header_title_content_map = {
  16. "info": "广告模型自动更新通知",
  17. "error": "广告模型自动更新告警",
  18. "warn": "广告模型自动更新告警"
  19. }
  20. def send_msg_to_feishu(webhook, key_word, msg_text):
  21. """发送消息到飞书"""
  22. print(f"推送飞书消息内容: {msg_text}")
  23. headers = {'Content-Type': 'application/json'}
  24. payload_message = {
  25. "msg_type": "text",
  26. "content": {
  27. "text": '{}: {}'.format(key_word, msg_text)
  28. }
  29. }
  30. # response = requests.request('POST', url=webhook, headers=headers, data=json.dumps(payload_message))
  31. # print(response.text)
  32. def seconds_convert(seconds):
  33. hours = seconds // 3600
  34. minutes = (seconds % 3600) // 60
  35. seconds = seconds % 60
  36. return f"{hours}小时 {minutes}分钟 {seconds}秒"
  37. def _monitor(level, msg, start, elapsed):
  38. """消息推送"""
  39. now = datetime.datetime.now()
  40. if now.hour > 6:
  41. mgs_text = f"- 当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}" \
  42. f"\n- 任务开始时间: {start}" \
  43. f"\n- 任务耗时: {seconds_convert(elapsed)}" \
  44. f"\n- 任务描述: {msg}"
  45. card_json = {
  46. "config": {
  47. "wide_screen_mode": "true"
  48. },
  49. "elements": [
  50. {
  51. "tag": "div",
  52. "text": {
  53. "content": mgs_text,
  54. "tag": "lark_md"
  55. }
  56. }
  57. ],
  58. "header": {
  59. "template": level_header_template_map[level],
  60. "title": {
  61. "content": level_header_title_content_map[level],
  62. "tag": "plain_text"
  63. }
  64. }
  65. }
  66. send_msg_to_feishu(
  67. webhook=server_robot.get('webhook'),
  68. key_word=server_robot.get('key_word'),
  69. msg_text=json.dumps(card_json)
  70. )
  71. if __name__ == '__main__':
  72. parser = argparse.ArgumentParser(description='告警Utils')
  73. parser.add_argument('--level', type=str, help='通知级别, info, warn, error', required=True)
  74. parser.add_argument('--msg', type=str, help='消息', required=True)
  75. parser.add_argument('--start', type=str, help='任务开始时间', required=True)
  76. parser.add_argument('--elapsed', type=int, help='任务耗时【秒】', required=True)
  77. args = parser.parse_args()
  78. _monitor(
  79. level=args.level,
  80. msg=args.msg,
  81. start=args.start,
  82. elapsed=args.elapsed
  83. )