Merge branch 'master' into kube-prometheus_documentation
This commit is contained in:
13
README.md
13
README.md
@@ -40,6 +40,7 @@ This stack is meant for cluster monitoring, so it is pre-configured to collect m
|
|||||||
* [Troubleshooting](#troubleshooting)
|
* [Troubleshooting](#troubleshooting)
|
||||||
* [Error retrieving kubelet metrics](#error-retrieving-kubelet-metrics)
|
* [Error retrieving kubelet metrics](#error-retrieving-kubelet-metrics)
|
||||||
* [kube-state-metrics resource usage](#kube-state-metrics-resource-usage)
|
* [kube-state-metrics resource usage](#kube-state-metrics-resource-usage)
|
||||||
|
* [Contributing](#contributing)
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
@@ -396,3 +397,15 @@ config. They default to:
|
|||||||
memoryPerNode: '30Mi',
|
memoryPerNode: '30Mi',
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
All `.yaml` files in the `/manifests` folder are generated via
|
||||||
|
[Jsonnet](https://jsonnet.org/). Contributing changes will most likely include
|
||||||
|
the following process:
|
||||||
|
|
||||||
|
1. Make your changes in the respective `*.jsonnet` file.
|
||||||
|
2. Commit your changes (This is currently necessary due to our vendoring
|
||||||
|
process. This is likely to change in the future).
|
||||||
|
3. Generate dependent `*.yaml` files: `make generate-in-docker`.
|
||||||
|
4. Commit the generated changes.
|
||||||
|
28
docs/monitoring-other-namespaces.md
Normal file
28
docs/monitoring-other-namespaces.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Monitoring other Kubernetes Namespaces
|
||||||
|
This guide will help you monitor applications in other Namespaces. By default the RBAC rules are only enabled for the `Default` and `kube-system` Namespace during Install.
|
||||||
|
|
||||||
|
# Setup
|
||||||
|
You have to give the list of the Namespaces that you want to be able to monitor.
|
||||||
|
This is done in the variable `prometheus.roleSpecificNamespaces`. You usually set this in your `.jsonnet` file when building the manifests.
|
||||||
|
|
||||||
|
Example to create the needed `Role` and `Rolebindig` for the Namespace `foo` :
|
||||||
|
```
|
||||||
|
local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') + {
|
||||||
|
_config+:: {
|
||||||
|
namespace: 'monitoring',
|
||||||
|
|
||||||
|
prometheus+:: {
|
||||||
|
namespaces: ["default", "kube-system","foo"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } +
|
||||||
|
{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } +
|
||||||
|
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +
|
||||||
|
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
|
||||||
|
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
|
||||||
|
{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
|
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }
|
||||||
|
|
||||||
|
```
|
@@ -21,6 +21,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
replicas: 2,
|
replicas: 2,
|
||||||
rules: {},
|
rules: {},
|
||||||
renderedRules: {},
|
renderedRules: {},
|
||||||
|
namespaces: ["default", "kube-system",$._config.namespace],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -55,16 +56,20 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
groups: $._config.prometheus.rules.groups,
|
groups: $._config.prometheus.rules.groups,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
roleBindingDefault:
|
roleBindingSpecificNamespaces:
|
||||||
local roleBinding = k.rbac.v1.roleBinding;
|
local roleBinding = k.rbac.v1.roleBinding;
|
||||||
|
|
||||||
roleBinding.new() +
|
local newSpecificRoleBinding(namespace) =
|
||||||
roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
roleBinding.new() +
|
||||||
roleBinding.mixin.metadata.withNamespace('default') +
|
roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
roleBinding.mixin.metadata.withNamespace(namespace) +
|
||||||
roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
||||||
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
||||||
|
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: namespace }]);
|
||||||
|
|
||||||
|
local roleBindigList = k.rbac.v1.roleBindingList;
|
||||||
|
roleBindigList.new([newSpecificRoleBinding(x) for x in $._config.prometheus.namespaces]),
|
||||||
clusterRole:
|
clusterRole:
|
||||||
local clusterRole = k.rbac.v1.clusterRole;
|
local clusterRole = k.rbac.v1.clusterRole;
|
||||||
local policyRule = clusterRole.rulesType;
|
local policyRule = clusterRole.rulesType;
|
||||||
@@ -108,16 +113,6 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name + '-config') +
|
roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name + '-config') +
|
||||||
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
||||||
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
||||||
roleBindingNamespace:
|
|
||||||
local roleBinding = k.rbac.v1.roleBinding;
|
|
||||||
|
|
||||||
roleBinding.new() +
|
|
||||||
roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
|
||||||
roleBinding.mixin.metadata.withNamespace($._config.namespace) +
|
|
||||||
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
|
||||||
roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
|
||||||
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
|
||||||
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
|
||||||
clusterRoleBinding:
|
clusterRoleBinding:
|
||||||
local clusterRoleBinding = k.rbac.v1.clusterRoleBinding;
|
local clusterRoleBinding = k.rbac.v1.clusterRoleBinding;
|
||||||
|
|
||||||
@@ -127,10 +122,9 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
clusterRoleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
clusterRoleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' }) +
|
clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' }) +
|
||||||
clusterRoleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
clusterRoleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
||||||
roleKubeSystem:
|
roleSpecificNamespaces:
|
||||||
local role = k.rbac.v1.role;
|
local role = k.rbac.v1.role;
|
||||||
local policyRule = role.rulesType;
|
local policyRule = role.rulesType;
|
||||||
|
|
||||||
local coreRule = policyRule.new() +
|
local coreRule = policyRule.new() +
|
||||||
policyRule.withApiGroups(['']) +
|
policyRule.withApiGroups(['']) +
|
||||||
policyRule.withResources([
|
policyRule.withResources([
|
||||||
@@ -141,56 +135,14 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
|
|||||||
]) +
|
]) +
|
||||||
policyRule.withVerbs(['get', 'list', 'watch']);
|
policyRule.withVerbs(['get', 'list', 'watch']);
|
||||||
|
|
||||||
role.new() +
|
local newSpecificRole(namespace) =
|
||||||
role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
role.new() +
|
||||||
role.mixin.metadata.withNamespace('kube-system') +
|
role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
||||||
role.withRules(coreRule),
|
role.mixin.metadata.withNamespace(namespace) +
|
||||||
roleDefault:
|
role.withRules(coreRule);
|
||||||
local role = k.rbac.v1.role;
|
|
||||||
local policyRule = role.rulesType;
|
|
||||||
|
|
||||||
local coreRule = policyRule.new() +
|
local roleList = k.rbac.v1.roleList;
|
||||||
policyRule.withApiGroups(['']) +
|
roleList.new([newSpecificRole(x) for x in $._config.prometheus.namespaces]),
|
||||||
policyRule.withResources([
|
|
||||||
'nodes',
|
|
||||||
'services',
|
|
||||||
'endpoints',
|
|
||||||
'pods',
|
|
||||||
]) +
|
|
||||||
policyRule.withVerbs(['get', 'list', 'watch']);
|
|
||||||
|
|
||||||
role.new() +
|
|
||||||
role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
|
||||||
role.mixin.metadata.withNamespace('default') +
|
|
||||||
role.withRules(coreRule),
|
|
||||||
roleBindingKubeSystem:
|
|
||||||
local roleBinding = k.rbac.v1.roleBinding;
|
|
||||||
|
|
||||||
roleBinding.new() +
|
|
||||||
roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
|
||||||
roleBinding.mixin.metadata.withNamespace('kube-system') +
|
|
||||||
roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
|
|
||||||
roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
|
|
||||||
roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
|
|
||||||
roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
|
|
||||||
roleNamespace:
|
|
||||||
local role = k.rbac.v1.role;
|
|
||||||
local policyRule = role.rulesType;
|
|
||||||
|
|
||||||
local coreRule = policyRule.new() +
|
|
||||||
policyRule.withApiGroups(['']) +
|
|
||||||
policyRule.withResources([
|
|
||||||
'nodes',
|
|
||||||
'services',
|
|
||||||
'endpoints',
|
|
||||||
'pods',
|
|
||||||
]) +
|
|
||||||
policyRule.withVerbs(['get', 'list', 'watch']);
|
|
||||||
|
|
||||||
role.new() +
|
|
||||||
role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
|
|
||||||
role.mixin.metadata.withNamespace($._config.namespace) +
|
|
||||||
role.withRules(coreRule),
|
|
||||||
prometheus:
|
prometheus:
|
||||||
local container = k.core.v1.pod.mixin.spec.containersType;
|
local container = k.core.v1.pod.mixin.spec.containersType;
|
||||||
local resourceRequirements = container.mixin.resourcesType;
|
local resourceRequirements = container.mixin.resourcesType;
|
||||||
|
@@ -4792,7 +4792,7 @@ items:
|
|||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "100 - (avg by (cpu) (irate(node_cpu{job=\"node-exporter\", mode=\"idle\", instance=\"$instance\"}[5m])) * 100)\n",
|
"expr": "1 - (avg by (cpu) (irate(node_cpu{job=\"node-exporter\", mode=\"idle\", instance=\"$instance\"}[5m])))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 10,
|
"intervalFactor": 10,
|
||||||
"legendFormat": "{{cpu}}",
|
"legendFormat": "{{cpu}}",
|
||||||
@@ -4822,18 +4822,18 @@ items:
|
|||||||
},
|
},
|
||||||
"yaxes": [
|
"yaxes": [
|
||||||
{
|
{
|
||||||
"format": "percent",
|
"format": "percentunit",
|
||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": 100,
|
"max": 1,
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"show": true
|
"show": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"format": "percent",
|
"format": "percentunit",
|
||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": 100,
|
"max": 1,
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"show": true
|
"show": true
|
||||||
}
|
}
|
||||||
@@ -4883,21 +4883,21 @@ items:
|
|||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "node_load1{job=\"node-exporter\", instance=\"$instance\"} * 100",
|
"expr": "max(node_load1{job=\"node-exporter\", instance=\"$instance\"})",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "load 1m",
|
"legendFormat": "load 1m",
|
||||||
"refId": "A"
|
"refId": "A"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "node_load5{job=\"node-exporter\", instance=\"$instance\"} * 100",
|
"expr": "max(node_load5{job=\"node-exporter\", instance=\"$instance\"})",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "load 5m",
|
"legendFormat": "load 5m",
|
||||||
"refId": "B"
|
"refId": "B"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "node_load15{job=\"node-exporter\", instance=\"$instance\"} * 100",
|
"expr": "max(node_load15{job=\"node-exporter\", instance=\"$instance\"})",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "load 15m",
|
"legendFormat": "load 15m",
|
||||||
@@ -4927,7 +4927,7 @@ items:
|
|||||||
},
|
},
|
||||||
"yaxes": [
|
"yaxes": [
|
||||||
{
|
{
|
||||||
"format": "percent",
|
"format": "percentunit",
|
||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
@@ -4935,7 +4935,7 @@ items:
|
|||||||
"show": true
|
"show": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"format": "percent",
|
"format": "percentunit",
|
||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
@@ -5002,28 +5002,28 @@ items:
|
|||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "node_memory_MemTotal{job=\"node-exporter\", instance=\"$instance\"}\n- node_memory_MemFree{job=\"node-exporter\", instance=\"$instance\"}\n- node_memory_Buffers{job=\"node-exporter\", instance=\"$instance\"}\n- node_memory_Cached{job=\"node-exporter\", instance=\"$instance\"}\n",
|
"expr": "max(\n node_memory_MemTotal{job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_MemFree{job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_Buffers{job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_Cached{job=\"node-exporter\", instance=\"$instance\"}\n)\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "memory used",
|
"legendFormat": "memory used",
|
||||||
"refId": "A"
|
"refId": "A"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "node_memory_Buffers{job=\"node-exporter\", instance=\"$instance\"}",
|
"expr": "max(node_memory_Buffers{job=\"node-exporter\", instance=\"$instance\"})",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "memory buffers",
|
"legendFormat": "memory buffers",
|
||||||
"refId": "B"
|
"refId": "B"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "node_memory_Cached{job=\"node-exporter\", instance=\"$instance\"}",
|
"expr": "max(node_memory_Cached{job=\"node-exporter\", instance=\"$instance\"})",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "memory cached",
|
"legendFormat": "memory cached",
|
||||||
"refId": "C"
|
"refId": "C"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "node_memory_MemFree{job=\"node-exporter\", instance=\"$instance\"}",
|
"expr": "max(node_memory_MemFree{job=\"node-exporter\", instance=\"$instance\"})",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "memory free",
|
"legendFormat": "memory free",
|
||||||
@@ -5131,7 +5131,7 @@ items:
|
|||||||
"tableColumn": "",
|
"tableColumn": "",
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(\n node_memory_MemTotal{job=\"node-exporter\", instance=\"$instance\"}\n- node_memory_MemFree{job=\"node-exporter\", instance=\"$instance\"}\n- node_memory_Buffers{job=\"node-exporter\", instance=\"$instance\"}\n- node_memory_Cached{job=\"node-exporter\", instance=\"$instance\"}\n) * 100\n /\nnode_memory_MemTotal{job=\"node-exporter\", instance=\"$instance\"}\n",
|
"expr": "max(\n (\n (\n node_memory_MemTotal{job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_MemFree{job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_Buffers{job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_Cached{job=\"node-exporter\", instance=\"$instance\"}\n )\n / node_memory_MemTotal{job=\"node-exporter\", instance=\"$instance\"}\n ) * 100)\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": ""
|
"legendFormat": ""
|
||||||
@@ -5215,21 +5215,21 @@ items:
|
|||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum by (instance) (rate(node_disk_bytes_read{job=\"node-exporter\", instance=\"$instance\"}[2m]))",
|
"expr": "max(rate(node_disk_bytes_read{job=\"node-exporter\", instance=\"$instance\"}[2m]))",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "read",
|
"legendFormat": "read",
|
||||||
"refId": "A"
|
"refId": "A"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum by (instance) (rate(node_disk_bytes_written{job=\"node-exporter\", instance=\"$instance\"}[2m]))",
|
"expr": "max(rate(node_disk_bytes_written{job=\"node-exporter\", instance=\"$instance\"}[2m]))",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "written",
|
"legendFormat": "written",
|
||||||
"refId": "B"
|
"refId": "B"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum by (instance) (rate(node_disk_io_time_ms{job=\"node-exporter\", instance=\"$instance\"}[2m]))",
|
"expr": "max(rate(node_disk_io_time_ms{job=\"node-exporter\", instance=\"$instance\"}[2m]))",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "io time",
|
"legendFormat": "io time",
|
||||||
@@ -5414,7 +5414,7 @@ items:
|
|||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "rate(node_network_receive_bytes{job=\"node-exporter\", instance=\"$instance\", device!\u007e\"lo\"}[5m])",
|
"expr": "max(rate(node_network_receive_bytes{job=\"node-exporter\", instance=\"$instance\", device!\u007e\"lo\"}[5m]))",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{device}}",
|
"legendFormat": "{{device}}",
|
||||||
@@ -5505,7 +5505,7 @@ items:
|
|||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "rate(node_network_transmit_bytes{job=\"node-exporter\", instance=\"$instance\", device!\u007e\"lo\"}[5m])",
|
"expr": "max(rate(node_network_transmit_bytes{job=\"node-exporter\", instance=\"$instance\", device!\u007e\"lo\"}[5m]))",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{device}}",
|
"legendFormat": "{{device}}",
|
||||||
|
Reference in New Issue
Block a user