【问题标题】:Installing Monitoring Agent on multiple VMs at the same time同时在多个虚拟机上安装监控代理
【发布时间】:2019-12-02 11:49:15
【问题描述】:

我需要在我所有的计算引擎虚拟机上install Monitoring Agent,我想知道是否可以使用某种类型的启动脚本或类似的东西自动执行此操作。那可能吗?

根据 Google 的说法,以下是在单个 VM 上安装它的步骤:

【问题讨论】:

  • 您可以将 Stackdriver 安装脚本放在 Compute Engine 的启动脚本中。这可确保安装最新版本。 Stackdriver 检测到它已安装。对启动时间的影响可以忽略不计。如果您想要手动方法来控制实例何时更新,@norbjd 的回答也很有价值。

标签: google-cloud-platform virtual-machine google-compute-engine stackdriver google-cloud-stackdriver


【解决方案1】:

启动脚本不是在这里是一个好的解决方案,因为该脚本将在每次实例启动时运行。即使 Stackdriver 监控代理安装很聪明,并且如果已经安装了代理也不会重新安装(也许是这样,我不知道),但在这里使用启动脚本似乎并不合适。如果您想在每次启动时安装它(也许保持更新),它可能是一个解决方案,但在您的情况下(在所有现有 VM 上安装一次)可能会有更好的解决方案。

如果您对虚拟机具有 root 访问权限并使用 Google Cloud SDK,您可以简单地迭代您的虚拟机并通过 SSH 为每个虚拟机运行远程命令,如下例所示,假设您的所有虚拟机都在同一个项目中@ 987654324@(在生产环境中的所有 VM 上运行之前,请小心在一小部分 VM 上进行测试,我还没有测试过)。该语法适用于 Google Cloud SDK v243.0.0。

#!/usr/bin/env sh

REMOTE_COMMAND="curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh && \
    sudo bash install-monitoring-agent.sh && \
    sudo service stackdriver-agent restart"

for instance_name in $(gcloud --project "$MY_PROJECT" compute instances list --format="value(name)")
do
    zone=$(gcloud --project "$MY_PROJECT" compute instances list \
            --filter="name=($instance_name)" \
            --format="value(zone)")
    gcloud --project "$MY_PROJECT" compute ssh "$instance_name" \
        --zone="$zone" \
        --command "$REMOTE_COMMAND"
done

这类似于连接到每个 VM,在此 VM 上运行命令,然后断开连接。这样做的好处是可以在一台主机上运行,​​只要您可以通过 SSH 连接到您的虚拟机。

如果您熟悉Ansible 或其他一些配置工具,可能有比之前的shell 脚本更好的解决方案。但是,如果这是一次性的,并且您想要一个快速而轻松的解决方案,那么请继续使用 shell 脚本(不过之前要小心测试它)。

对于您未来的 Compute Engine 虚拟机,如果您的所有虚拟机都具有类似的配置,我建议您查看 instance templatesimages。您可以创建一个预先安装了 Stackdriver 监控代理的特定实例模板或映像,并从这些实例模板/映像创建您未来的所有虚拟机。

【讨论】:

  • 似乎工作正常。我已经在测试环境中对其进行了测试,一切顺利。我会做更多的测试,以便在生产中复制它。非常感谢!
猜你喜欢
  • 2022-01-15
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多