1
votes

I am writing a Bosun expression in order to get the number of 2xx responses in a service like:

ungroup(avg(q("sum:metric.name.hrsp_2xx{region=eu-west-1}", "1m", "")))

The above expression gives me the number of 2xx requests of the selected region (eu-west-1) in the last minute but I would like to get the number of 2xx requests that happened in 2 regions (eu-west-1 and eu-central-1).

This metric is tagged with region. I have 4 regions available.

I was wondering if it is possible to do an 'or' operation with the tags. Something like:

{region=or(eu-west-1,eu-central-1)}

I've checked the documentation but I'm not able to find anything to achieve this.

1

1 Answers

3
votes

Since q() is specific to querying OpenTSDB, it uses the same syntax. The basic syntax for what you put would be to use a pipe symbol: ungroup(avg(q("sum:metric.name.hrsp_2xx{region=eu-west-1|eu-central-one}", "1m", ""))).

If you have version 2.2 set to true you can also use more advanced features of the filters as documented in the OpenTSDB documentation (i.e. host=literal_or(web01|web02|web03)). The main advantage is that OpenTSDB added the ability to aggregate a subset of tag values instead of all or nothing. The Graph page in Bosun also helps you generate the queries for OpenTSDB.