如何自动获取有关Google应用引擎中错误的电子邮件提醒

时间:2014-02-08 16:09:16

标签: google-app-engine error-handling

我维护了很多Google App Engine应用程序,如果它们运行顺畅,我们很难不断跟踪所有服务器。

只有在用户抱怨系统崩溃后醒来才会非常尴尬。

是否可以不断更新我的服务器健康状况?

我可以收到邮件或其他内容,以防我的Google应用引擎应用出错吗?

不能等待Google接受此要求

5 个答案:

答案 0 :(得分:15)

现在可以使用Stackdriver(由Google收购并与Google Cloud Platform / App Engine集成)。

  1. 转到https://console.cloud.google.com/errors
  2. 点击Turn on notifications
  3. enter image description here

答案 1 :(得分:9)

您可以安排一个可以为您执行此操作的cron作业

首先在 cron.yaml

中创建一个条目
- description: Houston we have a problem Finder
  url: /errorfinder/
  schedule: every 3 hours
  timezone: Asia/Kolkata

然后在 app.yaml

中创建一个条目
handlers:
- url: /errorfinder/
  script: errorfinder.app
  secure: always 

现在使用以下内容 errorfinder.py

import base64
import datetime
import logging
import time
import urllib
import webapp2
from google.appengine.api.logservice import logservice
from google.appengine.api import mail

class MainHandler(webapp2.RequestHandler):
    def get(self):    
      # Set up end time for our query.
      end_time = time.time()
      start_time = end_time  - 10800 # 3 hours before now . same as cronjob interval
      html = ''
      report_needed = False
      # Iterate through all the RequestLog objects, displaying some fields and
      # iterate through all AppLogs beloging to each RequestLog count times
      for req_log in logservice.fetch(start_time=start_time, end_time=end_time, minimum_log_level=logservice.LOG_LEVEL_WARNING, include_app_logs=True):
            report_needed = True
            html = html + '<br /> REQUEST LOG <br />'
            html = html + 'IP: %s <br /> Method: %s <br /> Resource: %s <br />' % (req_log.ip, req_log.method, req_log.resource)
            html = html + 'Date: %s<br />' % datetime.datetime.fromtimestamp(req_log.end_time).strftime('%D %T UTC')

            for app_log in req_log.app_logs:
                html = html + '<br />&emsp; APP LOG<br />'
                html = html + '&emsp; Date: %s<br />' % datetime.datetime.fromtimestamp(app_log.time).strftime('%D %T UTC')
                html = html + '&emsp; Message: <b>%s</b><br />' % app_log.message
                html = html + '<br /><br /><br /><br />'
      if(report_needed):
           mail.send_mail(sender="Beagle Bot <bot@urdomain.com>",
                to='lazyadmins@urdomain.com',
                subject='Houston we have a problem ..',
                body=html,
                html=html,
                reply_to='support@urdomain.com')
      self.response.out.write(html)

app = webapp2.WSGIApplication([('/errorfinder/', MainHandler)], debug=True)

您可以通过缩短cron作业间隔来使错误搜索接近实时

答案 2 :(得分:2)

如果出现错误,则无法自动发送警报邮件。

您需要制定自己的解决方案:创建cron job parses logssends email错误。可能会将类似的错误聚合在一起。您可以考虑在问题跟踪系统中自动创建错误报告,而不是电子邮件。

答案 3 :(得分:1)

对我来说,这个链接可以解决问题: https://console.cloud.google.com/user-preferences/communication?project=voilanorbert-1272&utm_source=cloud-notification&utm_medium=email&utm_content=unsubscribe-new-error

enter image description here

要访问它,请点击右上方头像附近的三个点,然后选择&#34;首选项&#34;。

答案 4 :(得分:0)

您可以将应用配置为在引发异常时向您发送电子邮件。有关详情,请参阅此处:Catch-All global exception handler in App Engine for Python