Google App Engine运行状况检查垃圾邮件应用程序

我已经使用以下app.yamlconfiguration部署了在Google App Engine Flex运行时上运行的nodejs应用程序:

 runtime: nodejs env: flex health_check: enable_health_check: True check_interval_sec: 20 timeout_sec: 4 unhealthy_threshold: 2 healthy_threshold: 2 

根据健康检查文档 ,健康检查应该每20秒钟/_ah/health一次/_ah/health终结点。 但是我注意到,即使应用程序响应200状态码,我的应用程序每秒都会多次使用这些运行状况检查进行垃圾邮件:

在这里输入图像描述

任何想法为什么发生这种情况?

不幸的是,它似乎就像我们的文档有一个错误。 实际上,今天的应用程序确实经常进行健康检查。

原因有很多,但是一般来说,每个虚拟机将按照你指定的重复间隔(默认情况下,非常激进的1秒)进行3 * 2次不同的健康检查。 原因是两种types的健康检查(autohealer和LB的)和3个可用性原因。

话虽如此,我们目前正在研究一种健康检查的新forms,将很快发布,并应该解决这个问题和其他问题与现有的健康检查行为(至less使默认更易于pipe理,给予用户更多的调整选项) 。

敬请关注!

我没有根本问题的解决scheme。 但是,如果垃圾邮件使得不可能将日志用于其预期的目的,就像对我来说,这是一个解决方法:

  1. 启用“高级日志filter”(Stackdriver Logging中search字段旁边的微小向下箭头)

  2. 将此添加到search查询

    NOT textPayload : (health)

我也在GAE Flex env中运行NodeJS。 健康检查也是垃圾邮件的服务器日志。 以下几件事帮助我减less了这些事情:

  1. 虽然谷歌文档( https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml#health_checks )说健康检查configuration不是必需的,我仍然设置他们明确无论如何降低健康检查呼叫的频率。
  2. 使用“高级日志filter”来移除运行状况检查日志,看是否过于分散注意力。
  3. Google文档( https://cloud.google.com/appengine/docs/flexible/nodejs/how-instances-are-managed )表示不需要为健康检查实现一个处理程序,我明确地实现了它。 我在express.js服务器中为“/ _ah / healthcheck”端点添加了一个处理程序,并在app.js文件的顶部添加了路由,以便立即响应健康检查请求。 这有助于减less健康检查请求进入快速应用程序逻辑所造成的噪音。

使用高级filter并说“NOT _ah / health”。

删除nginx.request日志也会有帮助。