如果 Docker 容器退出,GCP 警报

GCP alert if Docker container exits

我们正在使用 Google Cloud Platform 及其服务 Compute Engine。我们在我们的一个 VM 实例(它是 Compute Engine 的一部分)上安装了 Docker。我们可以在 GCP 监控中设置警报以在容器退出时触发吗?

是的。您必须使用云日志驱动程序配置 docker,创建基于日志的指标和该指标的警报策略。

解法:

使用云日志驱动程序配置docker。

  • SSH 到您的实例。

  • 运行 此命令作为 root:dockerd --log-driver=gcplogs。这会将您的 docker 日志转发到 Google Cloud Logging。

  • 如果 运行 容器优化 OS 则执行以下步骤:

    echo '{"log-driver":"gcplogs"}' | sudo tee /etc/docker/daemon.json

    sudo systemctl restart docker

  • 尝试启动和退出容器。

这些是我们退出容器时生成的日志。请记住 两个退出 消息

创建基于日志的指标

  • 转到日志记录 -> Select 基于日志的指标。

  • 单击“创建指标”。

  • 指标类型:计数器。在详细信息中,输入日志指标名称(例如 mysite-container-exited)

  • Filter Selection -> Build filter 下,复制以下代码

    resource.type="gce_instance"

    log_name="projects/myproject-12345/logs/gcplogs-docker-driver"myproject-12345 替换为您的项目名称。

    jsonPayload.container.name="/mysite"mysite 更改为您的容器名称。

    jsonPayload.message=~"exit$" 这是匹配 exit 作为一行中最后一个单词的正则表达式。

它应该看起来像这样。

创建警报策略

  • 转到监控 -> Select 警报。
  • 单击“创建策略”。
  • 点击 Select 一个指标并搜索您的指标名称(例如 mysite-container-exited)。
  • Select 您的指标,然后单击“应用”。
  • 将 Rolling window 设置为 2 min 并将 Rolling window 函数设置为 count。点击下一步。
  • 将警报触发器设置为任何时间序列违反,将阈值位置设置为高于阈值并将阈值设置为1。点击下一步。
  • Select 用于发送警报的通知频道。如果 none 存在,则单击“管理通知渠道”并创建一个。
  • 最简单的方法是为通知渠道添加电子邮件。
  • 创建后返回,点击通知频道中的刷新图标,然后select。点击确定。
  • 单击“保存策略”。

正如我们所见,每当我们退出容器时,每个容器 都会向日志发出两个退出命令,这就是阈值的原因设置为以上 1.

您可以通过创建新指标并将 jsonPayload.container.name="/mysite" 的值更改为您的容器名称来监控更多容器。

现在尝试启动和停止容器。您将在 2-3 分钟内收到电子邮件提醒。