# Metrics

When Monitoring checks run, they generate metrics. These metrics are stored as full resolution data points in the Cloud Monitoring system. Full resolution data points are periodically rolled up (condensed) into coarser data points.

Depending on your needs, you can use the metrics API to fetch individual data points (fine-grained) or rolled up data points (coarse-grained) over a period of time.

## Data Granularity

Cloud Monitoring supports several granularities of data: full resolution data and rollups computed at 5, 20, 60, 240 and 1440 minute intervals.

When you fetch metrics data points, you specify several parameters to control the granularity of data returned:

- A time range for the points
- Either the number of points you want returned OR the resolution of the data you want returned

When you query by points, the API selects the resolution that will return you the number of points you requested. The API makes the assumption of a 30 second frequency, performs the calculation, and selects the appropriate resolution.

Note: Because the API performs calculations to determine the points returned for a particular resolution, the number of points returned may differ from the specific number of points you request.

Consider that you want to query data for a 48-hour time range between the timestamps `from=1354647221000` and `to=1358794421000` ( specified in Unix time, based on the number of milliseconds that have elapsed since January 1, 1970 ). The following table shows the number of points that the API returns for a given resolution.

### Specifying resolution to retrieve data in 48 hour period

You specify resolution... | API returns points...
--- | ---
FULL | 5760
MIN5 | 576
MIN20 | 144
MIN60 | 48
MIN240 | 12
MIN1440 | 2

### Specifying number of points to retrieve data in 48 hour period

You specify points in the range... | API calculates resolution
--- | ---
3168-∞ | FULL
360-3167 | MIN5
96-359 | MIN20
30-95 | MIN60
7-29 | MIN240
0-6 | MIN1440

### Data Point Expiration

Cloud Monitoring expires data points according to the following schedule:

Resolution | Expiration
--- | ---
FULL | 2 days
MIN5 | 7 days
MIN20 | 15 days
MIN60 | 30 days
MIN240 | 60 days
MIN1440 | 365 days

## Setup

In order to interact with this feature, you must first retrieve an entity by its ID:

    $entity = $service->getEntity('{entityId}');

and then a particular check, about which you can configure alarms:

    $check = $entity->getCheck('{checkId}');

For more information about these resource types, please consult the documentation about entities and checks.

## List all metrics

    $metrics = $check->getMetrics();

    foreach ($metrics as $metric) {
        echo $metric->getName();
    }

## Fetch data points

    $data = $check->fetchDataPoints('mzdfw.available', array(
        'resolution' => 'FULL',
        'from'       => 1369756378450,
        'to'         => 1369760279018
    ));