Google App Engine运行状况检查垃圾邮件应用程序
我已经使用以下app.yaml
configuration部署了在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。 但是,如果垃圾邮件使得不可能将日志用于其预期的目的,就像对我来说,这是一个解决方法:
-
启用“高级日志filter”(Stackdriver Logging中search字段旁边的微小向下箭头)
-
将此添加到search查询
NOT textPayload : (health)
我也在GAE Flex env中运行NodeJS。 健康检查也是垃圾邮件的服务器日志。 以下几件事帮助我减less了这些事情:
- 虽然谷歌文档( https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml#health_checks )说健康检查configuration不是必需的,我仍然设置他们明确无论如何降低健康检查呼叫的频率。
- 使用“高级日志filter”来移除运行状况检查日志,看是否过于分散注意力。
- 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日志也会有帮助。