Docker里部署的Vue项目怎么监控容器状态并告警?

书生シ栾同 阅读 5

我在服务器上用Docker部署了一个Vue项目,现在想监控容器是否挂了或者资源占用过高,但不知道怎么配置告警。试过用cAdvisor看指标,但没搞懂怎么触发通知。

这是我的Vue组件里调用的一个健康检查接口:

<template>
  <div>{{ healthStatus }}</div>
</template>

<script>
export default {
  data() {
    return { healthStatus: 'checking...' }
  },
  mounted() {
    fetch('/api/health')
      .then(res => res.json())
      .then(data => this.healthStatus = data.status)
  }
}
</script>

但这个只能前端看,没法在容器崩溃时自动发邮件或钉钉通知,有啥成熟的方案吗?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
 ___炳诺
这种需求最成熟的方案是用 Prometheus + Alertmanager 那一套,cAdvisor 负责收集指标,Prometheus 负责存储和查询,Alertmanager 负责发通知。

具体这样搞:

首先部署 cAdvisor 收集容器指标,用 docker run 起来就行,它会暴露 8080 端口。然后 Prometheus 配置文件里加上 cAdvisor 作为 target:
scrape_configs:
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']


接下来是告警规则,写一个 rules 文件监控容器状态和资源:

groups:
- name: container_alerts
rules:
- alert: ContainerDown
expr: up{job="cadvisor"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: "容器挂了"

- alert: HighMemoryUsage
expr: container_memory_usage_bytes / container_spec_memory_limit_bytes > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "内存使用超过80%"


最后配置 Alertmanager 发送钉钉 webhook 通知:

route:
receiver: 'dingtalk'

receivers:
- name: 'dingtalk'
webhook_configs:
- url: 'https://oapi.dingtalk.com/robot/send?access_token=你的token'


钉钉机器人具体配置去钉钉开放平台看,有个自定义机器人选项,拿到的 webhook URL 填进去就行。

如果觉得这一套太重,还有一个轻量级的思路:用 docker-compose 的 healthcheck 配合 watchdog 容器,不过功能没 Prometheus 这套全。生产环境还是推荐上面那套,生态成熟,扩展性强。
点赞
2026-03-12 23:01