How to transform values from influx to grafana

Hi,
I use icinga2+influx+grafana and I have a specific measurement which icinga stores 0 for device UP and 3 for device DOWN.

The problem I’m facing is the graph on grafana looks like this for a UP device:

which sounds the opposite. So my question is:
Is there a way to transform this value to something like (UP = 1 / DOWN = 0) for producing a more-intuitive graph?

I mean, if it’s possible to show 1 for UP and 0 for DOWN, so downtimes would be shown as valleys, that would look more intuitive

Any help would be appreciated
Thanks

It is a task for primitive math (+,-,x,/,abs) on the InfluxQL level. Target is to get this transformation:
3 → 0
0 → 1

Use:

ABS(("field"/3)-1)

Test:
for field value = 3: ABS((3/3)-1) = 0
for field value = 0: ABS((0/3)-1) = 1

Note: you will need subquery if you need timegrouping, example with Grafana macros:

SELECT 
  MEAN(status) 
FROM (
  SELECT 
    ABS(("field"/3)-1) AS status 
  FROM "measurement" 
  WHERE $timeFilter
) 
GROUP BY time($__interval)

Some query polishing still may be needed. Of course they may be created also other more/less complicated “transformations” with the math and InfluxDB functions.

Hi @jangaraj,
First, let me thank you for helping me out.

Sounds good your suggestion, so let me ask a second question:
I’m pretty new to Grafana, and I have already tried to customize the query, but I’m not getting it. When I click on the pencil icon to edit the InfluxQL query, I can edit it, but I didn’t find out how to persist it (I mean, when I click back on editor icon, the interactive query builder keeps the original query).

I’m sorry it’s a dumb question, but I didn’t find how to persist custom InfluxQL queries on Grafana. Could you point me to any doc explaining how to do it?

another point is, trying to test the custom query via influx console, trying the query below works

SELECT state
FROM dummy
WHERE hostname = ‘myhost’ AND service = ‘myservice’
LIMIT 1

but when I run the query below I gt “ERR: unsupported call: abs”

SELECT ABS(state)
FROM dummy
WHERE hostname = ‘myhost’ AND service = ‘myservice’
LIMIT 1

any clue to this?
I’m using influx version 1.1.1

Thank you

You can’t toggle between editor modes. Use always RAW mode, where you have to write query manually. UI mode is only for basic simple queries.

I guess your InfluxDB 1.1.1 is very old (current version is 1.8.x) and it doesn’t support ABS function.

That helps me a lot
Thank you very much @jangaraj

This topic was automatically closed after 365 days. New replies are no longer allowed.