根據預設,作業套件代理程式會收集指標,擷取 Compute Engine 虛擬機器 (VM) 上執行的程序相關資訊。這組指標稱為「程序指標」,可透過前置字元 agent.googleapis.com/processes 識別。
舊版 Monitoring 代理程式也會收集 Compute Engine 或 Amazon Elastic Compute Cloud (EC2) VM 的這些指標。Google Kubernetes Engine (GKE) 不會收集程序指標。
自 2021 年 8 月 6 日起,系統會開始針對這些指標收費,詳情請參閱「Google Cloud Observability 定價」頁面的「可計費指標」一節。這組程序指標歸類為可收費,但從未收取費用。
本文說明如何使用工具將程序指標視覺化、如何根據這些指標判斷擷取的資料量,以及如何盡量減少相關費用。
使用程序指標
您可以使用 Metrics Explorer 或自訂資訊主頁建立圖表,將程序指標資料視覺化。詳情請參閱「使用資訊主頁和圖表」。此外,Cloud Monitoring 還包含兩個預先定義的資訊主頁上的程序指標資料:
- Monitoring 的「VM Instances」(VM 執行個體) 資訊主頁
- Compute Engine 中的 VM 執行個體「詳細資料」資訊主頁
以下各節將說明這些資訊主頁。
Monitoring:查看匯總程序指標
如要在指標範圍內查看匯總的程序指標,請前往「VM Instances」(VM 執行個體) 資訊主頁的「Processes」(程序) 分頁標籤:
-
在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
從清單中選取「VM 執行個體」資訊主頁。
按一下「程序」。
以下螢幕截圖顯示「監控程序」頁面範例:
您可以使用「程序」分頁中的圖表,找出指標範圍內消耗最多 CPU 和記憶體,以及磁碟使用率最高的程序。
Compute Engine:查看資源消耗量最高的 VM 成效指標
如要查看效能圖表,瞭解專案中消耗最多資源的五個 VM,請前往 VM 執行個體的「可觀測性」 Google Cloud 分頁:
-
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Compute Engine」的結果。
- 按一下「觀測能力」。
以下螢幕截圖顯示 Compute Engine「Observability」(觀測能力) 頁面的範例。
如要瞭解如何使用這些指標診斷 VM 問題,請參閱「排解 VM 效能問題」。
Compute Engine:查看各 VM 的程序指標
如要查看單一 Compute Engine 虛擬機器 (VM) 上執行的程序清單,以及資源消耗量最高的程序圖表,請前往 VM 的「Observability」(觀測能力) 分頁:
-
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Compute Engine」的結果。
在「執行個體」分頁中,按一下要檢查的 VM 名稱。
按一下「可觀測性」,查看這部 VM 的指標。
在「觀測能力」分頁的導覽窗格中,選取「程序」。
以下螢幕截圖顯示 Compute Engine「Processes」(程序) 頁面的範例:
程序指標最多會保留 24 個月,因此您可以回溯查看這些指標,將資源耗用異常情形歸因於特定程序,或找出最耗費資源的程序。舉例來說,下圖顯示 CPU 資源消耗百分比最高的程序。您可以使用時間範圍選取器,變更圖表的時間範圍。日期範圍選取器提供預設值 (例如最近一小時),您也可以輸入自訂日期範圍。
「Running Processes」(執行中的程序) 表格會列出資源消耗量,類似於 Linux top 指令的輸出內容。根據預設,表格會顯示最新資料的數據匯報。
不過,如果您在圖表上選取過去的時間範圍,表格會顯示該範圍結束時執行的程序。
如要瞭解如何使用這些指標診斷 VM 問題,請參閱「排解 VM 效能問題」。
代理收集的程序指標
使用舊版 Monitoring 代理程式時,Linux 代理程式會從 Compute Engine VM 和 Amazon Elastic Compute Cloud (EC2) VM 上執行的程序,收集下表列出的所有指標。
您可以停用 Ops Agent (2.0.0 以上版本) 和 Linux 舊版 Monitoring 代理程式收集程序指標的功能。在 Windows 上,您可以透過 Ops Agent (2.0.0 以上版本) 停用程序指標的收集作業。不過,您無法停用舊版 Monitoring 代理程式的收集功能。在這種情況下,建議您升級至 Ops Agent 2.0.0 以上版本。
詳情請參閱「停用程序指標」。
程序指標表
判斷目前的擷取量
您可以使用 Metrics Explorer,查看處理程序指標的擷取資料量。請按照下列程序操作:
-
前往 Google Cloud 控制台的 leaderboard「指標探索器」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
在查詢建立工具窗格的工具列中,選取名為 code「PromQL」PromQL的按鈕。
如要查看
gce_instance和aws_ec2_instance資源的程序指標點總數,請按照下列步驟操作:輸入下列查詢:
sum_over_time( sum by (resource_type) ( label_replace( label_replace( sum(count_over_time({"agent.googleapis.com/processes/cpu_time", monitored_resource="gce_instance"}[1m])), "metric_suffix", "cpu_time", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/disk/read_bytes_count", monitored_resource="gce_instance"}[1m])), "metric_suffix", "disk_read_bytes_count", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/disk/write_bytes_count", monitored_resource="gce_instance"}[1m])), "metric_suffix", "disk_write_bytes_count", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/rss_usage", monitored_resource="gce_instance"}[1m])), "metric_suffix", "rss_usage", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/vm_usage", monitored_resource="gce_instance"}[1m])), "metric_suffix", "vm_usage", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/count_by_state", monitored_resource="gce_instance"}[1m])), "metric_suffix", "count_by_state", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/fork_count", monitored_resource="gce_instance"}[1m])), "metric_suffix", "fork_count", "", "" ), "resource_type", "gce_instance", "", "" ) or label_replace( label_replace( sum(count_over_time({"agent.googleapis.com/processes/cpu_time", monitored_resource="aws_ec2_instance"}[1m])), "metric_suffix", "cpu_time", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/disk/read_bytes_count", monitored_resource="aws_ec2_instance"}[1m])), "metric_suffix", "disk_read_bytes_count", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/disk/write_bytes_count", monitored_resource="aws_ec2_instance"}[1m])), "metric_suffix", "disk_write_bytes_count", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/rss_usage", monitored_resource="aws_ec2_instance"}[1m])), "metric_suffix", "rss_usage", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/vm_usage", monitored_resource="aws_ec2_instance"}[1m])), "metric_suffix", "vm_usage", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/count_by_state", monitored_resource="aws_ec2_instance"}[1m])), "metric_suffix", "count_by_state", "", "" ) or label_replace( sum(count_over_time({"agent.googleapis.com/processes/fork_count", monitored_resource="aws_ec2_instance"}[1m])), "metric_suffix", "fork_count", "", "" ), "resource_type", "aws_ec2_instance", "", "" ) )[1d:] )按一下 [Run query] (執行查詢),產生的圖表會顯示各資源類型的值。
停用程序指標收集功能
您可以透過多種方式,停用 Ops Agent (2.0.0 以上版本) 和 Linux 舊版 Monitoring 代理程式的指標收集功能。
代理程式只能在 Compute Engine VM 上執行,因此這些程序僅適用於該平台。
如果您在 Windows 上執行 2.0.0 以下版本或舊版 Monitoring 代理程式,就無法停用 Ops Agent 的收集作業。如要在 Windows 上停用這些指標的收集作業,建議您升級至 Ops Agent 2.0.0 以上版本。詳情請參閱「安裝 Ops Agent」。
一般程序如下:
連線至 VM。
複製現有設定檔做為備份。請將備份副本儲存在代理程式設定目錄以外的位置,以免代理程式嘗試載入這兩個檔案。舉例來說,下列指令會複製 Linux Monitoring 代理程式的設定檔:
cp /etc/stackdriver/collectd.conf BACKUP_DIR/collectd.conf.bak
請使用下列其中一節所述的選項變更設定:
重新啟動代理程式,即可套用新設定:
- 舊版 Monitoring 代理程式:
sudo service stackdriver-agent restart - 作業套件代理程式:
sudo service google-cloud-ops-agent restart
- 舊版 Monitoring 代理程式:
確認系統不再為這個 VM 收集程序指標:
-
前往 Google Cloud 控制台的leaderboard「Metrics Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
在查詢建立工具窗格的工具列中,選取名稱為 code「PromQL」PromQL的按鈕。
如果是
gce_instance資源,請輸入下列查詢,並將 VM_NAME 替換為這個 VM 的名稱:rate({"agent.googleapis.com/processes/cpu_time", monitored_resource="gce_instance", metadata_system_name="VM_NAME"}[1m])按一下 [Run Query] (執行查詢)。
-
Linux 或 Windows 上的 Ops Agent
Ops Agent 設定檔的位置取決於作業系統:
- Linux:
/etc/google-cloud-ops-agent/config.yaml - Windows 系統:
C:\Program Files\Google\Cloud Operations\Ops Agent\config\config.yaml
如要停用 Ops Agent 收集所有程序指標的功能,請在 config.yaml 檔案中加入下列內容:
metrics:
processors:
metrics_filter:
type: exclude_metrics
metrics_pattern:
- agent.googleapis.com/processes/*
這樣一來,metrics 服務中套用至預設管道的 metrics_filter 處理器,就不會收集程序指標。
如要進一步瞭解 Ops Agent 的設定選項,請參閱「設定 Ops Agent」。
Linux 上的舊版 Monitoring 代理程式
如要停用舊版 Monitoring 代理程式的程序指標收集功能,可以採取下列做法:
以下各節將說明各個選項,並列出相關優點和風險。
修改代理程式的設定檔
使用這個選項時,您會直接編輯代理程式的主要設定檔 /etc/stackdriver/collectd.conf,移除啟用程序指標收集功能的區段。
程序
您需要從 collectd.conf 檔案中刪除三組項目:
刪除下列
LoadPlugin指令和外掛程式設定:LoadPlugin processes <Plugin "processes"> ProcessMatch "all" ".*" Detail "ps_cputime" Detail "ps_disk_octets" Detail "ps_rss" Detail "ps_vm" </Plugin>刪除下列
PostCacheChain指令,以及PostCache鏈結的設定:PostCacheChain "PostCache" <Chain "PostCache"> <Rule "processes"> <Match "regex"> Plugin "^processes$" Type "^(ps_cputime|disk_octets|ps_rss|ps_vm)$" </Match> <Target "jump"> Chain "MaybeThrottleProcesses" </Target> Target "stop" </Rule> <Rule "otherwise"> <Match "throttle_metadata_keys"> OKToThrottle false HighWaterMark 5700000000 # 950M * 6 LowWaterMark 4800000000 # 800M * 6 </Match> <Target "write"> Plugin "write_gcm" </Target> </Rule> </Chain>刪除
PostCache鏈結使用的MaybeThrottleProcesses鏈結:<Chain "MaybeThrottleProcesses"> <Rule "default"> <Match "throttle_metadata_keys"> OKToThrottle true TrackedMetadata "processes:pid" TrackedMetadata "processes:command" TrackedMetadata "processes:command_line" TrackedMetadata "processes:owner" </Match> <Target "write"> Plugin "write_gcm" </Target> </Rule> </Chain>
優點和風險
- 優點
- 由於系統不會收集指標,因此代理程式耗用的資源會減少。
- 如果你對
collectd.conf檔案進行其他變更,或許可以保留這些變更。
- 風險
- 您必須使用
root帳戶,才能編輯這個設定檔。 - 這樣做可能會在檔案中引入錯別字。
- 您必須使用
取代代理程式的設定檔
這個選項會將代理程式的主要設定檔,替換為已移除相關部分的預先編輯版本。
程序
從 GitHub 存放區將預先編輯的
collectd-no-process-metrics.conf檔案下載至/tmp目錄:cd /tmp && curl -sSO https://raw.githubusercontent.com/Stackdriver/agent-packaging/master/collectd-no-process-metrics.conf將現有的
collectd.conf檔案替換為預先編輯的檔案:cp /tmp/collectd-no-process-metrics.conf /etc/stackdriver/collectd.conf
優點和風險
- 優點
- 您減少了代理程式耗用的資源,因為系統不會收集指標。
- 您不必手動編輯
root檔案。 - 設定管理工具可以取代檔案。
- 風險
- 如果您對
collectd.conf檔案進行其他變更,則必須將這些變更合併到替換檔案中。
- 如果您對
疑難排解
本文所述程序會變更代理程式設定,因此最可能發生下列問題:
- 權限不足,無法編輯設定檔。設定檔必須透過
root帳戶編輯。 - 直接編輯設定檔時,可能會不小心輸入錯誤。
如要瞭解如何解決其他問題,請參閱「排解 Monitoring 代理程式問題」。
Windows 上的舊版 Monitoring 代理程式
您無法停用在 Windows VM 上執行的舊版 Monitoring 代理程式收集程序指標。這個代理無法設定。 如要在 Windows 上停用這些指標的收集作業,建議您升級至 Ops Agent 2.0.0 以上版本。詳情請參閱「安裝 Ops Agent」。
如果您執行的是 Ops Agent,請參閱「Linux 或 Windows 上的 Ops Agent」。