+ {((details.metrics || []).length + Object.keys(unattachedLinks).length > 0) &&
Status
0;
const primeCutoff = metrics.length > 3 && !this.state.expanded ? 2 : metrics.length;
const primeMetrics = metrics.slice(0, primeCutoff);
const overflowMetrics = metrics.slice(primeCutoff);
@@ -57,7 +56,7 @@ export default class NodeDetailsHealth extends React.Component {
handleClick={this.handleClickMore} collection={this.props.metrics}
expanded={this.state.expanded} notShown={notShown} hideNumber />
- {hasUnattached &&
+
{Object.keys(unattachedLinks).map(id =>
)}
-
}
+
);
}
diff --git a/render/detailed/links.go b/render/detailed/links.go
index 5fb4e181c..ba2df99c3 100644
--- a/render/detailed/links.go
+++ b/render/detailed/links.go
@@ -12,7 +12,7 @@ import (
"github.com/ugorji/go/codec"
)
-// MetricLink describes a link referencing a metric.
+// MetricLink describes a URL referencing a metric.
type MetricLink struct {
// References the metric id
ID string `json:"id,omitempty"`
@@ -37,22 +37,27 @@ var (
// Prometheus queries for topologies
topologyQueries = map[string]map[string]*template.Template{
report.Pod: {
+ // Metric names provided by cAdvisor in kubelet
docker.MemoryUsage: prepareTemplate(`sum(container_memory_usage_bytes{pod_name="{{.Label}}"})`),
docker.CPUTotalUsage: prepareTemplate(`sum(rate(container_cpu_usage_seconds_total{pod_name="{{.Label}}"}[1m]))`),
},
report.ReplicaSet: {
- docker.MemoryUsage: prepareTemplate(`sum(container_memory_usage_bytes{pod_name=~"{{.Label}}-.+"})`),
- docker.CPUTotalUsage: prepareTemplate(`sum(rate(container_cpu_usage_seconds_total{pod_name=~"{{.Label}}-.+"}[1m]))`),
+ // Metric names provided by cAdvisor in kubelet
+ docker.MemoryUsage: prepareTemplate(`sum(container_memory_usage_bytes{pod_name=~"{{.Label}}-[^-]+-[^-]"})`),
+ docker.CPUTotalUsage: prepareTemplate(`sum(rate(container_cpu_usage_seconds_total{pod_name=~"{{.Label}}-[^-]+-[^-]"}[1m]))`),
},
report.Deployment: {
- docker.MemoryUsage: prepareTemplate(`sum(container_memory_usage_bytes{pod_name=~"{{.Label}}-[0-9]+-[^-]+"})`),
- docker.CPUTotalUsage: prepareTemplate(`sum(rate(container_cpu_usage_seconds_total{pod_name=~"{{.Label}}-[0-9]+-[^-]+"}[1m]))`),
+ // Metric names provided by cAdvisor in kubelet
+ docker.MemoryUsage: prepareTemplate(`sum(container_memory_usage_bytes{pod_name=~"{{.Label}}-[^-]+-[^-]+"})`),
+ docker.CPUTotalUsage: prepareTemplate(`sum(rate(container_cpu_usage_seconds_total{pod_name=~"{{.Label}}-[^-]+-[^-]+"}[1m]))`),
},
report.DaemonSet: {
+ // Metric names defined as recording rule. Filters by `monitor=""` for cortex-only data.
docker.MemoryUsage: prepareTemplate(`namespace_name:container_memory_usage_bytes:sum{name="{{.Label}}",monitor=""}`),
docker.CPUTotalUsage: prepareTemplate(`namespace_name:container_cpu_usage_seconds_total:sum_rate{name="{{.Label}}"}`),
},
report.Service: {
+ // Metric names defined as recording rule. Filters by `monitor=""` for cortex-only data.
docker.MemoryUsage: prepareTemplate(`namespace_name:container_memory_usage_bytes:sum{name="{{.Label}}",monitor=""}`),
docker.CPUTotalUsage: prepareTemplate(`namespace_name:container_cpu_usage_seconds_total:sum_rate{name="{{.Label}}"}`),
},