我维护了很多Google App Engine应用程序,如果它们运行顺畅,我们很难不断跟踪所有服务器。
只有在用户抱怨系统崩溃后醒来才会非常尴尬。
是否可以不断更新我的服务器健康状况?
我可以收到邮件或其他内容,以防我的Google应用引擎应用出错吗?
不能等待Google接受此要求
答案 0 :(得分:15)
现在可以使用Stackdriver
(由Google收购并与Google Cloud Platform / App Engine集成)。
Turn on notifications
答案 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 />  APP LOG<br />'
html = html + '  Date: %s<br />' % datetime.datetime.fromtimestamp(app_log.time).strftime('%D %T UTC')
html = html + '  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 logs和sends email错误。可能会将类似的错误聚合在一起。您可以考虑在问题跟踪系统中自动创建错误报告,而不是电子邮件。
答案 3 :(得分:1)
要访问它,请点击右上方头像附近的三个点,然后选择&#34;首选项&#34;。
答案 4 :(得分:0)
您可以将应用配置为在引发异常时向您发送电子邮件。有关详情,请参阅此处:Catch-All global exception handler in App Engine for Python