Heroku免费层部署应用Datadog显示3台主机异常咨询
问题描述
在Heroku免费层部署搭载PostgreSQL附加组件的应用后,查看已集成的Datadog基础设施监控列表,预期仅展示2台主机(1台对应API服务、1台对应数据库服务),实际检测到3台主机,需确认第三台主机的来源与属性。
已收集的环境与排查信息
heroku info命令执行输出如下:
$ heroku info === myappname Addons: heroku-postgresql:hobby-dev Auto Cert Mgmt: false Dynos: web: 1, run: 1 Git URL: https://git.heroku.com/myappname.git Owner: name@gmail.com Region: us Repo Size: 937 KB Slug Size: 123 MB Stack: heroku-20 Web URL: https://myappname.herokuapp.com/
其余已知信息:
- 暂不明确上述输出中
web、run类型Dyno的具体指代 - 执行
heroku regions --common --json返回长度为2的数组,对应两台ID不同的机器,分别部署在欧洲、美国区域 - Datadog主机详情页属性显示:2台主机标注
dynotype:run,1台主机标注dynotype:web - 监控截图参考:

原因说明
首先明确Heroku两类Dyno的定义:
web类型Dyno:唯一可接收外部HTTP流量的Dyno类型,即对外提供API/网页服务的运行实例,配置中分配的1台该类型Dyno,对应Datadog里标注dynotype:web的主机。run类型Dyno:用于运行一次性任务、命令的临时容器,触发场景包括手动执行heroku run命令(如跑数据库迁移、进入控制台、执行自定义脚本)、Heroku平台自动执行的附加组件绑定、健康检查、免费层Dyno休眠唤醒调度等操作。
多出来的1台dynotype:run主机并非PostgreSQL数据库实例:Heroku hobby-dev层级的Postgres是多租户共享托管实例,不会以用户名下独立Dyno主机的形式上报到Datadog。
这台额外的run类型主机来源为临时生成的一次性任务容器,这类容器本身存活时间仅数分钟,Datadog在实例销毁后会保留1-2小时的主机列表缓存,不会立刻移除,属于正常现象。
补充说明:heroku regions --common --json返回的欧美两个节点是Heroku公共区域的接入入口,和实际运行的Dyno数量无直接对应关系,所有上报到Datadog的主机均对应该应用名下的Dyno实例,不存在未知外部主机。
内容的提问来源于stack exchange,提问作者stk1234
相关产品推荐
相关产品推荐

