監控 VM 上的程序

根據預設,作業套件代理程式和舊版 Monitoring 代理程式已設為用來收集指標,擷取在 Compute Engine 虛擬機器 (VM) 上執行的程序相關資訊。您也可以使用 Monitoring 代理程式,在 Amazon Elastic Compute Cloud (EC2) VM 上收集這些指標。這組指標稱為「處理指標」,可透過前置字串 agent.googleapis.com/processes 辨識。這些指標不會在 Google Kubernetes Engine (GKE) 上收集。

自 2021 年 8 月 6 日起,我們將針對這些指標收取費用,詳情請參閱「計費指標」一節。這組程序指標已歸類為可計費,但從未收取費用。

本文件說明可用於將處理指標視覺化的工具、如何判斷從這些指標擷取的資料量,以及如何盡量降低相關費用。

使用程序指標

您可以使用 Metrics Explorer 或自訂資訊主頁建立的圖表,以視覺化方式呈現程序指標資料。詳情請參閱「使用資訊主頁和圖表」。此外,Cloud Monitoring 會在兩個預先定義的資訊主頁上納入程序指標資料:

  • 監控中的「VM 執行個體」資訊主頁
  • Compute Engine 中的 VM 執行個體「Details」資訊主頁

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

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

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

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

    前往「Dashboards」(資訊主頁)

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

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

  3. 按一下「程序」

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

監控頁面中的「Processes」頁面會顯示匯總的程序指標。

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

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

如要查看顯示 Google Cloud 專案中五個使用最多資源的 VM 的效能圖表,請前往 VM 執行個體的「Observability」分頁:

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

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

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

  2. 按一下「Observability」(觀測能力)

下圖為 Compute Engine Observability 頁面的範例。

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

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

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

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

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

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

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

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

  3. 按一下「Observability」,查看這個 VM 的指標。

  4. 在「Observability」(觀測能力) 分頁的導覽窗格中,選取「Processes」

下列螢幕截圖顯示 Compute Engine「Processes」頁面的範例:

Compute Engine 中的「Processes」**頁面會顯示每個 VM 程序的計量資料。

處理作業指標最多可保留 24 小時,因此您可以使用這些指標回顧過去,並將資源用量異常歸因於特定處理作業,或找出最耗費資源的使用者。舉例來說,下圖顯示消耗 CPU 資源百分比最高的程序。您可以使用時間範圍選擇器變更圖表的時間範圍。時間範圍選取器提供預設值 (例如最近一小時),也讓您輸入自訂時間範圍。

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

「Running Processes」表格會列出資源用量,類似於 Linux top 指令的輸出內容。根據預設,表格會顯示最近資料的快照。不過,如果您在圖表中選取的時間範圍已結束,表格會顯示在該範圍結束時執行的程序。

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

代理程式收集的程序指標

Linux 代理程式會從在 Compute Engine VM 上執行的程序收集下表所列的所有指標,並透過監控代理程式收集 Amazon Elastic Compute Cloud (EC2) VM 的資料。您可以停用作業套件代理程式 (2.0.0 以上版本) 和舊版 Monitoring 代理程式收集這類資料的功能。

您也可以停用在 Windows VM 上執行的作業套件代理程式 (2.0.0 以上版本) 的程序指標收集作業。

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

如果您想在 Windows 上停用這些指標的收集作業,建議您升級至作業套件代理程式 2.0.0 以上版本。詳情請參閱「安裝 Ops Agent」。

程序指標表

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

指標類型 推出階段(資源階層層級)
顯示名稱
類別、類型、單位
受控資源
說明
標籤
count_by_state GA(專案)
程序
GAUGEDOUBLE1
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
處於指定狀態的程序數量。僅適用於 Linux。取樣頻率為每 60 秒一次。
state: Running、sleeping、zombie 等。
cpu_time GA(專案)
Process CPU
CUMULATIVEINT64us{CPU}
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
指定程序的 CPU 時間。取樣頻率為每 60 秒一次。
process: 程序名稱。
user_or_syst:使用者或系統程序。
command: 處理指令。
command_line: Process 指令列,最多 1024 個半形字元。
owner: 程序擁有者。
pid: 程序 ID。
disk/read_bytes_count GA(project)
處理磁碟讀取 I/O
CUMULATIVEINT64By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
處理磁碟讀取 I/O。僅適用於 Linux。取樣頻率為每 60 秒一次。
process: 程序名稱。
command: 處理指令。
command_line: Process 指令列,最多 1024 個半形字元。
owner: 程序擁有者。
pid: 程序 ID。
disk/write_bytes_count GA(專案)
處理磁碟寫入 I/O
CUMULATIVEINT64By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
處理磁碟寫入 I/O。僅適用於 Linux。取樣頻率為每 60 秒一次。
process: 程序名稱。
command: 處理指令。
command_line: Process 指令列,最多 1024 個半形字元。
owner: 程序擁有者。
pid: 程序 ID。
fork_count GA(專案)
分支次數
CUMULATIVEINT641
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
分支的程序總數。僅適用於 Linux。取樣頻率為每 60 秒一次。
rss_usage GA(project)
Process resident memory
GAUGEDOUBLEBy
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
指定程序的常駐記憶體用量。僅適用於 Linux。取樣頻率為每 60 秒一次。
process: 程序名稱。
command: 處理指令。
command_line: Process 指令列,最多 1024 個半形字元。
owner: 程序擁有者。
pid: 程序 ID。
vm_usage GA(專案)
程序虛擬記憶體
GAUGEDOUBLEBy
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
指定程序的 VM 用量。取樣頻率為每 60 秒一次。
process: 程序名稱。
command: 處理指令。
command_line: Process 指令列,最多 1024 個半形字元。
owner: 程序擁有者。
pid: 程序 ID。

