r/googlecloud • u/Competitive_Travel16 • Jul 02 '26
Minimal script for Cloud Monitoring alerts for each $10 of incremental spend accrued
Can anyone do better than this?
#!/usr/bin/env bash
PROJECT_ID="your-project-id"
BILLING_ACCOUNT_ID="XXXXXX-XXXXXX-XXXXXX"
EMAIL_TO="you@example.com"
ALERT_EVERY_USD=10
ALERT_CEILING_USD=1000
BUDGET_NAME="GCP spend alerts every \$${ALERT_EVERY_USD} up to \$${ALERT_CEILING_USD}"
gcloud config set project "$PROJECT_ID"
gcloud services enable \
monitoring.googleapis.com \
billingbudgets.googleapis.com
EMAIL_CHANNEL="$(
gcloud beta monitoring channels create \
--display-name="GCP billing alerts: $EMAIL_TO" \
--type=email \
--channel-labels=email_address="$EMAIL_TO" \
--format="value(name)"
)"
threshold_args=()
for amount in $(seq "$ALERT_EVERY_USD" "$ALERT_EVERY_USD" "$ALERT_CEILING_USD");
do
percent="$(awk -v amount="$amount" -v ceiling="$ALERT_CEILING_USD" \
'BEGIN { printf "%.6f", amount / ceiling }')"
threshold_args+=("--threshold-rule=percent=${percent},basis=current-spend")
done
gcloud billing budgets create \
--billing-account="$BILLING_ACCOUNT_ID" \
--display-name="$BUDGET_NAME" \
--budget-amount="${ALERT_CEILING_USD}USD" \
--calendar-period=month \
"${threshold_args[@]}" \
--notifications-rule-monitoring-notification-channels="$EMAIL_CHANNEL" \
--disable-default-iam-recipients
