/api/rollup

This endpoint allows for storing rolled up and/or pre-aggregated data in OpenTSDB over HTTP. For details on rollups and pre-aggs, please see the user guide: Rollup And Pre-Aggregates.

Also see the /api/put documentation for notes and common parameters that are shared with the /api/rollup endpoint. This page lays out the differences between the two.

Verbs

  • POST

Requests

Rollup and pre-aggregate values are extensions of the put object with three additional fields. For completeness, all fields are listed below:

Name

Data Type

Required

Description

Default

QS

RW

Example

metric

String

Required

The name of the metric you are storing

W

sys.cpu.nice

timestamp

Integer

Required

A Unix epoch style timestamp in seconds or milliseconds. The timestamp must not contain non-numeric characters.

W

1365465600

value

Integer, Float, String

Required

The value to record for this data point. It may be quoted or not quoted and must conform to the OpenTSDB value rules: ../../user_guide/writing

W

42.5

tags

Map

Required

A map of tag name/tag value pairs. At least one pair must be supplied.

W

{“host”:”web01”}

interval

String

Optional*

A time interval reflecting what timespan the rollup value represents. The interval consists of <amount><unit> similar to a downsampler or relative query timestamp. E.g. 6h for 5 hours of data, 30m for 30 minutes of data.

W

1h

aggregator

String

Optional*

An aggregation function used to generate the rollup value. Must match a supplied TSDB aggregator.

W

SUM

groupByAggregator

String

Optional*

An aggregation function used to generate the pre-aggregate value. Must match a supplied TSDB aggregator.

W

COUNT

While the aggregators and interval are marked as optional above, at least one of the combinations documented below must be satisfied for data to be recorded.

interval

aggregator

groupByAggregator

Description

Set

Set

Empty

Data represents a raw or non-pre-aggregated rollup over the interval.

Empty

Empty

Set

Data represents a raw pre-aggregated value that has not been rolled up over time.

Set

Set

Set

Data represents a rolled up pre-aggregated value.

Example Single Data Point Put

You can supply a single data point in a request:

{
    "metric": "sys.cpu.nice",
    "timestamp": 1346846400,
    "value": 18,
    "tags": {
       "host": "web01",
       "dc": "lga"
    },
    "interval": "1h",
    "aggregator": "SUM",
    "groupByAggregator": "SUM"
}

Example Multiple Data Point Put

Multiple data points must be encased in an array:

[
    {
        "metric": "sys.cpu.nice",
        "timestamp": 1346846400,
        "value": 18,
        "tags": {
           "host": "web01",
           "dc": "lga"
        },
        "interval": "1h",
        "aggregator": "SUM",
        "groupByAggregator": "SUM"
    },
    {
        "metric": "sys.cpu.nice",
        "timestamp": 1346846400,
        "value": 9,
        "tags": {
           "host": "web02",
           "dc": "lga"
        },
        "interval": "1h",
        "aggregator": "SUM",
        "groupByAggregator": "SUM"
    }
]

Response

Responses are handled in the same was as for the /api/put endpoint.