監控 VM 上的程序

根據預設,作業套件代理程式會收集指標,擷取 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 執行個體「詳細資料」資訊主頁

以下各節將說明這些資訊主頁。

監控:查看匯總的程序指標

如要查看指標範圍內的匯總程序指標,請前往「VM Instances」(VM 執行個體) 資訊主頁的「Processes」(程序) 分頁:

  1. 在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁) 頁面:

    前往「Dashboards」(資訊主頁)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。

  2. 從清單中選取「VM Instances」(VM 執行個體) 資訊主頁。

  3. 按一下「程序」。

下方的螢幕截圖顯示「監控程序」頁面的範例:

Monitoring 的「程序」頁面會顯示匯總的程序指標。

您可以使用「程序」分頁中的圖表,找出指標範圍內消耗最多 CPU 和記憶體,以及磁碟使用率最高的程序。

Compute Engine:查看耗用最多資源的 VM 的效能指標

如要查看顯示專案中資源用量最高的五個 VM 的成效圖表,請前往 VM 執行個體的「可觀測性」分頁: Google Cloud

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面:

    前往「VM instances」(VM 執行個體) 頁面

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Compute Engine」的結果。

  2. 按一下「可觀測性」。

以下螢幕截圖顯示 Compute Engine「可觀測性」頁面的範例。

Compute Engine 的「可觀測性」**頁面會顯示消耗特定資源的前五大 VM。

如要瞭解如何使用這些指標診斷 VM 問題,請參閱「排解 VM 效能問題」。

Compute Engine:查看每個 VM 的程序指標

如要查看在單一 Compute Engine 虛擬機器 (VM) 上執行的程序清單,以及資源耗用量最高的程序圖表,請前往 VM 的「可觀測性」分頁:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面:

    前往「VM instances」(VM 執行個體) 頁面

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Compute Engine」的結果。

  2. 在「執行個體」分頁中,按一下要檢查的 VM 名稱。

  3. 按一下「可觀測性」,查看這部 VM 的指標。

  4. 在「Observability」(可觀測性) 分頁的導覽窗格中,選取「Processes」(程序)。

以下螢幕截圖顯示 Compute Engine「程序」頁面的範例:

Compute Engine 的「Processes」(程序) 頁面會顯示每個 VM 的程序指標。

程序指標最多會保留 24 個月,因此您可以回溯查看這些指標,將資源耗用異常情形歸因於特定程序,或找出最耗費資源的程序。舉例來說,下圖顯示耗用最高百分比 CPU 資源的程序。您可以使用時間範圍選取器變更圖表的時間範圍。時間範圍選取器提供預設值 (例如最近一小時),也允許您輸入自訂時間範圍。

您可以使用程序指標,找出耗用最多資源的程序。

「執行中的程序」表格會列出資源耗用量,類似於 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 代理程式上停用收集作業;在這種情況下,建議您升級至作業套件代理程式 2.0.0 以上版本。

詳情請參閱「停用程序指標」。

程序指標表

這個表格中的「指標類型」字串開頭必須為 agent.googleapis.com/processes/。表格中的項目已省略該前置字串。查詢標籤時,請使用 metric.labels. 前置字串,例如 metric.labels.LABEL="VALUE"。

指標類型 推出階段 (資源階層層級)
顯示名稱
種類、類型、單位
受監控資源
說明
標籤
count_by_state GA  (專案)
程序
GAUGE、DOUBLE、1
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
處於指定狀態的程序數量。僅適用於 Linux。每 60 秒取樣一次。
state: 跑步、睡覺、殭屍等。
cpu_time GA  (project)
程序 CPU
CUMULATIVE、INT64、us{CPU}
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
指定程序的 CPU 時間。每 60 秒取樣一次。
process: 程序名稱。
user_or_syst: 使用者或系統程序。
command: 處理指令。
command_line: 處理指令列,最多 1024 個字元。
owner: 程序擁有者。
pid: 程序 ID。
disk/read_bytes_count GA  (專案)
處理磁碟讀取 I/O
CUMULATIVE、INT64、By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
處理磁碟讀取 I/O。僅適用於 Linux。每 60 秒取樣一次。
process: 程序名稱。
command: 處理指令。
command_line: 處理指令列,最多 1024 個字元。
owner: 程序擁有者。
pid: 程序 ID。
disk/write_bytes_count GA  (project)
處理磁碟寫入 I/O
CUMULATIVE、INT64、By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
處理磁碟寫入 I/O。僅適用於 Linux。每 60 秒取樣一次。
process: 程序名稱。
command: 處理指令。
command_line: 處理指令列,最多 1024 個字元。
owner: 程序擁有者。
pid: 程序 ID。
fork_count GA  (專案)
Fork 數量
CUMULATIVE、INT64、1
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
分叉的程序總數。僅適用於 Linux。每 60 秒取樣一次。
rss_usage GA  (專案)
程序常駐記憶體
GAUGE、DOUBLE、By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
指定程序的常駐記憶體用量。僅適用於 Linux。每 60 秒取樣一次。
process: 程序名稱。
command: 處理指令。
command_line: 處理指令列,最多 1024 個字元。
owner: 程序擁有者。
pid: 程序 ID。
vm_usage GA  (專案)
程序虛擬記憶體
GAUGE、DOUBLE、By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
指定程序的 VM 用量。每 60 秒取樣一次。
process: 程序名稱。
command: 處理指令。
command_line: 處理指令列,最多 1024 個字元。
owner: 程序擁有者。
pid: 程序 ID。
windows/handles ALPHA  (project)
處理開啟的控制代碼 (Windows)
GAUGE、INT64、1
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
指定程序的開啟控制代碼計數。僅適用於 Windows。每 60 秒取樣一次。
process: 程序名稱。
command: 處理指令。
command_line: 處理指令列,最多 1024 個字元。
owner: 程序擁有者。
pid: 程序 ID。

