用于监控Google Cloud未使用的外部IP的脚本
当Google Cloud的外部静态IP未使用时,您将收到通知,以便您可以释放它们以节省费用。
我在查看我的Google Cloud Platform(GCP)账单时注意到了这个:
这不是Google的错,而是我的错。我预留了一个静态IP,但在删除虚拟机后忘记释放它。这是常有的事情,我想不仅是我一个人这样。
我在GCP控制台周围搜索了一下,没找到任何在静态IP未使用时发出警报的选项。也许是一个产品功能请求。
但是,我不会再重复这个错误了。
感谢Google Cloud SDK提供的gcloud
CLI,您可以在脚本中使用它来执行几乎任何操作。我想写一个脚本,每天运行一次,并在任何静态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并将其释放。
希望这个小脚本能为您节省一些$$$。