Cloud Monitoring 可以用來監控系統狀態,並透過它來寄出警示通知。主要用來監控硬碟容量和一些自訂狀態,於是在所有機器裝上了 Ops Agent 來監控硬碟狀態。但後來發現帳單的費用驚人,於是研究了一下他的費用和如何降低成本。

費用

首先了解一下 Cloud Monitoring 定價,平常用到的只有第一個項目 Monitoring 資料,這部分前 150 MiB 是免費額度,如果能夠壓低在這之下就可以免費使用。本篇文章也是針對這項目說明。

帳單

點開帳單可以找到名為 Metric Volume 的項目,這就是 Cloud Monitoring 資料的費用。
帳單

可以看到月份的前幾天沒有這項目,大概在 5 號的時候才出現,這是因為前幾天是 150 MiB 的免費額度。可以看到後面每天都花費 $4.3 左右。這是八台主機的情況。

也可以看到多少流量被計算費用
費用

流量

從監控的[設定]頁簽中,在 GCP Projects 之下,展開專案名稱,可以看到流量報告。
流量

在 Agent Metrics 最右邊點擊[在 Metrics Exploer 中查看],可以查詢每個時間的流量狀況。
Metrics Exploer

不過這裡無法推算出費用,他計算方式蠻複雜的,有一些是免費流量,有一些是有折扣的流量。可以看到這裡顯示的流量和帳單顯示的計費流量不一致,不過可以用來快速查詢設定後的流量變化。

計費流量的部分,我從帳單反推,八台一天 $4.3,一台一天 $0.5375,每 MiB $0.2580 美元,所以預設情況下每台每天產生的計費流量為 2.08 MiB

改善方法

以減少流量為目標,採用以下策略:

  • 停用不重要的機器
  • 只傳送必要指標
  • 降低傳送頻率

我們可以修改 Ops Agent 設定檔來達成目的。輸入

1
sudo vi /etc/google-cloud-ops-agent/config.yaml

加入以下設定,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
metrics:
receivers:
hostmetrics:
type: hostmetrics
# 修改上傳的頻率,預設是 60 秒,例如改成 120 秒
collection_interval: 120s
processors:
metrics_filter:
type: exclude_metrics
metrics_pattern:
# 下面是要排除的指標,把需要的指標註解掉,例如只上傳硬碟相關的指標
- agent.googleapis.com/cpu/*
#- agent.googleapis.com/disk/*
- agent.googleapis.com/interface/*
- agent.googleapis.com/memory/*
- agent.googleapis.com/network/*
- agent.googleapis.com/swap/*
- agent.googleapis.com/processes/*
- agent.googleapis.com/pagefile/*
- agent.googleapis.com/iis/*
- agent.googleapis.com/mssql/*
service:
pipelines:
default_pipeline:
receivers: [hostmetrics]
processors: [metrics_filter]

重啟生效

1
sudo service google-cloud-ops-agent restart

舊版的 Ops Agent 可能不支援上面部分的設定。例如我有些舊的機器無法安裝最新的 Ops Agent,沒辦法排除指標。