表格生成時間:2026 年 9 月 25 日 02:24:56 (世界標準時間)。

判斷目前的擷取作業

您可以使用 Metrics Explorer,查看處理程序指標的擷取資料量。請按照下列程序操作:

  1. 前往 Google Cloud 控制台的 「指標探索器」頁面:

    前往 Metrics Explorer

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。

  2. 在查詢建立工具窗格的工具列中,選取名稱為 「PromQL」PromQL的按鈕。

  3. 如要查看 gce_instance 和 aws_ec2_instance 資源的程序指標點總數,請按照下列步驟操作:

    1. 輸入下列查詢:

      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:]
      )
      
    2. 按一下 [Run query] (執行查詢),產生的圖表會顯示各資源類型的值。

估算指標費用

Monitoring 計費示例說明如何估算擷取指標的費用。這些範例可套用至程序指標。

  • 系統每 60 秒會對所有程序指標取樣一次,且所有程序指標都會寫入資料點,這些資料點在計算費用時會計為 8 個位元組。

  • 程序指標的價格設定為定價範例中使用的標準用量成本的 5%。因此,如果您假設這些範例情境中的所有指標都是程序指標,則可將每個情境的總成本的 5% 做為程序指標成本的預估值。

停用程序指標收集功能

您可以透過多種方式,停用 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」。

一般程序如下:

  1. 連線至 VM。

  2. 複製現有設定檔做為備份。將備份副本儲存在代理程式設定目錄以外的位置,以免代理程式嘗試載入這兩個檔案。舉例來說,下列指令會複製 Linux 上的監控代理程式設定檔:

    cp /etc/stackdriver/collectd.conf BACKUP_DIR/collectd.conf.bak
    
  3. 如要變更設定,請使用下列其中一種方式:

  4. 重新啟動代理程式,以採用新設定:

    • 舊版 Monitoring 代理程式:sudo service stackdriver-agent restart
    • 作業套件代理程式:sudo service google-cloud-ops-agent restart
  5. 確認系統不再為這個 VM 收集程序指標:

    1. 前往 Google Cloud 控制台的 「指標探索器」頁面:

      前往 Metrics Explorer

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。

    2. 在查詢建立工具窗格的工具列中,選取名稱為 「PromQL」PromQL的按鈕。

    3. 如果是 gce_instance 資源,請輸入下列查詢,並將 VM_NAME 替換為這個 VM 的名稱:

      rate({"agent.googleapis.com/processes/cpu_time", monitored_resource="gce_instance", metadata_system_name="VM_NAME"}[1m])
      
    4. 按一下 [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 檔案中刪除三組項目:

  1. 刪除下列 LoadPlugin 指令和外掛程式設定:

    LoadPlugin processes
    
    <Plugin "processes">
      ProcessMatch "all" ".*"
      Detail "ps_cputime"
      Detail "ps_disk_octets"
      Detail "ps_rss"
      Detail "ps_vm"
    </Plugin>
    
  2. 刪除下列 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>
    
  3. 刪除 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 帳戶編輯這個設定檔。
    • 這樣做可能會在檔案中加入錯字。

取代代理程式的設定檔

使用這個選項時,系統會以預先編輯的版本取代代理程式的主要設定檔,並為您移除相關區段。

程序
  1. 從 GitHub 存放區將預先編輯的 collectd-no-process-metrics.conf 檔案下載至 /tmp 目錄,然後執行下列操作:

    cd /tmp && curl -sSO https://raw.githubusercontent.com/Stackdriver/agent-packaging/master/collectd-no-process-metrics.conf
    
  2. 將現有的 collectd.conf 檔案替換為預先編輯的檔案:

    cp /tmp/collectd-no-process-metrics.conf /etc/stackdriver/collectd.conf
    
福利和風險
  • 福利
    • 您減少了代理程式耗用的資源,因為系統不會收集指標。
    • 您不必手動編輯 root 檔案。
    • 設定管理工具可以輕鬆取代檔案。
  • 風險
    • 如果您對 collectd.conf 檔案進行其他變更,請將這些變更合併至替代檔案。

疑難排解

本文件所述程序是變更代理程式的設定,因此最有可能發生下列問題:

  • 權限不足,無法編輯設定檔。設定檔必須從 root 帳戶編輯。
  • 如果直接編輯設定檔,可能會在其中引入錯別字。

如要瞭解如何解決其他問題,請參閱「排解監控代理程式問題」。

Windows 上的舊版 Monitoring 代理程式

您無法停用在 Windows VM 上執行的舊版 Monitoring 代理程式收集程序指標。這個代理程式無法設定。 如要在 Windows 上停用這些指標的收集作業,建議您升級至 Ops Agent 2.0.0 以上版本。詳情請參閱「安裝 Ops Agent」。

如果您執行的是 Ops Agent,請參閱「Linux 或 Windows 上的 Ops Agent」。