promql 다른 metric query의 결과물로 쿼리 하는 방법(subquery 비슷)

itbuddy·2024년 1월 22일

꿀팁

목록 보기
11/12

metirc query1 을 metric query2의 결과로 가져 오고 싶을때

<metirc query1> and on (<label>) <metric query2>

다음 쿼리는 grafana 에서 row 반복형 모니터링 화면을 만들때 사용하였습니다.
$name, $job을 grafana 외부 변수로 받아 처리 하였습니다.

node_uname_info 에서 instance가 같은 node_time_seconds의 매트릭을 가져옴

	node_time_seconds and on (instance) node_uname_info{nodename=~"$name"}

uptime

    (node_time_seconds{job=~"$job"} and on (instance) node_uname_info{nodename=~"$name"}) - (node_boot_time_seconds{job=~"$job"} and on (instance) node_uname_info{nodename=~"$name"})

processors

    count(count(node_cpu_seconds_total{job=~"$job"} and on (instance) node_uname_info{nodename=~"$name"}) by (cpu))

cpu load

    avg without (mode,cpu) (
      1 - rate(node_cpu_seconds_total{mode="idle"}[1m]) and on(instance) node_uname_info{nodename=~"$name"}
    )

ram

    node_memory_MemTotal_bytes and on (instance) node_uname_info{nodename=~"$name"}

memory use

    (
        1
      -
        (
            (
                  (avg_over_time(node_memory_MemFree_bytes[10m]) and on (instance) node_uname_info{nodename=~"$name"})
                +
                  (avg_over_time(node_memory_Cached_bytes[10m]) and on (instance) node_uname_info{nodename=~"$name"})
              +
                (avg_over_time(node_memory_Buffers_bytes[10m]) and on (instance) node_uname_info{nodename=~"$name"})
            )
          /
            (
              avg_over_time(node_memory_MemTotal_bytes[10m]) and on (instance) node_uname_info{nodename=~"$name"}
            )
        )
    )

total root fs

    sum(node_filesystem_size_bytes and on (instance) node_uname_info{nodename=~"$name"})

disk usage

    1 - ((sum(node_filesystem_avail_bytes and on (instance) node_uname_info{nodename=~"$name"} )  / sum(node_filesystem_size_bytes and on (instance) node_uname_info{nodename=~"$name"}) ))

disk free

    node_filesystem_free_bytes{fstype!~"(tmpfs|rootfs).*"} and on (instance) node_uname_info{nodename=~"$name"}

net in

    sum(increase(node_network_receive_bytes_total[24h] ) and on (instance) node_uname_info{nodename=~"$name"})

net out

sum(increase(node_network_transmit_bytes_total[24h])and on (instance) node_uname_info{nodename=~"$name"})
profile
프론트도 조금 아는 짱구 같은 서버 프로그래머

0개의 댓글