Monitor and optimize job resources by viewing metrics
Stay organized with collections
Save and categorize content based on your preferences.
This document describes how to monitor and try to optimize the resources for a
Batch job by viewing metrics in Cloud Monitoring.
To learn more about the resources that a job runs on, see
Job resources.
For any job, Monitoring provides basic metrics such as CPU
utilization and network traffic. However, some metrics, such as memory and
process utilization, can only be collected if a job installs the Ops Agent.
Metrics for a job's resources help you evaluate the performance and utilization
of each resource. This information can help you identify improvements for any
future iterations of the job. For example, you might remove unutilized resources
to help optimize costs, or you might improve or increase strained resources to
help enhance performance.
Observe and monitor VMs in
the Compute Engine documentation provides relevant conceptual information
about VM metrics; however, different methods are recommended for viewing
VM metrics for Batch jobs. Specifically, the
Compute Engine documentation explains how to view metrics by using the
predefined Monitoring dashboards for Compute Engine or
Compute Engine pages in the Google Cloud console.
But, importantly, those methods don't display information about VMs that have
been deleted. As a result, don't use those methods unless you only want to view
metrics for Batch jobs while they are running.
View metrics for running and finished Batch jobs by
using Metrics Explorer charts as explained in this section.
Notably, charts are temporary unless you save
them to custom dashboards.
To create a chart for viewing one or more metrics, do the following:
Without filters, each VM metric in a chart includes data from all the VMs in
your project. Optionally, if you want to filter the chart to only include
metrics from all or specific Batch jobs, add the following
filter:
group=RESOURCE_GROUP_NAME
Replace RESOURCE_GROUP_NAME with the name of a
resource group for Batch jobs. For more information, see
Create resource groups to filter metrics in this
document.
Create resource groups to filter metrics
You can use resource groups as customizable filters
for Metrics Explorer charts.
To create a resource group for all or specific Batch jobs in
your project, do the following:
Select a label to use
as the membership criteria based on which jobs you want to include in the
group:
All Batch jobs: Use the
predefined batch-node label, which is automatically applied to all
the resources for all Batch jobs and has a null value.
Specific Batch jobs: Use a label that is applied to
the resources only for specific Batch jobs.
For example, if you want to create a group based on full or partial job
names, use the predefined batch-job-id label name with a specific value.
The batch-job-id label is automatically applied to all the resources
for all Batch jobs and defined with the job name.
Alternatively, if you use a custom label, you must apply the
custom label to all the resources of the Batch jobs that
you want to be included in the group when you create the jobs.
Ensure that your project has at least one job with your selected label and
that this job is in the RUNNING state. Otherwise, this label won't
appear as an option when you try to create the resource group.
Set the Tag field to the name of your selected label. Then, set the
following fields based on the label values that you want the group to
include.
For example, if you want this group to include all Batch
jobs, set Tag to batch-node, and set Operator to Exists.
Alternatively, you want this group to include Batch jobs
with names that start with test, set Tag to batch-job-id,
set Operator to Starts with, and set Value to test.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eThis guide explains how to monitor Batch job resources using Cloud Monitoring, focusing on metrics like CPU utilization and network traffic.\u003c/p\u003e\n"],["\u003cp\u003eInstalling the Ops Agent is required to collect advanced metrics such as memory and process utilization, providing a more comprehensive view of job performance.\u003c/p\u003e\n"],["\u003cp\u003eMetrics Explorer charts can be used to view metrics for both running and completed Batch jobs, but these charts are temporary unless saved to a custom dashboard.\u003c/p\u003e\n"],["\u003cp\u003eResource groups can be created to filter Metrics Explorer charts, allowing users to view metrics for all or specific Batch jobs by using predefined or custom labels.\u003c/p\u003e\n"],["\u003cp\u003eYou must have the Monitoring Metric Viewer role to view the observability metrics, and be aware that metrics are automatically deleted after the monitoring retention periods.\u003c/p\u003e\n"]]],[],null,["# Monitor and optimize job resources by viewing metrics\n\nThis document describes how to monitor and try to optimize the resources for a\nBatch job by viewing metrics in Cloud Monitoring.\nTo learn more about the resources that a job runs on, see\n[Job resources](/batch/docs/create-run-job#resources).\n\nFor any job, Monitoring provides basic metrics such as CPU\nutilization and network traffic. However, some metrics, such as memory and\nprocess utilization, can only be collected if a job installs the Ops Agent.\nMetrics for a job's resources help you evaluate the performance and utilization\nof each resource. This information can help you identify improvements for any\nfuture iterations of the job. For example, you might remove unutilized resources\nto help optimize costs, or you might improve or increase strained resources to\nhelp enhance performance.\n| **Note:** Monitoring and the Ops Agent feature are not part of Batch and have their own pricing. For more information, see [Monitoring pricing](/stackdriver/pricing#monitoring-pricing-summary) and [Ops Agent pricing](/stackdriver/docs/solutions/agents/ops-agent#pricing) in the Google Cloud Observability documentation.\n\nBefore you begin\n----------------\n\n1. If you haven't used Batch before, review [Get started with Batch](/batch/docs/get-started) and enable Batch by completing the [prerequisites for projects and users](/batch/docs/get-started#prerequisites).\n2. Optional: To collect additional metrics for a job, [create and run\n a job that automatically installs the Ops Agent.](/batch/docs/create-run-job-ops-agent)\n3. If your project hasn't already, enable the Monitoring API:\n\n [Enable the API](https://console.cloud.google.com/flows/enableapi?apiid=monitoring.googleapis.com)\n4.\n\n To get the permissions that\n you need to view observability metrics,\n\n ask your administrator to grant you the\n\n\n [Monitoring Metric Viewer](/iam/docs/roles-permissions/monitoring#monitoring.metricViewer) (`roles/monitoring.metricViewer`)\n IAM role on the project.\n\n\n For more information about granting roles, see [Manage access to projects, folders, and organizations](/iam/docs/granting-changing-revoking-access).\n\n\n You might also be able to get\n the required permissions through [custom\n roles](/iam/docs/creating-custom-roles) or other [predefined\n roles](/iam/docs/roles-overview#predefined).\n\n\u003cbr /\u003e\n\nView metrics for job resources\n------------------------------\n\n| **Important:** You cannot view metrics after they are deleted, which happens automatically after the [Monitoring retention periods](/monitoring/quotas#data_retention_policy). If you need to retain metrics for a longer period, [export Monitoring metrics to BigQuery](/architecture/monitoring-metric-export).\n\n[Observe and monitor VMs](/compute/docs/instances/observe-monitor-vms) in\nthe Compute Engine documentation provides relevant conceptual information\nabout VM metrics; however, different methods are recommended for viewing\nVM metrics for Batch jobs. Specifically, the\nCompute Engine documentation explains how to view metrics by using the\npredefined Monitoring dashboards for Compute Engine or\nCompute Engine pages in the Google Cloud console.\nBut, importantly, those methods don't display information about VMs that have\nbeen deleted. As a result, don't use those methods unless you only want to view\nmetrics for Batch jobs while they are running.\n\nView metrics for running and finished Batch jobs by\nusing Metrics Explorer charts as explained in this section.\nNotably, charts are temporary unless you save\nthem to custom dashboards.\n| **Tip:** To see if your project already has a custom dashboard that you can use instead of creating a new chart, [view custom dashboards](/monitoring/charts/dashboards#view-dashboard).\n\nTo create a chart for viewing one or more metrics, do the following:\n\n1. Optional: If you plan to save the chart, [identify or create a custom dashboard](/monitoring/charts/dashboards) for the chart.\n2. [Create a Metrics Explorer chart for one or more metrics](/monitoring/charts/metrics-explorer).\n\n Without filters, each VM metric in a chart includes data from all the VMs in\n your project. Optionally, if you want to filter the chart to only include\n metrics from all or specific Batch jobs, add the following\n filter: \n\n group=\u003cvar translate=\"no\"\u003eRESOURCE_GROUP_NAME\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003eRESOURCE_GROUP_NAME\u003c/var\u003e with the name of a\n resource group for Batch jobs. For more information, see\n [Create resource groups to filter metrics](#create-group-filter) in this\n document.\n\n### Create resource groups to filter metrics\n\nYou can use [resource groups](/monitoring/groups) as customizable filters\nfor Metrics Explorer charts.\nTo create a resource group for all or specific Batch jobs in\nyour project, do the following:\n\n1. Select a [label](/batch/docs/organize-resources-using-labels) to use\n as the membership criteria based on which jobs you want to include in the\n group:\n\n - **All Batch jobs:** Use the predefined `batch-node` label, which is automatically applied to all the resources for all Batch jobs and has a null value.\n - **Specific Batch jobs:** Use a label that is applied to\n the resources only for specific Batch jobs.\n\n For example, if you want to create a group based on full or partial job\n names, use the predefined `batch-job-id` label name with a specific value.\n The `batch-job-id` label is automatically applied to all the resources\n for all Batch jobs and defined with the job name.\n\n Alternatively, if you use a custom label, you must apply the\n custom label to all the resources of the Batch jobs that\n you want to be included in the group when you create the jobs.\n2. Ensure that your project has at least one job with your selected label and\n that this job is in the `RUNNING` state. Otherwise, this label won't\n appear as an option when you try to create the resource group.\n\n3. [Create a resource group](/monitoring/groups).\n When you are specifying the membership criteria, do the following:\n\n 1. Set the **Type** to **Tag**.\n 2. Set the **Tag** field to the name of your selected label. Then, set the\n following fields based on the label values that you want the group to\n include.\n\n For example, if you want this group to include all Batch\n jobs, set **Tag** to `batch-node`, and set **Operator** to **Exists** .\n Alternatively, you want this group to include Batch jobs\n with names that start with `test`, set **Tag** to `batch-job-id`,\n set **Operator** to **Starts with** , and set **Value** to `test`.\n\nWhat's next\n-----------\n\n- Learn more about job resource metrics:\n - [Collect additional resource metrics using the Ops Agent](/batch/docs/create-run-job-ops-agent).\n - [Create and manage custom Monitoring dashboards](/monitoring/charts/dashboards).\n - [Monitor GPUs](/compute/docs/gpus/monitor-gpus).\n- Learn about other methods to monitor and optimize Batch jobs:\n - [Monitor job status using Pub/Sub notifications and BigQuery](/batch/docs/monitor-jobs-using-notifications).\n - [Colocate VMs to reduce latency](/batch/docs/create-run-job-placement-policy).\n - Learn about more [job creation options](/batch/docs/create-run-job#job-creation-options)."]]