I wanted to get some thoughts around this before pursuing a PR.
In my example, I used -2=maintenance, -1=warning, 0=critical, and 1=passing to fall in line with the Prometheus paradigm of up=0 (down) and up=1 (up). Since we have two additional values, the negative numbers play more nicely when trying to do a value mapping in Grafana. Not married to the values themselves though. :)
consul_health_node_status{check="serfHealth",node="example_node",status="critical"} 0
consul_health_node_status{check="serfHealth",node="example_node",status="maintenance"} 0
consul_health_node_status{check="serfHealth",node="example_node",status="passing"} 1
consul_health_node_status{check="serfHealth",node="example_node",status="warning"} 0
consul_health_service_status{check="service:10.0.0.1_443",node="example_node",service_id="10.0.0.1_443",service_name="auth_service",status="critical"} 0
consul_health_service_status{check="service:10.0.0.1_443",node="example_node",service_id="10.0.0.1_443",service_name="auth_service",status="maintenance"} 0
consul_health_service_status{check="service:10.0.0.1_443",node="example_node",service_id="10.0.0.1_443",service_name="auth_service",status="passing"} 1
consul_health_service_status{check="service:10.0.0.1_443",node="example_node",service_id="10.0.0.1_443",service_name="auth_service",status="warning"} 0
Proposed Example:
# HELP consul_health_node_status Status of health checks associated with a node. -2=maintenance, -1=warning, 0=critical, 1=passing
consul_health_node_status{check="serfHealth",node="example_node"} 1
# HELP consul_health_service_status Status of health checks associated with a service. -2=maintenance, -1=warning, 0=critical, 1=passing
consul_health_service_status{check="service:10.0.0.1_443",node="example_node",service_id="10.0.0.1_443",service_name="auth_service"} 1