diff --git a/docs/user-guide/monitoring.md b/docs/user-guide/monitoring.md index 660fb5101..4f6376a3b 100644 --- a/docs/user-guide/monitoring.md +++ b/docs/user-guide/monitoring.md @@ -77,3 +77,9 @@ The username and password is `admin` After the login you can import the Grafana dashboard from [official dashboards](https://github.com/kubernetes/ingress-nginx/tree/master/deploy/grafana/dashboards) ![Dashboard](../images/grafana.png) + +## Caveats + +### Wildcard ingresses + +By default request metrics are labeled with the hostname. When you have a wildcard domain ingress, then there will be no metrics for that ingress (to prevent the metrics from exploding in cardinality). To get metrics in this case you need to run the ingress controller with `--metrics-per-host=false` (you will lose labeling by hostname, but still have labeling by ingress). diff --git a/internal/ingress/metric/collectors/socket.go b/internal/ingress/metric/collectors/socket.go index dcf6d35e5..084eaf0e4 100644 --- a/internal/ingress/metric/collectors/socket.go +++ b/internal/ingress/metric/collectors/socket.go @@ -230,8 +230,8 @@ func (sc *SocketCollector) handleMessage(msg []byte) { } for _, stats := range statsBatch { - if !sc.hosts.Has(stats.Host) { - klog.V(3).Infof("skiping metric for host %v that is not being served", stats.Host) + if sc.metricsPerHost && !sc.hosts.Has(stats.Host) { + klog.V(3).Infof("Skipping metric for host %v that is not being served", stats.Host) continue }