用于监控Google Cloud未使用的外部IP的脚本

当Google Cloud的外部静态IP未使用时,您将收到通知,以便您可以释放它们以节省费用。

我在查看我的Google Cloud Platform(GCP)账单时注意到了这个:

这不是Google的错,而是我的错。我预留了一个静态IP,但在删除虚拟机后忘记释放它。这是常有的事情,我想不仅是我一个人这样。

我在GCP控制台周围搜索了一下,没找到任何在静态IP未使用时发出警报的选项。也许是一个产品功能请求。

但是,我不会再重复这个错误了。

感谢Google Cloud SDK提供的gcloudCLI,您可以在脚本中使用它来执行几乎任何操作。我想写一个脚本,每天运行一次,并在任何静态IP未使用时通知。有多种方法可以进行通知,而第一个方便的方法是电子邮件。但是,我没有运行邮件服务器,因此我不得不找到一些替代方案。

在搜索几分钟后,我找到了Pushbullet。它是一个通知系统,可以用来将警报推送到Chrome,Firefox,Safari,Opera,Android,iOS和Windows。基本上涵盖了一切。我还能要求什么呢?

现在,您可以猜测,如果您没有在服务器上或任何您想运行gcloud命令的地方运行邮件服务器,那么Pushbullet现在就是必需品,以便能够在不使用邮件服务器时收到通知。

如果您决定选择Pushbullet,请创建一个免费帐户,设置好您想要接收通知的位置,然后转到设置生成访问令牌。

我假设您已经准备好并且可以在服务器上使用gcloud命令。

下面是这个小脚本。创建一个文件,并填入以下内容,假设文件名为gcp-unused-ip-monitor.sh

#!/bin/bash

if gcloud compute addresses list | grep EXTERNAL | grep RESERVED ; then 
	curl -u $Access_TOKEN: https://api.pushbullet.com/v2/pushes -d type=note -d title="Google Cloud IP NOT_INUSE" -d body="某些外部IP未被使用"
else :
fi

不要忘记使用实际值更新$Access_TOKEN。

保存文件并通过赋予执行权限使其可执行。

chmod 755 gcp-unused-ip-monitor.sh

手动运行脚本以验证警报。如果有任何未使用的IP,您将收到一个警报。

上面的通知来自Chrome,我已经配置Pushbullet来进行警报。但如上所述,您可以将警报推送到移动设备或其他浏览器。选择您喜欢的。

现在,我们有一个可以工作的脚本,接下来,我们需要每天自动运行它。

要计划每天运行脚本,让我们使用UNIX的操作系统上可用的Crontab

使用crontab -e编辑crontab,并添加以下内容

0 0 * * * $PATH/gcp-unused-ip-monitor.sh > /dev/null

将$PATH更新为脚本所在的路径。上面的cron条目将在每天午夜运行脚本。您可以根据自己的喜好调整运行时间。

这是多么简单呀!

一旦收到警报,您可以转到GCP控制台,查看未使用的IP并将其释放。

希望这个小脚本能为您节省一些$$$。

类似文章