如果 Docker 容器退出,GCP 会发出警报

Ale*_*jic 4 docker google-cloud-platform docker-swarm google-cloud-monitoring

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

cyp*_*age 5

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

解决方案:

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

  • 通过 SSH 连接到您的实例。

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

  • 如果运行容器优化的操作系统,请按照以下步骤操作:

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

    sudo systemctl restart docker

  • 尝试启动和退出容器。

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

创建基于日志的指标

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

  • 单击创建指标。

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

  • 在“筛选器选择”->“构建筛选器”下,复制以下代码

    resource.type="gce_instance"

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

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

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

它应该看起来像这样。 在此输入图像描述

创建警报策略

  • 转至监控 -> 选择警报。
  • 单击创建策略。
  • 单击“选择指标”并搜索您的指标名称(例如 mysite-container-exited)。
  • 选择您的指标并单击“应用”。 在此输入图像描述
  • 将滚动窗口设置为2 分钟,并将滚动窗口函数设置为计数。点击下一步。 在此输入图像描述
  • 将警报触发器设置为任何违反时间序列,将阈值位置设置为高于阈值,并将阈值设置为1。点击下一步。 在此输入图像描述
  • 选择要向其发送警报的通知渠道。如果不存在,则单击“管理通知通道”并创建一个。
  • 最简单的方法是添加电子邮件作为通知渠道。
  • 创建返回后,单击“通知通道”中的“刷新”图标并选择它。单击“确定”。
  • 单击保存策略。

正如我们所看到的,每当我们退出容器时,每个容器都会向日志发出两个退出命令,这就是阈值设置为高于1的原因的原因。

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

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