groups:
  - name: serverless.rules
    interval: 10s
    rules:
      # important!!! used for serverless metering start.
      - record: cluster:tikv_store_size_bytes:row_based_storage
        expr: |
          quantile_over_time(0.5, sum by(keyspace_id) (avg by(keyspace_id, region_id) (tikv_store_size_bytes{namespace="tidb-serverless",component="tikv",type="used"}))[5m:1m]) > 0
      - record: cluster:tikv_store_size_bytes:columnar_storage
        expr: |
          quantile_over_time(0.5, sum by(keyspace_id) (avg by(keyspace_id, region_id) (tikv_store_size_bytes{namespace="tidb-serverless",component="tikv",type="tiflash_used"}))[5m:1m]) > 0
      - record: tikv:serverless_instance_cpu_cores
        expr: |
          max by (instance) (
            label_replace(
              max by (node, pod) (kube_pod_info{namespace="tidb-serverless", pod=~".*tikv-.*"}),
              "instance",
              "$1",
              "pod",
              "(.*)"
            )
            * on(node) group_left
            label_replace(
              count(node_cpu_seconds_total{job="node-exporter", mode="idle"}) by (instance),
              "node",
              "$1",
              "instance",
              "(.*)"
            )
          )
      - record: tikv:serverless_instance_region_limit
        expr: |
          100000
          + 500000 * (tikv:serverless_instance_cpu_cores > bool 4)
      # important!!! used for serverless metering end.
