Help with custom variable

Hello

I have two network instances which consists of different virtual machines, example:

up{instance="home-lab-1-vm-0:8001", job="node"}
up{instance="home-lab-1-vm-1:8001", job="node"}
up{instance="home-lab-1-vm-2:8001", job="node"}

up{instance="home-lab-2-vm-0:8001", job="node"}
up{instance="home-lab-2-vm-1:8001", job="node"}
up{instance="home-lab-2-vm-2:8001", job="node"}

I want to create a custom variable with names
home-lab-1 and home-lab-2

How can I use such variable in the query?
up{job="node"}

It would be nice to know, what you’re trying to achieve.

I guess, you try to group your VMs by home-lab-1 and home-lab-2 - kind of like grouping them by facility or location.

I’d start by refactoring your job config and set a custom label for each target-vm. In your example, you got 3 VMs each, so we can group them as list of targets - setting our custom label for each list.

Prometheus:

scrape_configs:
  - job_name: "vm"

    static_configs:

      # Home Lab 1
      - targets:
        - "home-lab-1-vm-0:8001"
        - "home-lab-1-vm-1:8001" 
        - "home-lab-1-vm-0:8001"
        labels:
          facility: "home-lab-1"
      
      # Home Lab 2
      - targets:
        - "home-lab-2-vm-0:8001"
        - "home-lab-2-vm-1:8001"
        - "home-lab-2-vm-2:8001"
        labels:
          facility: "home-lab-2"

Then you can define your variable like that:

… and use it in queries like that:

up{job="vm", facility="$facility"}

1 Like