title: How should multivalue state be modeled/queried in Prometheus
body: <p>I want to export a <strong>status</strong> in a label, something like this:</p>
  
  <pre><code>my_status{group="xx",partition="1",status="ERROR"} 1
  my_status{group="xx",partition="1",status="OK"} 1
  my_status{group="xx",partition="1",status="STALL"} 1
  </code></pre>
  
  <p>I've read Brian's <a href="https://www.robustperception.io/exposing-the-software-version-to-prometheus" rel="nofollow noreferrer">https://www.robustperception.io/exposing-the-software-version-to-prometheus</a>
  What I'm trying to do is pretty similar.</p>
  
  <p>And query the <strong>status</strong> in Grafana, given <strong>group</strong> and <strong>partition</strong>. But I can't do queries like shown in the example</p>
  
  <pre><code>my_status{group="xx",partition="1"} 
  * on (partition, group) group_left(status) 
  my_status{group="xx",partition="1"}
  </code></pre>
  
  <p>This gives me an error because they are now two different time series, which leads to </p>
  
  <blockquote>
    <p>Error executing query: many-to-many matching not allowed: matching
    labels must be unique on one side</p>
  </blockquote>
  
  <p>I don't want to export the enum by mapping them into value. (e.g. OK=1, ERROR=2), because I'd have to keep updating them.
  Any pointers? Thanks.</p>