表格產生時間:2025 年 6 月 12 日 21 點 28 分 36 秒 (世界標準時間)。

判斷目前的攝取量

您可以使用 Metrics Explorer 查看目前針對程序指標所攝入的資料量。請使用下列程序:

  1. 前往 Google Cloud 控制台的 「Metrics Explorer」頁面:

    前往 Metrics Explorer

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

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

  3. 確認「Language」切換按鈕中已選取「MQL」。語言切換鈕位於可讓您設定查詢格式的工具列中。

  4. 如要查看 gce_instanceaws_ec2_instance 資源的處理指標點總數,請按照下列步驟操作:

    1. 輸入下列查詢:

      def tagged_process_metric name = metric 'agent.googleapis.com/processes/'$name
      | add [metric_suffix: $name];
      
      def process_metrics resource_type = fetch $resource_type
      | { @tagged_process_metric 'cpu_time'
        ; @tagged_process_metric 'disk/read_bytes_count'
        ; @tagged_process_metric 'disk/write_bytes_count'
        ; @tagged_process_metric 'rss_usage'
        ; @tagged_process_metric 'vm_usage'
        ; @tagged_process_metric 'count_by_state'
        ; @tagged_process_metric 'fork_count' }
      | within 1d
      | group_by [metric_suffix], 1m, [row_count: row_count()]
      | union;
      
      { @process_metrics 'gce_instance'
      ; @process_metrics 'aws_ec2_instance' }
      | outer_join 0, 0
      | { rename [], [out: val(0)] | add [resource_type: 'gce_instance']
        ; rename [], [out: val(1)] | add [resource_type: 'aws_ec2_instance'] }
      | union
      | group_by drop[metric_suffix], 1d, .sum
      
    2. 按一下 [Run query] (執行查詢),產生的圖表會顯示每個資源類型的值。

預估指標的費用

監控計費示例說明如何預估攝入指標的費用。這些範例可套用至程序指標。

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

  • 處理指標的價格會設為價格範例中使用的標準作業量成本的 5%。因此,如果您假設這些範例所述情境中的所有指標都是程序指標,就可以將每個情境的總成本的 5% 用於估算程序指標的成本。

停用程序指標收集功能

您可以透過多種方式,停用作業套件代理程式 (2.0.0 以上版本) 和 Linux 上的舊版 Monitoring 代理程式收集這些指標的功能。

代理程式只能在 Compute Engine VM 上執行,而 Monitoring 代理程式則只能在 Amazon Elastic Compute Cloud (EC2) VM 上執行;這些程序僅適用於這些平台。

如果您在 Windows 上執行的版本低於 2.0.0 或舊版 Monitoring 代理程式,就無法停用 Ops Agent 的收集功能。如果您想在 Windows 上停用這些指標的收集作業,建議您升級至 2.0.0 以上版本的作業套件代理程式。詳情請參閱「安裝 Ops Agent」。

一般程序如下所示:

  1. 連線至 VM。

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

    cp /etc/stackdriver/collectd.conf BACKUP_DIR/collectd.conf.bak
    
  3. 請使用下列所述的其中一個選項變更設定:

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

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

    1. 選取「Metrics Explorer」

    2. 按一下「MQL」MQL

    3. 針對 gce_instance 資源,請輸入下列查詢,並將 VM_NAME 替換為此 VM 的名稱:

      fetch gce_instance
      | metric 'agent.googleapis.com/processes/cpu_time'
      | filter (metadata.system_labels.name == 'VM_NAME')
      | align rate(1m)
      | every 1m
      

      如果是 aws_ec2_instance 資源,請在查詢中替換 gce_instance

    4. 按一下 [Run Query] (執行查詢)。

Linux 或 Windows 上的作業套件代理程式

作業套件代理程式的設定檔位置會因作業系統而異:

  • 適用於 Linux:/etc/google-cloud-ops-agent/config.yaml
  • Windows:C:\Program Files\Google\Cloud Operations\Ops Agent\config\config.yaml

如要停用作業套件代理程式收集所有程序指標的功能,請在 config.yaml 檔案中新增下列內容:

metrics:
  processors:
    metrics_filter:
      type: exclude_metrics
      metrics_pattern:
      - agent.googleapis.com/processes/*

這會在 metrics_filter 處理器中排除程序指標的收集作業,該處理器會套用至 metrics 服務中的預設管道。

如要進一步瞭解 Ops Agent 的設定選項,請參閱「設定 Ops Agent」。

Linux 上的監控代理程式

您可以使用下列選項,透過舊版 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 上的監控代理程式

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

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