同时在多个虚拟机上安装监控代理
Installing Monitoring Agent on multiple VMs at the same time
我需要在我的所有计算引擎 VM 上 install Monitoring Agent,我想知道是否可以使用某种类型的启动脚本或类似的东西自动完成它。那可能吗?
根据 Google,这些是在单个 VM 上安装它的步骤:
启动脚本不是一个好的解决方案,因为每次启动实例时该脚本都会运行。即使 Stackdriver 监控代理安装很聪明,如果已经安装了代理也不会重新安装(也许会,我不知道),但在这里使用启动脚本似乎并不合适。如果您想在每次启动时安装它(也许是为了保持更新),它可能是一个解决方案,但对于您的情况(在所有现有 VM 上安装一次)可能有更好的解决方案。
如果您在 VM 上拥有 root 访问权限,并使用 Google Cloud SDK,您可以简单地迭代您的 VM 并通过 SSH 对每个 VM 执行 运行 远程命令,如下例假设你所有的虚拟机都在同一个项目中 $MY_PROJECT
(在生产环境中的所有虚拟机上 运行 之前,请小心地在一小部分虚拟机上测试它,我没有测试了它)。该语法适用于 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 连接到您的 VM,这可能是来自一台主机的 运行。
如果您熟悉 Ansible 或其他一些配置工具,可能有比以前的 shell 脚本更好的解决方案。但是,如果这是一次性的并且您想要一个快速简便的解决方案,那么请继续使用 shell 脚本(尽管之前要小心测试它)。
对于您未来的 Compute Engine VM,如果您所有的 VM 都具有相似的配置,我建议您看一下 instance templates or images。您可以创建一个预安装 Stackdriver 监控代理的特定实例模板或映像,并从这些实例创建您未来的所有 VM template/image。
我需要在我的所有计算引擎 VM 上 install Monitoring Agent,我想知道是否可以使用某种类型的启动脚本或类似的东西自动完成它。那可能吗?
根据 Google,这些是在单个 VM 上安装它的步骤:
启动脚本不是一个好的解决方案,因为每次启动实例时该脚本都会运行。即使 Stackdriver 监控代理安装很聪明,如果已经安装了代理也不会重新安装(也许会,我不知道),但在这里使用启动脚本似乎并不合适。如果您想在每次启动时安装它(也许是为了保持更新),它可能是一个解决方案,但对于您的情况(在所有现有 VM 上安装一次)可能有更好的解决方案。
如果您在 VM 上拥有 root 访问权限,并使用 Google Cloud SDK,您可以简单地迭代您的 VM 并通过 SSH 对每个 VM 执行 运行 远程命令,如下例假设你所有的虚拟机都在同一个项目中 $MY_PROJECT
(在生产环境中的所有虚拟机上 运行 之前,请小心地在一小部分虚拟机上测试它,我没有测试了它)。该语法适用于 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 连接到您的 VM,这可能是来自一台主机的 运行。
如果您熟悉 Ansible 或其他一些配置工具,可能有比以前的 shell 脚本更好的解决方案。但是,如果这是一次性的并且您想要一个快速简便的解决方案,那么请继续使用 shell 脚本(尽管之前要小心测试它)。
对于您未来的 Compute Engine VM,如果您所有的 VM 都具有相似的配置,我建议您看一下 instance templates or images。您可以创建一个预安装 Stackdriver 监控代理的特定实例模板或映像,并从这些实例创建您未来的所有 VM template/image。