如果 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 分钟内收到电子邮件提醒。
我们正在使用 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 分钟内收到电子邮件提醒。