upgrade all the things
This commit is contained in:
parent
6d10ef8741
commit
860d4c1f35
|
@ -8,7 +8,7 @@
|
||||||
"subdir": "Documentation/etcd-mixin"
|
"subdir": "Documentation/etcd-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "221f0cc107cb3497eeb20fb241e1bcafca2e9115",
|
"version": "dd816f0735f8a5ee7a1bbd134002961b2884197c",
|
||||||
"sum": "Ko3qhNfC2vN/houLh6C0Ryacjv70gl0DVPGU/PQ4OD0="
|
"sum": "Ko3qhNfC2vN/houLh6C0Ryacjv70gl0DVPGU/PQ4OD0="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
"subdir": "grafana-builder"
|
"subdir": "grafana-builder"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "c19a92e586a6752f11745b47f309b13f02ef7147",
|
"version": "e347979bbe1e89fa0f48ea61fb486fdbaec42b74",
|
||||||
"sum": "slxrtftVDiTlQK22ertdfrg4Epnq97gdrLI63ftUfaE="
|
"sum": "slxrtftVDiTlQK22ertdfrg4Epnq97gdrLI63ftUfaE="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -41,8 +41,8 @@
|
||||||
"subdir": "grafonnet"
|
"subdir": "grafonnet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "db36a706bd1c87056759eacb686102133eb4740c",
|
"version": "906768d46973e022594d3f03d82c5a51d86de2cc",
|
||||||
"sum": "g1aMw5iYEP/Dkw1wo1pcfe7q4LIpXc4wqDZsjaCpsRc="
|
"sum": "J3Vp0EVbxTObr6KydLXsi4Rc0ssNVAEuwLc0NQ+4wqU="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ksonnet",
|
"name": "ksonnet",
|
||||||
|
@ -63,8 +63,8 @@
|
||||||
"subdir": "jsonnet/kube-prometheus"
|
"subdir": "jsonnet/kube-prometheus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "66c625d0bfbc080f40ee453ea093c66faa8e1cc0",
|
"version": "cf7bb8706c840ae5ff80ffbc255ed0d49d3fff33",
|
||||||
"sum": "lBFnEmkRi9RiJrHnWWxVPB0pOGuYans1FdDSiRD/z68="
|
"sum": "jBsN3YSsYzSmaV2zNU4Um4K+28qUtw9uga7HwF/tqI4="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "kube-state-metrics",
|
"name": "kube-state-metrics",
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
"subdir": "jsonnet/kube-state-metrics"
|
"subdir": "jsonnet/kube-state-metrics"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "e048e7058295e218066068d8de70772da5bbbc23",
|
"version": "e99fbbc6b2b6539f44b4e769e432016eaabee650",
|
||||||
"sum": "cJjGZaLBjcIGrLHZLjRPU9c3KL+ep9rZTb9dbALSKqA="
|
"sum": "cJjGZaLBjcIGrLHZLjRPU9c3KL+ep9rZTb9dbALSKqA="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -85,7 +85,7 @@
|
||||||
"subdir": "jsonnet/kube-state-metrics-mixin"
|
"subdir": "jsonnet/kube-state-metrics-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "e048e7058295e218066068d8de70772da5bbbc23",
|
"version": "e99fbbc6b2b6539f44b4e769e432016eaabee650",
|
||||||
"sum": "E1GGavnf9PCWBm4WVrxWnc0FIj72UcbcweqGioWrOdU="
|
"sum": "E1GGavnf9PCWBm4WVrxWnc0FIj72UcbcweqGioWrOdU="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -96,8 +96,8 @@
|
||||||
"subdir": ""
|
"subdir": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "12773f7181057163a3761913bb629d7ce9e13bca",
|
"version": "544148ee3ea4da1ffa1e97ebb66599a9548fde8d",
|
||||||
"sum": "HvDNaf17rnzrdiRCjofCRrFm+tXfC5M4kmARK7bNBpw="
|
"sum": "6uEUlF5xrvjk8FBLpGaIyfH+3PNAPnzedbTsbqEaB3U="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "node-mixin",
|
"name": "node-mixin",
|
||||||
|
@ -107,8 +107,8 @@
|
||||||
"subdir": "docs/node-mixin"
|
"subdir": "docs/node-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "0107bc794204f50d887898da60032da890637471",
|
"version": "da5972b5398cd67a8854e6b1ee6b861bfda5ef83",
|
||||||
"sum": "VKdF0zPMSCiuIuXWblSz2VOeBaXzQ7fp40vz9sxj+Bo="
|
"sum": "ZwrC0+4o1xD6+oPBu1p+rBXLlf6pMBD9rT8ygyl2aW0="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "prometheus",
|
"name": "prometheus",
|
||||||
|
@ -118,7 +118,7 @@
|
||||||
"subdir": "documentation/prometheus-mixin"
|
"subdir": "documentation/prometheus-mixin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "84b00564f4df8477d59ac275e7c62972664c2926",
|
"version": "fe47c9c86ee01cb089b76002cbc047e0f22b5501",
|
||||||
"sum": "5EUgr6Spr1zNR8Y2/NevjvEkGV9WMvKo6nEScNER1Lc="
|
"sum": "5EUgr6Spr1zNR8Y2/NevjvEkGV9WMvKo6nEScNER1Lc="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -129,8 +129,8 @@
|
||||||
"subdir": "jsonnet/prometheus-operator"
|
"subdir": "jsonnet/prometheus-operator"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "59bdf55453ba08b4ed7c271cb3c6627058945ed5",
|
"version": "378d36df448366414de53a66a64020cd053002b7",
|
||||||
"sum": "qwMbUQkdPhAn9Sl4OVLgzmNOuOTnRLUmvv14I0unsa8="
|
"sum": "vegTm8VSDazwYflBQGLkjs3ystWahwUv0fUyuMbpNRg="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "prometheus-pushgateway",
|
"name": "prometheus-pushgateway",
|
||||||
|
@ -151,7 +151,7 @@
|
||||||
"subdir": "lib/promgrafonnet"
|
"subdir": "lib/promgrafonnet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "12773f7181057163a3761913bb629d7ce9e13bca",
|
"version": "544148ee3ea4da1ffa1e97ebb66599a9548fde8d",
|
||||||
"sum": "VhgBM39yv0f4bKv8VfGg4FXkg573evGDRalip9ypKbc="
|
"sum": "VhgBM39yv0f4bKv8VfGg4FXkg573evGDRalip9ypKbc="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -162,8 +162,8 @@
|
||||||
"subdir": "slo-libsonnet"
|
"subdir": "slo-libsonnet"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "5ddd7ffc39e7a54c9aca997c2c389a8046fab0ff",
|
"version": "2615ffbafc121fc0a507b75509764e53c58409e2",
|
||||||
"sum": "S7/+tnAkzVh8Li7sg7Hu4aeIQAWHCtxhRQ+k1OKjoQk="
|
"sum": "D9MryEvtOBLzIBC1nU4IvVeJPP+l3P/vpZsC0KG8vnk="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ metadata:
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
encryptedData:
|
encryptedData:
|
||||||
alertmanager.yaml: AgAmUkS+d1fSbxwpOqRmih5LXcMHbxziwjZ/7XZrAOouYcQ3sC1TUJ36gqhKrzHEd/RPvMFHGOvYSFP84h4Fszd3UvKhQrt+tf4ljUnkDPOpF8rPdDOglJrUHbfmC+jxiGUBlWUKiG4vxuuq2rUy0RNivLrOyDcpw2xVqMcPvAwzuzYvy51ZtstBFOv/o75xXekent04wtTJdVbPjnCQHyYpECgCb8N5Q1ehjwHQLAsxaECovnVejGoMvKY52/j1oZ4vZYRSzxCULpO90lMcoidCB+TwuA1V+ndEeNA7NDE7Xp6QNLXGolkSfHd9Ot4gajAWNnA1EQHo45IFU2D+6fO/HaazTtJw8AtjLIKW4pAQzIBY2NE7CoNsKFl/tE9eLCr72Y8voRCR3SEncYJ9/6RQOMiC+i3IPevL4UQ+CLqEtEDupW8rwJLD+qERugMDMT5bcd4WRLxDbReE2HB9GexXFVM1y92arBn06+C6wcZZsufXEzCwnJByNCYZpuQmYv34kKyZmvZCxxbspDKcKwsKeuaDysjq23ukdt8+nan2Tow16GAn3KgguGfgiLh05ZJaDzBzqwzT8En5w9Erc/nQoCp97BGSM2CZvoZum0K7RoJWMIblx4kUwFn6TsvXfsSc8mQXFDR35OcsNsqGHvCGMmXsbzO9f0xQ+MrtsTYuVoHg18GSBaYbOB0CgzkKVp55WXFeyrtYOnee2bWeD4C6JkjcbQypE0QcLmJX33UDsILxerHSV+FmBI6fmbdIHMaOL5p3ZVgySTDe3b7v+mOUagAMwTb6ojU44C9Ozbm7RTKpiKx3HglCpzqMMPws3Z7MQ6T8pLEMFWHvdnw3BxOLECiVZBSazp/vbVVeLpM0druv4Yccfpa5vpUQrKMlItIL3O1FNsEa8FO+sa0IleLzSH0hbEGttGFMh8Q9cDJ4QuCo1wsGRxH/52ijwquu/sMZmuXNI/yt/QYgopdD2OhgC8HhsVoMkFlri/KLRS+m5BNN28UpBmBFztOZY+Wz8sFZlPRgGZY1hqHytEgIxot7jhNeuLXOyWkk82+LiQX5aunzHqV4rpoMy5Cu1jCGPO8sF9zUfrH3wTMnVlcFwEChd7DcPO+yJ2w3vanwNIo6XpG0OS3CE8DcgeyyrO+PSyzBeP07kqa504T7cMgLovUzO3A/qVegXBALPo0vl859iGlTFQLRfPUBU9ouFAwznSGkX0HVTlpyCr/XO89p554QUT/HcqKeMe4Y+H6ZtGfq0UIjCGCGDKqUSnx2tPPqbuMDg9GHJBClwWqaGPrj25VM6cCpubbqer6BiNTFrdhLOpJPNsSXF2pUSTquyafelBtTt2ANYXD3JD0Sf0o3arsrN1pWjep/n4ZmwKLlJ+Z3uX22jUj8sSIako0cVJk8zTwfVoan7VMLbSJ7WRkmO+/OgwZ6QR1I1pYdbiDrI6/eRmbYSjk46DTyVF5a8qdLGyJTLlmJjTepef40p/7S6X2fYDK079LAjfz4S3tOu2IF2KlN0GzbHcPMbDfn91plhDebPR9QHbvJlM33RbMr3BLCHSXw3zT2qdkmNVNP5jrwib4sXvrl8L7HYyuR53j3zkgmtlWo7YwaGUD+X3H/vba5mMXx1z/XdNyb/7EHdi8SGfny66WlWT6zz9oa1tEN0dIxdGGIYpcArEhjyyJWKPoFt0DFj0opbPdJhHxLzofh6XAolw==
|
alertmanager.yaml: AgBlhYgX4pIgWPP1u5dNb9lPMoS0BR7Ca3M5kUVRKrkeT6Jn+kLZcju4g7A1WlkQ+jR2ptlaq+MkgYs1GS27wrw/iBsOZIbvfLoyFr4pL5i58WzzxPvk1wFO86oCpLJoK3pDh/eKR4e16BR70Q3DOTMRXEQ8SuOMKFonBPALOllAAXPYQFioF9MN+0MBifvnGe6UrfbXsQCdoL9H0G/OiJv/ZJxJcmx8eJRpJEgeyAQsdi0NNzhg2RiiNDC0qVCIblSxOaGhlNNQxiqLaQW5Uh7DXV2u+Rz1u85dm6lzSazjoXozPdPS4vMEMy8ZmFvzW2S7DhcfBJ0RE99DzGofIT67QIFh4edxCBRtlpYaYDoLKNkNRpp9inTHnQEGLga2qrElOUU5O2OwgC8qKl4k54Zxu4NUlGKr1IDsnbUiBNge+uvrsu/RahCYQ13H5eeJgkIuFSYE9h1qNG+s/lrjNQY7JsL9ZYj1ddn/5ZOYjgkCWs6yjTU+20uboU5vLOK2zawrJ6cvO6FHPjEMrnpcVSUlqIc588Ligg1coU5J0+UkLd1OPKY/5YBuMdNUBsmLfqutHbWSCiz9PgcI8wZsvCkPiyeUP3QlgvnLaQfcNUxv/tlU+Yg2nBYceKDPr3i2CN6IGrN5CxcCKMClEdTZ5xgmREN6sj0gIKPm1TpOdL1BjBcokZSXgYGnmr5XxDv9ybyainqcitSewznxHKbtvszJihHU6XcOr0MKo0L+abfwjlWvcHM+cZAT35xf1xtZ18A2JauwJ94+Flhzro+a1UclnwDQJf8Hp5PhMQRzu5q8WCLOF08N9Xq469K/FB4jtxnrYPJb6hQhZ+/LmLbLL9c3p2g1X+YQWeoUDvAZ6ujjPoBvNxPoLIsXO2Tu77se94e3WGxaHtcEqtFLQujH3jgAHLRp/x9jHoAniBLVo69/Xd6rbLZQ4DLhMlkdkipaM2iQZxoWQ0qHsISVseEu9741IZfveq0MY3acTcwPm7B0JXAn8dLmdv1BNrRo0/Xxgysdn3DybFmJ7AlFCi3iKacsIvnjEdZgCD3ogFyySSu/b52IyrhOl6WKLZaLURLHe8mxx8kXbRVVOQQ162Xgtx4viqg15yF15Qt0NmMXzU+hQc/XmVRuRVYPYhFuRAQVCD40ENwt/X3/ae/Mkfc2jzWvN3O+VfbepKfc4D+jVM1mv+E2dS4ZcWPmvvIXiLKJMcscZBr75bO6pt8LaMgz+n+ZPJRJzKa+yESbOYefNuP8DuwImPD8ridLBWR49EZD/P3I/7ZwJjHXH+VpYxMErcKI5R2znnLrnCBgMAV8M78vzbzuJ7Ljb6RkjCSU4NWnIAZmxgldbSLoHwXK57yoW+HDC9twDcvR40XL2NGSlChtd+x9M/mgHuS/NpAalJtF0zlo/hbaCSwE56wUYpjO9yx/rhj1wrYIbdAZ/aJaPcpi8cbhDltFMZT6OrWoCCiKR69wB3/HFSHd+SnLTBb1mdfqPwngekfe2TRQ7kXMfbPiBYJC6H5rQHHojmSGwl4AHL6qJ3InXGSG1FFnnc/roGGffjkpbIdmkqPfwn4Ob60xJwdLEYFEs1TOrOnKhTJfgc723EZr8AdVNhXbUlEiVyNhbyp4hHvzeybqMryEGuhKZIMD+GnfWC3/TSKFJC8wwFSOdmnjD3FhTF3ZEX4ehuhZLtE7sJjftjDXyrjVOF3eXlp9bQ==
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
creationTimestamp: null
|
creationTimestamp: null
|
||||||
|
|
|
@ -4305,7 +4305,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "1 - avg(rate(node_cpu_seconds_total{mode=\"idle\", cluster=\"$cluster\"}[$interval]))",
|
"expr": "1 - avg(rate(node_cpu_seconds_total{mode=\"idle\", cluster=\"$cluster\"}[$__interval]))",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -5807,7 +5807,7 @@ items:
|
||||||
],
|
],
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -5816,7 +5816,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -5825,7 +5825,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -5834,7 +5834,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -5843,7 +5843,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -5852,7 +5852,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -5952,7 +5952,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{namespace}}",
|
"legendFormat": "{{namespace}}",
|
||||||
|
@ -6050,7 +6050,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{namespace}}",
|
"legendFormat": "{{namespace}}",
|
||||||
|
@ -6148,7 +6148,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{namespace}}",
|
"legendFormat": "{{namespace}}",
|
||||||
|
@ -6246,7 +6246,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{namespace}}",
|
"legendFormat": "{{namespace}}",
|
||||||
|
@ -6344,7 +6344,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{namespace}}",
|
"legendFormat": "{{namespace}}",
|
||||||
|
@ -6442,7 +6442,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{namespace}}",
|
"legendFormat": "{{namespace}}",
|
||||||
|
@ -6540,7 +6540,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{namespace}}",
|
"legendFormat": "{{namespace}}",
|
||||||
|
@ -6638,7 +6638,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$interval])) by (namespace)",
|
"expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$__interval])) by (namespace)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{namespace}}",
|
"legendFormat": "{{namespace}}",
|
||||||
|
@ -6745,41 +6745,6 @@ items:
|
||||||
"type": "query",
|
"type": "query",
|
||||||
"useTags": false
|
"useTags": false
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"allValue": null,
|
|
||||||
"auto": false,
|
|
||||||
"auto_count": 30,
|
|
||||||
"auto_min": "10s",
|
|
||||||
"current": {
|
|
||||||
"text": "5m",
|
|
||||||
"value": "5m"
|
|
||||||
},
|
|
||||||
"datasource": "$datasource",
|
|
||||||
"hide": 2,
|
|
||||||
"includeAll": false,
|
|
||||||
"label": null,
|
|
||||||
"multi": false,
|
|
||||||
"name": "interval",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"selected": true,
|
|
||||||
"text": "$__interval",
|
|
||||||
"value": "$__interval"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"query": "$__interval",
|
|
||||||
"refresh": 2,
|
|
||||||
"regex": "",
|
|
||||||
"skipUrlSync": false,
|
|
||||||
"sort": 1,
|
|
||||||
"tagValuesQuery": "",
|
|
||||||
"tags": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"tagsQuery": "",
|
|
||||||
"type": "interval",
|
|
||||||
"useTags": false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allValue": null,
|
"allValue": null,
|
||||||
"current": {
|
"current": {
|
||||||
|
@ -8285,7 +8250,7 @@ items:
|
||||||
],
|
],
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -8294,7 +8259,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -8303,7 +8268,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -8312,7 +8277,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -8321,7 +8286,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -8330,7 +8295,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -8430,7 +8395,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -8528,7 +8493,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -8626,7 +8591,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -8724,7 +8689,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -8822,7 +8787,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -8920,7 +8885,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -9000,41 +8965,6 @@ items:
|
||||||
"regex": "",
|
"regex": "",
|
||||||
"type": "datasource"
|
"type": "datasource"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"allValue": null,
|
|
||||||
"auto": false,
|
|
||||||
"auto_count": 30,
|
|
||||||
"auto_min": "10s",
|
|
||||||
"current": {
|
|
||||||
"text": "5m",
|
|
||||||
"value": "5m"
|
|
||||||
},
|
|
||||||
"datasource": "$datasource",
|
|
||||||
"hide": 2,
|
|
||||||
"includeAll": false,
|
|
||||||
"label": null,
|
|
||||||
"multi": false,
|
|
||||||
"name": "interval",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"selected": true,
|
|
||||||
"text": "$__interval",
|
|
||||||
"value": "$__interval"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"query": "$__interval",
|
|
||||||
"refresh": 2,
|
|
||||||
"regex": "",
|
|
||||||
"skipUrlSync": false,
|
|
||||||
"sort": 1,
|
|
||||||
"tagValuesQuery": "",
|
|
||||||
"tags": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"tagsQuery": "",
|
|
||||||
"type": "interval",
|
|
||||||
"useTags": false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allValue": null,
|
"allValue": null,
|
||||||
"current": {
|
"current": {
|
||||||
|
@ -9982,41 +9912,6 @@ items:
|
||||||
"regex": "",
|
"regex": "",
|
||||||
"type": "datasource"
|
"type": "datasource"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"allValue": null,
|
|
||||||
"auto": false,
|
|
||||||
"auto_count": 30,
|
|
||||||
"auto_min": "10s",
|
|
||||||
"current": {
|
|
||||||
"text": "5m",
|
|
||||||
"value": "5m"
|
|
||||||
},
|
|
||||||
"datasource": "$datasource",
|
|
||||||
"hide": 2,
|
|
||||||
"includeAll": false,
|
|
||||||
"label": null,
|
|
||||||
"multi": false,
|
|
||||||
"name": "interval",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"selected": true,
|
|
||||||
"text": "$__interval",
|
|
||||||
"value": "$__interval"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"query": "$__interval",
|
|
||||||
"refresh": 2,
|
|
||||||
"regex": "",
|
|
||||||
"skipUrlSync": false,
|
|
||||||
"sort": 1,
|
|
||||||
"tagValuesQuery": "",
|
|
||||||
"tags": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"tagsQuery": "",
|
|
||||||
"type": "interval",
|
|
||||||
"useTags": false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allValue": null,
|
"allValue": null,
|
||||||
"current": {
|
"current": {
|
||||||
|
@ -11155,7 +11050,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -11253,7 +11148,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_transmit_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -11351,7 +11246,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_packets_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -11449,7 +11344,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_packets_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_transmit_packets_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -11547,7 +11442,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -11645,7 +11540,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "sum(irate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$interval])) by (pod)",
|
"expr": "sum(irate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__interval])) by (pod)",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -11725,41 +11620,6 @@ items:
|
||||||
"regex": "",
|
"regex": "",
|
||||||
"type": "datasource"
|
"type": "datasource"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"allValue": null,
|
|
||||||
"auto": false,
|
|
||||||
"auto_count": 30,
|
|
||||||
"auto_min": "10s",
|
|
||||||
"current": {
|
|
||||||
"text": "5m",
|
|
||||||
"value": "5m"
|
|
||||||
},
|
|
||||||
"datasource": "$datasource",
|
|
||||||
"hide": 2,
|
|
||||||
"includeAll": false,
|
|
||||||
"label": null,
|
|
||||||
"multi": false,
|
|
||||||
"name": "interval",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"selected": true,
|
|
||||||
"text": "$__interval",
|
|
||||||
"value": "$__interval"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"query": "$__interval",
|
|
||||||
"refresh": 2,
|
|
||||||
"regex": "",
|
|
||||||
"skipUrlSync": false,
|
|
||||||
"sort": 1,
|
|
||||||
"tagValuesQuery": "",
|
|
||||||
"tags": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"tagsQuery": "",
|
|
||||||
"type": "interval",
|
|
||||||
"useTags": false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allValue": null,
|
"allValue": null,
|
||||||
"current": {
|
"current": {
|
||||||
|
@ -12820,7 +12680,7 @@ items:
|
||||||
],
|
],
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -12829,7 +12689,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -12838,7 +12698,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -12847,7 +12707,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -12856,7 +12716,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -12865,7 +12725,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -12965,7 +12825,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -13063,7 +12923,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -13161,7 +13021,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -13259,7 +13119,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -13357,7 +13217,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -13455,7 +13315,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -13553,7 +13413,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -13651,7 +13511,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod) \ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
"expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{pod}}",
|
"legendFormat": "{{pod}}",
|
||||||
|
@ -13731,41 +13591,6 @@ items:
|
||||||
"regex": "",
|
"regex": "",
|
||||||
"type": "datasource"
|
"type": "datasource"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"allValue": null,
|
|
||||||
"auto": false,
|
|
||||||
"auto_count": 30,
|
|
||||||
"auto_min": "10s",
|
|
||||||
"current": {
|
|
||||||
"text": "5m",
|
|
||||||
"value": "5m"
|
|
||||||
},
|
|
||||||
"datasource": "$datasource",
|
|
||||||
"hide": 2,
|
|
||||||
"includeAll": false,
|
|
||||||
"label": null,
|
|
||||||
"multi": false,
|
|
||||||
"name": "interval",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"selected": true,
|
|
||||||
"text": "$__interval",
|
|
||||||
"value": "$__interval"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"query": "$__interval",
|
|
||||||
"refresh": 2,
|
|
||||||
"regex": "",
|
|
||||||
"skipUrlSync": false,
|
|
||||||
"sort": 1,
|
|
||||||
"tagValuesQuery": "",
|
|
||||||
"tags": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"tagsQuery": "",
|
|
||||||
"type": "interval",
|
|
||||||
"useTags": false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allValue": null,
|
"allValue": null,
|
||||||
"current": {
|
"current": {
|
||||||
|
@ -13827,7 +13652,7 @@ items:
|
||||||
"value": ""
|
"value": ""
|
||||||
},
|
},
|
||||||
"datasource": "$datasource",
|
"datasource": "$datasource",
|
||||||
"hide": 2,
|
"hide": 0,
|
||||||
"includeAll": false,
|
"includeAll": false,
|
||||||
"label": null,
|
"label": null,
|
||||||
"multi": false,
|
"multi": false,
|
||||||
|
@ -15031,7 +14856,7 @@ items:
|
||||||
],
|
],
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -15040,7 +14865,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -15049,7 +14874,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -15058,7 +14883,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -15067,7 +14892,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -15076,7 +14901,7 @@ items:
|
||||||
"step": 10
|
"step": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "table",
|
"format": "table",
|
||||||
"instant": true,
|
"instant": true,
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
|
@ -15176,7 +15001,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{workload}}",
|
"legendFormat": "{{workload}}",
|
||||||
|
@ -15274,7 +15099,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{workload}}",
|
"legendFormat": "{{workload}}",
|
||||||
|
@ -15372,7 +15197,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{workload}}",
|
"legendFormat": "{{workload}}",
|
||||||
|
@ -15470,7 +15295,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{workload}}",
|
"legendFormat": "{{workload}}",
|
||||||
|
@ -15568,7 +15393,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{workload}}",
|
"legendFormat": "{{workload}}",
|
||||||
|
@ -15666,7 +15491,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{workload}}",
|
"legendFormat": "{{workload}}",
|
||||||
|
@ -15764,7 +15589,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{workload}}",
|
"legendFormat": "{{workload}}",
|
||||||
|
@ -15862,7 +15687,7 @@ items:
|
||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$interval])\n* on (namespace,pod) \ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
"expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__interval])\n* on (namespace,pod) \ngroup_left(workload,workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 2,
|
"intervalFactor": 2,
|
||||||
"legendFormat": "{{workload}}",
|
"legendFormat": "{{workload}}",
|
||||||
|
@ -15942,41 +15767,6 @@ items:
|
||||||
"regex": "",
|
"regex": "",
|
||||||
"type": "datasource"
|
"type": "datasource"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"allValue": null,
|
|
||||||
"auto": false,
|
|
||||||
"auto_count": 30,
|
|
||||||
"auto_min": "10s",
|
|
||||||
"current": {
|
|
||||||
"text": "5m",
|
|
||||||
"value": "5m"
|
|
||||||
},
|
|
||||||
"datasource": "$datasource",
|
|
||||||
"hide": 2,
|
|
||||||
"includeAll": false,
|
|
||||||
"label": null,
|
|
||||||
"multi": false,
|
|
||||||
"name": "interval",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"selected": true,
|
|
||||||
"text": "$__interval",
|
|
||||||
"value": "$__interval"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"query": "$__interval",
|
|
||||||
"refresh": 2,
|
|
||||||
"regex": "",
|
|
||||||
"skipUrlSync": false,
|
|
||||||
"sort": 1,
|
|
||||||
"tagValuesQuery": "",
|
|
||||||
"tags": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"tagsQuery": "",
|
|
||||||
"type": "interval",
|
|
||||||
"useTags": false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allValue": null,
|
"allValue": null,
|
||||||
"auto": false,
|
"auto": false,
|
||||||
|
|
|
@ -37,6 +37,8 @@ spec:
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8443
|
- containerPort: 8443
|
||||||
name: https-main
|
name: https-main
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 65534
|
||||||
- args:
|
- args:
|
||||||
- --logtostderr
|
- --logtostderr
|
||||||
- --secure-listen-address=:9443
|
- --secure-listen-address=:9443
|
||||||
|
@ -47,6 +49,8 @@ spec:
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 9443
|
- containerPort: 9443
|
||||||
name: https-self
|
name: https-self
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 65534
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
kubernetes.io/os: linux
|
kubernetes.io/os: linux
|
||||||
serviceAccountName: kube-state-metrics
|
serviceAccountName: kube-state-metrics
|
||||||
|
|
|
@ -2,17 +2,20 @@ apiVersion: apps/v1
|
||||||
kind: DaemonSet
|
kind: DaemonSet
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
|
app.kubernetes.io/version: v0.18.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
|
app.kubernetes.io/version: v0.18.1
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
|
app.kubernetes.io/version: v0.18.1
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- args:
|
- args:
|
||||||
|
|
|
@ -2,7 +2,8 @@ apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
k8s-app: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
|
app.kubernetes.io/version: v0.18.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
@ -12,4 +13,5 @@ spec:
|
||||||
port: 9100
|
port: 9100
|
||||||
targetPort: https
|
targetPort: https
|
||||||
selector:
|
selector:
|
||||||
app: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
|
app.kubernetes.io/version: v0.18.1
|
||||||
|
|
|
@ -2,7 +2,8 @@ apiVersion: monitoring.coreos.com/v1
|
||||||
kind: ServiceMonitor
|
kind: ServiceMonitor
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
k8s-app: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
|
app.kubernetes.io/version: v0.18.1
|
||||||
name: node-exporter
|
name: node-exporter
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
@ -20,7 +21,8 @@ spec:
|
||||||
scheme: https
|
scheme: https
|
||||||
tlsConfig:
|
tlsConfig:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
jobLabel: k8s-app
|
jobLabel: app.kubernetes.io/name
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
k8s-app: node-exporter
|
app.kubernetes.io/name: node-exporter
|
||||||
|
app.kubernetes.io/version: v0.18.1
|
||||||
|
|
|
@ -3,8 +3,8 @@ data:
|
||||||
config.yaml: |
|
config.yaml: |
|
||||||
resourceRules:
|
resourceRules:
|
||||||
cpu:
|
cpu:
|
||||||
containerQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!="POD",container!="",pod!=""}[5m])) by (<<.GroupBy>>)
|
containerQuery: sum(irate(container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!="POD",container!="",pod!=""}[5m])) by (<<.GroupBy>>)
|
||||||
nodeQuery: sum(1 - rate(node_cpu_seconds_total{mode="idle"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>)
|
nodeQuery: sum(1 - irate(node_cpu_seconds_total{mode="idle"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>)
|
||||||
resources:
|
resources:
|
||||||
overrides:
|
overrides:
|
||||||
node:
|
node:
|
||||||
|
|
|
@ -4,15 +4,19 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/version: v0.37.0
|
app.kubernetes.io/version: v0.38.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
endpoints:
|
endpoints:
|
||||||
- honorLabels: true
|
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
|
||||||
port: http
|
honorLabels: true
|
||||||
|
port: https
|
||||||
|
scheme: https
|
||||||
|
tlsConfig:
|
||||||
|
insecureSkipVerify: true
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/version: v0.37.0
|
app.kubernetes.io/version: v0.38.0
|
||||||
|
|
|
@ -182,22 +182,22 @@ spec:
|
||||||
- name: kube-apiserver.rules
|
- name: kube-apiserver.rules
|
||||||
rules:
|
rules:
|
||||||
- expr: |
|
- expr: |
|
||||||
sum(rate(apiserver_request_duration_seconds_sum{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|PROXY|CONNECT"}[5m])) without(instance, pod)
|
sum(rate(apiserver_request_duration_seconds_sum{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)
|
||||||
/
|
/
|
||||||
sum(rate(apiserver_request_duration_seconds_count{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|PROXY|CONNECT"}[5m])) without(instance, pod)
|
sum(rate(apiserver_request_duration_seconds_count{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)
|
||||||
record: cluster:apiserver_request_duration_seconds:mean5m
|
record: cluster:apiserver_request_duration_seconds:mean5m
|
||||||
- expr: |
|
- expr: |
|
||||||
histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|PROXY|CONNECT"}[5m])) without(instance, pod))
|
histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod))
|
||||||
labels:
|
labels:
|
||||||
quantile: "0.99"
|
quantile: "0.99"
|
||||||
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
||||||
- expr: |
|
- expr: |
|
||||||
histogram_quantile(0.9, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|PROXY|CONNECT"}[5m])) without(instance, pod))
|
histogram_quantile(0.9, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod))
|
||||||
labels:
|
labels:
|
||||||
quantile: "0.9"
|
quantile: "0.9"
|
||||||
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
||||||
- expr: |
|
- expr: |
|
||||||
histogram_quantile(0.5, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|PROXY|CONNECT"}[5m])) without(instance, pod))
|
histogram_quantile(0.5, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod))
|
||||||
labels:
|
labels:
|
||||||
quantile: "0.5"
|
quantile: "0.5"
|
||||||
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile
|
||||||
|
@ -605,6 +605,47 @@ spec:
|
||||||
for: 1h
|
for: 1h
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
|
- alert: NodeHighNumberConntrackEntriesUsed
|
||||||
|
annotations:
|
||||||
|
description: '{{ $value | humanizePercentage }} of conntrack entries are used'
|
||||||
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-nodehighnumberconntrackentriesused
|
||||||
|
summary: Number of conntrack are getting close to the limit
|
||||||
|
expr: |
|
||||||
|
(node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
|
- alert: NodeClockSkewDetected
|
||||||
|
annotations:
|
||||||
|
message: Clock on {{ $labels.instance }} is out of sync by more than 300s.
|
||||||
|
Ensure NTP is configured correctly on this host.
|
||||||
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-nodeclockskewdetected
|
||||||
|
summary: Clock skew detected.
|
||||||
|
expr: |
|
||||||
|
(
|
||||||
|
node_timex_offset_seconds > 0.05
|
||||||
|
and
|
||||||
|
deriv(node_timex_offset_seconds[5m]) >= 0
|
||||||
|
)
|
||||||
|
or
|
||||||
|
(
|
||||||
|
node_timex_offset_seconds < -0.05
|
||||||
|
and
|
||||||
|
deriv(node_timex_offset_seconds[5m]) <= 0
|
||||||
|
)
|
||||||
|
for: 10m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
|
- alert: NodeClockNotSynchronising
|
||||||
|
annotations:
|
||||||
|
message: Clock on {{ $labels.instance }} is not synchronising. Ensure NTP
|
||||||
|
is configured on this host.
|
||||||
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-nodeclocknotsynchronising
|
||||||
|
summary: Clock not synchronising.
|
||||||
|
expr: |
|
||||||
|
min_over_time(node_timex_sync_status[5m]) == 0
|
||||||
|
for: 10m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
- name: kubernetes-apps
|
- name: kubernetes-apps
|
||||||
rules:
|
rules:
|
||||||
- alert: KubePodCrashLooping
|
- alert: KubePodCrashLooping
|
||||||
|
@ -824,11 +865,11 @@ spec:
|
||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeMemOvercommit
|
- alert: KubeMemoryOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
message: Cluster has overcommitted memory resource requests for Pods and cannot
|
message: Cluster has overcommitted memory resource requests for Pods and cannot
|
||||||
tolerate node failure.
|
tolerate node failure.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubememovercommit
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubememoryovercommit
|
||||||
expr: |
|
expr: |
|
||||||
sum(namespace:kube_pod_container_resource_requests_memory_bytes:sum{})
|
sum(namespace:kube_pod_container_resource_requests_memory_bytes:sum{})
|
||||||
/
|
/
|
||||||
|
@ -840,10 +881,10 @@ spec:
|
||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeCPUOvercommit
|
- alert: KubeCPUQuotaOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
message: Cluster has overcommitted CPU resource requests for Namespaces.
|
message: Cluster has overcommitted CPU resource requests for Namespaces.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubecpuovercommit
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubecpuquotaovercommit
|
||||||
expr: |
|
expr: |
|
||||||
sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="cpu"})
|
sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="cpu"})
|
||||||
/
|
/
|
||||||
|
@ -852,10 +893,10 @@ spec:
|
||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
- alert: KubeMemOvercommit
|
- alert: KubeMemoryQuotaOvercommit
|
||||||
annotations:
|
annotations:
|
||||||
message: Cluster has overcommitted memory resource requests for Namespaces.
|
message: Cluster has overcommitted memory resource requests for Namespaces.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubememovercommit
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubememoryquotaovercommit
|
||||||
expr: |
|
expr: |
|
||||||
sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="memory"})
|
sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="memory"})
|
||||||
/
|
/
|
||||||
|
@ -1137,7 +1178,7 @@ spec:
|
||||||
}} of its Pod capacity.
|
}} of its Pod capacity.
|
||||||
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubelettoomanypods
|
runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubelettoomanypods
|
||||||
expr: |
|
expr: |
|
||||||
max(max(kubelet_running_pod_count{job="kubelet", metrics_path="/metrics"}) by(instance) * on(instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"}) by(node) / max(kube_node_status_capacity_pods{job="kube-state-metrics"}) by(node) > 0.95
|
max(max(kubelet_running_pod_count{job="kubelet", metrics_path="/metrics"}) by(instance) * on(instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"}) by(node) / max(kube_node_status_capacity_pods{job="kube-state-metrics"} != 1) by(node) > 0.95
|
||||||
for: 15m
|
for: 15m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
|
@ -1459,17 +1500,6 @@ spec:
|
||||||
expr: vector(1)
|
expr: vector(1)
|
||||||
labels:
|
labels:
|
||||||
severity: none
|
severity: none
|
||||||
- name: node-time
|
|
||||||
rules:
|
|
||||||
- alert: ClockSkewDetected
|
|
||||||
annotations:
|
|
||||||
message: Clock skew detected on node-exporter {{ $labels.namespace }}/{{ $labels.pod
|
|
||||||
}}. Ensure NTP is configured correctly on this host.
|
|
||||||
expr: |
|
|
||||||
abs(node_timex_offset_seconds{job="node-exporter"}) > 0.05
|
|
||||||
for: 2m
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
- name: node-network
|
- name: node-network
|
||||||
rules:
|
rules:
|
||||||
- alert: NodeNetworkInterfaceFlapping
|
- alert: NodeNetworkInterfaceFlapping
|
||||||
|
|
|
@ -123,7 +123,7 @@ spec:
|
||||||
description: HTTP path to scrape for metrics.
|
description: HTTP path to scrape for metrics.
|
||||||
type: string
|
type: string
|
||||||
port:
|
port:
|
||||||
description: Name of the port this endpoint refers to. Mutually
|
description: Name of the pod port this endpoint refers to. Mutually
|
||||||
exclusive with targetPort.
|
exclusive with targetPort.
|
||||||
type: string
|
type: string
|
||||||
proxyUrl:
|
proxyUrl:
|
||||||
|
@ -186,8 +186,7 @@ spec:
|
||||||
anyOf:
|
anyOf:
|
||||||
- type: integer
|
- type: integer
|
||||||
- type: string
|
- type: string
|
||||||
description: Name or number of the target port of the endpoint.
|
description: 'Deprecated: Use ''port'' instead.'
|
||||||
Mutually exclusive with port.
|
|
||||||
x-kubernetes-int-or-string: true
|
x-kubernetes-int-or-string: true
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
|
|
@ -4483,6 +4483,128 @@ spec:
|
||||||
baseImage:
|
baseImage:
|
||||||
description: Thanos base image if other than default.
|
description: Thanos base image if other than default.
|
||||||
type: string
|
type: string
|
||||||
|
grpcServerTlsConfig:
|
||||||
|
description: 'GRPCServerTLSConfig configures the gRPC server from
|
||||||
|
which Thanos Querier reads recorded rule data. Note: Currently
|
||||||
|
only the CAFile, CertFile, and KeyFile fields are supported. Maps
|
||||||
|
to the ''--grpc-server-tls-*'' CLI args.'
|
||||||
|
properties:
|
||||||
|
ca:
|
||||||
|
description: Stuct containing the CA cert to use for the targets.
|
||||||
|
properties:
|
||||||
|
configMap:
|
||||||
|
description: ConfigMap containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key to select.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the ConfigMap or its key
|
||||||
|
must be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
secret:
|
||||||
|
description: Secret containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key of the secret to select from. Must
|
||||||
|
be a valid secret key.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the Secret or its key must
|
||||||
|
be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
caFile:
|
||||||
|
description: Path to the CA cert in the Prometheus container
|
||||||
|
to use for the targets.
|
||||||
|
type: string
|
||||||
|
cert:
|
||||||
|
description: Struct containing the client cert file for the
|
||||||
|
targets.
|
||||||
|
properties:
|
||||||
|
configMap:
|
||||||
|
description: ConfigMap containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key to select.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the ConfigMap or its key
|
||||||
|
must be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
secret:
|
||||||
|
description: Secret containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key of the secret to select from. Must
|
||||||
|
be a valid secret key.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the Secret or its key must
|
||||||
|
be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
certFile:
|
||||||
|
description: Path to the client cert file in the Prometheus
|
||||||
|
container for the targets.
|
||||||
|
type: string
|
||||||
|
insecureSkipVerify:
|
||||||
|
description: Disable target certificate validation.
|
||||||
|
type: boolean
|
||||||
|
keyFile:
|
||||||
|
description: Path to the client key file in the Prometheus container
|
||||||
|
for the targets.
|
||||||
|
type: string
|
||||||
|
keySecret:
|
||||||
|
description: Secret containing the client key file for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key of the secret to select from. Must
|
||||||
|
be a valid secret key.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the Secret or its key must
|
||||||
|
be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
serverName:
|
||||||
|
description: Used to verify the hostname for the targets.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
image:
|
image:
|
||||||
description: Image if specified has precedence over baseImage, tag
|
description: Image if specified has precedence over baseImage, tag
|
||||||
and sha combinations. Specifying the version is still necessary
|
and sha combinations. Specifying the version is still necessary
|
||||||
|
@ -4606,6 +4728,47 @@ spec:
|
||||||
version:
|
version:
|
||||||
description: Version of Prometheus to be deployed.
|
description: Version of Prometheus to be deployed.
|
||||||
type: string
|
type: string
|
||||||
|
volumeMounts:
|
||||||
|
description: VolumeMounts allows configuration of additional VolumeMounts
|
||||||
|
on the output StatefulSet definition. VolumeMounts specified will
|
||||||
|
be appended to other VolumeMounts in the prometheus container, that
|
||||||
|
are generated as a result of StorageSpec objects.
|
||||||
|
items:
|
||||||
|
description: VolumeMount describes a mounting of a Volume within a
|
||||||
|
container.
|
||||||
|
properties:
|
||||||
|
mountPath:
|
||||||
|
description: Path within the container at which the volume should
|
||||||
|
be mounted. Must not contain ':'.
|
||||||
|
type: string
|
||||||
|
mountPropagation:
|
||||||
|
description: mountPropagation determines how mounts are propagated
|
||||||
|
from the host to container and the other way around. When not
|
||||||
|
set, MountPropagationNone is used. This field is beta in 1.10.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: This must match the Name of a Volume.
|
||||||
|
type: string
|
||||||
|
readOnly:
|
||||||
|
description: Mounted read-only if true, read-write otherwise (false
|
||||||
|
or unspecified). Defaults to false.
|
||||||
|
type: boolean
|
||||||
|
subPath:
|
||||||
|
description: Path within the volume from which the container's
|
||||||
|
volume should be mounted. Defaults to "" (volume's root).
|
||||||
|
type: string
|
||||||
|
subPathExpr:
|
||||||
|
description: Expanded path within the volume from which the container's
|
||||||
|
volume should be mounted. Behaves similarly to SubPath but environment
|
||||||
|
variable references $(VAR_NAME) are expanded using the container's
|
||||||
|
environment. Defaults to "" (volume's root). SubPathExpr and
|
||||||
|
SubPath are mutually exclusive.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- mountPath
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
volumes:
|
volumes:
|
||||||
description: Volumes allows configuration of additional volumes on the
|
description: Volumes allows configuration of additional volumes on the
|
||||||
output StatefulSet definition. Volumes specified will be appended
|
output StatefulSet definition. Volumes specified will be appended
|
||||||
|
|
|
@ -235,8 +235,8 @@ spec:
|
||||||
anyOf:
|
anyOf:
|
||||||
- type: integer
|
- type: integer
|
||||||
- type: string
|
- type: string
|
||||||
description: Name or number of the target port of the endpoint.
|
description: Name or number of the pod port this endpoint refers
|
||||||
Mutually exclusive with port.
|
to. Mutually exclusive with port.
|
||||||
x-kubernetes-int-or-string: true
|
x-kubernetes-int-or-string: true
|
||||||
tlsConfig:
|
tlsConfig:
|
||||||
description: TLS configuration to use when scraping the endpoint
|
description: TLS configuration to use when scraping the endpoint
|
||||||
|
|
|
@ -632,10 +632,13 @@ spec:
|
||||||
- key
|
- key
|
||||||
type: object
|
type: object
|
||||||
alertmanagersUrl:
|
alertmanagersUrl:
|
||||||
description: Define URL to send alerts to alertmanager. For Thanos
|
description: 'Define URLs to send alerts to Alertmanager. For Thanos
|
||||||
v0.10.0 and higher, AlertManagersConfig should be used instead. Maps
|
v0.10.0 and higher, AlertManagersConfig should be used instead. Note:
|
||||||
to the `alertmanagers.url` arg.
|
this field will be ignored if AlertManagersConfig is specified. Maps
|
||||||
type: string
|
to the `alertmanagers.url` arg.'
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
containers:
|
containers:
|
||||||
description: 'Containers allows injecting additional containers or modifying
|
description: 'Containers allows injecting additional containers or modifying
|
||||||
operator generated containers. This can be used to allow adding an
|
operator generated containers. This can be used to allow adding an
|
||||||
|
@ -1692,6 +1695,126 @@ spec:
|
||||||
under. This is necessary to generate correct URLs. This is necessary
|
under. This is necessary to generate correct URLs. This is necessary
|
||||||
if Thanos Ruler is not served from root of a DNS name.
|
if Thanos Ruler is not served from root of a DNS name.
|
||||||
type: string
|
type: string
|
||||||
|
grpcServerTlsConfig:
|
||||||
|
description: 'GRPCServerTLSConfig configures the gRPC server from which
|
||||||
|
Thanos Querier reads recorded rule data. Note: Currently only the
|
||||||
|
CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*''
|
||||||
|
CLI args.'
|
||||||
|
properties:
|
||||||
|
ca:
|
||||||
|
description: Stuct containing the CA cert to use for the targets.
|
||||||
|
properties:
|
||||||
|
configMap:
|
||||||
|
description: ConfigMap containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key to select.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the ConfigMap or its key must
|
||||||
|
be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
secret:
|
||||||
|
description: Secret containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key of the secret to select from. Must
|
||||||
|
be a valid secret key.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the Secret or its key must
|
||||||
|
be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
caFile:
|
||||||
|
description: Path to the CA cert in the Prometheus container to
|
||||||
|
use for the targets.
|
||||||
|
type: string
|
||||||
|
cert:
|
||||||
|
description: Struct containing the client cert file for the targets.
|
||||||
|
properties:
|
||||||
|
configMap:
|
||||||
|
description: ConfigMap containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key to select.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the ConfigMap or its key must
|
||||||
|
be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
secret:
|
||||||
|
description: Secret containing data to use for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key of the secret to select from. Must
|
||||||
|
be a valid secret key.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the Secret or its key must
|
||||||
|
be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
certFile:
|
||||||
|
description: Path to the client cert file in the Prometheus container
|
||||||
|
for the targets.
|
||||||
|
type: string
|
||||||
|
insecureSkipVerify:
|
||||||
|
description: Disable target certificate validation.
|
||||||
|
type: boolean
|
||||||
|
keyFile:
|
||||||
|
description: Path to the client key file in the Prometheus container
|
||||||
|
for the targets.
|
||||||
|
type: string
|
||||||
|
keySecret:
|
||||||
|
description: Secret containing the client key file for the targets.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key of the secret to select from. Must be
|
||||||
|
a valid secret key.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the Secret or its key must be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
|
serverName:
|
||||||
|
description: Used to verify the hostname for the targets.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
image:
|
image:
|
||||||
description: Thanos container image URL.
|
description: Thanos container image URL.
|
||||||
type: string
|
type: string
|
||||||
|
@ -2821,6 +2944,26 @@ spec:
|
||||||
priorityClassName:
|
priorityClassName:
|
||||||
description: Priority class assigned to the Pods
|
description: Priority class assigned to the Pods
|
||||||
type: string
|
type: string
|
||||||
|
queryConfig:
|
||||||
|
description: Define configuration for connecting to thanos query instances.
|
||||||
|
If this is defined, the QueryEndpoints field will be ignored. Maps
|
||||||
|
to the `query.config` CLI argument. Only available with thanos v0.11.0
|
||||||
|
and higher.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: The key of the secret to select from. Must be a valid
|
||||||
|
secret key.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?'
|
||||||
|
type: string
|
||||||
|
optional:
|
||||||
|
description: Specify whether the Secret or its key must be defined
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
type: object
|
||||||
queryEndpoints:
|
queryEndpoints:
|
||||||
description: QueryEndpoints defines Thanos querier endpoints from which
|
description: QueryEndpoints defines Thanos querier endpoints from which
|
||||||
to query metrics. Maps to the --query flag of thanos ruler.
|
to query metrics. Maps to the --query flag of thanos ruler.
|
||||||
|
@ -4528,8 +4671,6 @@ spec:
|
||||||
- name
|
- name
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
required:
|
|
||||||
- queryEndpoints
|
|
||||||
type: object
|
type: object
|
||||||
status:
|
status:
|
||||||
description: 'Most recent observed status of the ThanosRuler cluster. Read-only.
|
description: 'Most recent observed status of the ThanosRuler cluster. Read-only.
|
||||||
|
|
|
@ -4,7 +4,7 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/version: v0.37.0
|
app.kubernetes.io/version: v0.38.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
|
@ -87,3 +87,15 @@ rules:
|
||||||
- get
|
- get
|
||||||
- list
|
- list
|
||||||
- watch
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- authentication.k8s.io
|
||||||
|
resources:
|
||||||
|
- tokenreviews
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- apiGroups:
|
||||||
|
- authorization.k8s.io
|
||||||
|
resources:
|
||||||
|
- subjectaccessreviews
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
|
|
@ -4,7 +4,7 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/version: v0.37.0
|
app.kubernetes.io/version: v0.38.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
|
|
@ -4,7 +4,7 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/version: v0.37.0
|
app.kubernetes.io/version: v0.38.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
|
@ -18,15 +18,15 @@ spec:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/version: v0.37.0
|
app.kubernetes.io/version: v0.38.0
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- args:
|
- args:
|
||||||
- --kubelet-service=kube-system/kubelet
|
- --kubelet-service=kube-system/kubelet
|
||||||
- --logtostderr=true
|
- --logtostderr=true
|
||||||
- --config-reloader-image=jimmidyson/configmap-reload:v0.3.0
|
- --config-reloader-image=jimmidyson/configmap-reload:v0.3.0
|
||||||
- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.37.0
|
- --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.38.0
|
||||||
image: quay.io/coreos/prometheus-operator:v0.37.0
|
image: quay.io/coreos/prometheus-operator:v0.38.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8080
|
- containerPort: 8080
|
||||||
|
@ -40,6 +40,18 @@ spec:
|
||||||
memory: 100Mi
|
memory: 100Mi
|
||||||
securityContext:
|
securityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
|
- args:
|
||||||
|
- --logtostderr
|
||||||
|
- --secure-listen-address=:8443
|
||||||
|
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
|
||||||
|
- --upstream=http://127.0.0.1:8080/
|
||||||
|
image: quay.io/coreos/kube-rbac-proxy:v0.4.1
|
||||||
|
name: kube-rbac-proxy
|
||||||
|
ports:
|
||||||
|
- containerPort: 8443
|
||||||
|
name: https
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 65534
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
beta.kubernetes.io/os: linux
|
beta.kubernetes.io/os: linux
|
||||||
securityContext:
|
securityContext:
|
||||||
|
|
|
@ -4,15 +4,15 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/version: v0.37.0
|
app.kubernetes.io/version: v0.38.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
clusterIP: None
|
clusterIP: None
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: https
|
||||||
port: 8080
|
port: 8443
|
||||||
targetPort: http
|
targetPort: https
|
||||||
selector:
|
selector:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
|
|
|
@ -4,6 +4,6 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
app.kubernetes.io/name: prometheus-operator
|
app.kubernetes.io/name: prometheus-operator
|
||||||
app.kubernetes.io/version: v0.37.0
|
app.kubernetes.io/version: v0.38.0
|
||||||
name: prometheus-operator
|
name: prometheus-operator
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
|
|
39
monitoring/vendor/grafonnet/dashlist.libsonnet
vendored
Normal file
39
monitoring/vendor/grafonnet/dashlist.libsonnet
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns a new dashlist panel that can be added in a row.
|
||||||
|
* It requires the dashlist panel plugin in grafana, which is built-in.
|
||||||
|
*
|
||||||
|
* @param title The title of the dashlist panel.
|
||||||
|
* @param description Description of the panel
|
||||||
|
* @param query Query to search by
|
||||||
|
* @param tags Tag(s) to search by
|
||||||
|
* @param recent Displays recently viewed dashboards
|
||||||
|
* @param search Description of the panel
|
||||||
|
* @param starred Displays starred dashboards
|
||||||
|
* @param headings Chosen list selection(starred, recently Viewed, search) is shown as a heading
|
||||||
|
* @param limit Set maximum items in a list
|
||||||
|
* @return A json that represents a dashlist panel
|
||||||
|
*/
|
||||||
|
new(
|
||||||
|
title,
|
||||||
|
description=null,
|
||||||
|
query=null,
|
||||||
|
tags=[],
|
||||||
|
recent=true,
|
||||||
|
search=false,
|
||||||
|
starred=false,
|
||||||
|
headings=true,
|
||||||
|
limit=10,
|
||||||
|
):: {
|
||||||
|
type: 'dashlist',
|
||||||
|
title: title,
|
||||||
|
query: if query != null then query else '',
|
||||||
|
tags: tags,
|
||||||
|
recent: recent,
|
||||||
|
search: search,
|
||||||
|
starred: starred,
|
||||||
|
headings: headings,
|
||||||
|
limit: limit,
|
||||||
|
[if description != null then 'description']: description,
|
||||||
|
},
|
||||||
|
}
|
|
@ -7,16 +7,20 @@
|
||||||
link:: import 'link.libsonnet',
|
link:: import 'link.libsonnet',
|
||||||
annotation:: import 'annotation.libsonnet',
|
annotation:: import 'annotation.libsonnet',
|
||||||
graphPanel:: import 'graph_panel.libsonnet',
|
graphPanel:: import 'graph_panel.libsonnet',
|
||||||
|
logPanel:: import 'log_panel.libsonnet',
|
||||||
tablePanel:: import 'table_panel.libsonnet',
|
tablePanel:: import 'table_panel.libsonnet',
|
||||||
singlestat:: import 'singlestat.libsonnet',
|
singlestat:: import 'singlestat.libsonnet',
|
||||||
pieChartPanel:: import 'pie_chart_panel.libsonnet',
|
pieChartPanel:: import 'pie_chart_panel.libsonnet',
|
||||||
influxdb:: import 'influxdb.libsonnet',
|
influxdb:: import 'influxdb.libsonnet',
|
||||||
prometheus:: import 'prometheus.libsonnet',
|
prometheus:: import 'prometheus.libsonnet',
|
||||||
|
loki:: import 'loki.libsonnet',
|
||||||
sql:: import 'sql.libsonnet',
|
sql:: import 'sql.libsonnet',
|
||||||
graphite:: import 'graphite.libsonnet',
|
graphite:: import 'graphite.libsonnet',
|
||||||
alertCondition:: import 'alert_condition.libsonnet',
|
alertCondition:: import 'alert_condition.libsonnet',
|
||||||
cloudwatch:: import 'cloudwatch.libsonnet',
|
cloudwatch:: import 'cloudwatch.libsonnet',
|
||||||
elasticsearch:: import 'elasticsearch.libsonnet',
|
elasticsearch:: import 'elasticsearch.libsonnet',
|
||||||
heatmapPanel:: import 'heatmap_panel.libsonnet',
|
heatmapPanel:: import 'heatmap_panel.libsonnet',
|
||||||
|
dashlist:: import 'dashlist.libsonnet',
|
||||||
|
pluginlist:: import 'pluginlist.libsonnet',
|
||||||
gauge:: import 'gauge.libsonnet',
|
gauge:: import 'gauge.libsonnet',
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,6 +98,7 @@
|
||||||
legend_sortDesc=null,
|
legend_sortDesc=null,
|
||||||
aliasColors={},
|
aliasColors={},
|
||||||
thresholds=[],
|
thresholds=[],
|
||||||
|
links=[],
|
||||||
logBase1Y=1,
|
logBase1Y=1,
|
||||||
logBase2Y=1,
|
logBase2Y=1,
|
||||||
transparent=false,
|
transparent=false,
|
||||||
|
@ -172,7 +173,7 @@
|
||||||
[if repeatDirection != null then 'repeatDirection']: repeatDirection,
|
[if repeatDirection != null then 'repeatDirection']: repeatDirection,
|
||||||
seriesOverrides: [],
|
seriesOverrides: [],
|
||||||
thresholds: thresholds,
|
thresholds: thresholds,
|
||||||
links: [],
|
links: links,
|
||||||
yaxe(
|
yaxe(
|
||||||
format='short',
|
format='short',
|
||||||
min=null,
|
min=null,
|
||||||
|
@ -246,5 +247,8 @@
|
||||||
},
|
},
|
||||||
addConditions(conditions):: std.foldl(function(p, c) p.addCondition(c), conditions, it),
|
addConditions(conditions):: std.foldl(function(p, c) p.addCondition(c), conditions, it),
|
||||||
},
|
},
|
||||||
|
addLink(link):: self {
|
||||||
|
links+: [link],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
52
monitoring/vendor/grafonnet/log_panel.libsonnet
vendored
Normal file
52
monitoring/vendor/grafonnet/log_panel.libsonnet
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns a new log panel that can be added in a row.
|
||||||
|
* It requires the log panel plugin in grafana, which is built-in.
|
||||||
|
*
|
||||||
|
* @param title The title of the log panel.
|
||||||
|
* @param span Width of the panel
|
||||||
|
* @param datasource Datasource
|
||||||
|
* @showLabels boolean to show or hide labels
|
||||||
|
* @showTime boolean to show or hide time for each line
|
||||||
|
* @wrapLogMessage true to wrap log line to the next line
|
||||||
|
* @sortOrder sort log by time (can be Descending or Ascending )
|
||||||
|
* @return A json that represents a log panel
|
||||||
|
*/
|
||||||
|
new(
|
||||||
|
title='',
|
||||||
|
datasource=null,
|
||||||
|
time_from=null,
|
||||||
|
time_shift=null,
|
||||||
|
showLabels=false,
|
||||||
|
showTime=true,
|
||||||
|
sortOrder='Descending',
|
||||||
|
wrapLogMessage=true,
|
||||||
|
span=12,
|
||||||
|
height=null,
|
||||||
|
):: {
|
||||||
|
[if height != null then 'height']: height,
|
||||||
|
span: span,
|
||||||
|
datasource: datasource,
|
||||||
|
options: {
|
||||||
|
showLabels: showLabels,
|
||||||
|
showTime: showTime,
|
||||||
|
sortOrder: sortOrder,
|
||||||
|
wrapLogMessage: wrapLogMessage,
|
||||||
|
},
|
||||||
|
targets: [
|
||||||
|
],
|
||||||
|
_nextTarget:: 0,
|
||||||
|
addTarget(target):: self {
|
||||||
|
// automatically ref id in added targets.
|
||||||
|
// https://github.com/kausalco/public/blob/master/klumps/grafana.libsonnet
|
||||||
|
local nextTarget = super._nextTarget,
|
||||||
|
_nextTarget: nextTarget + 1,
|
||||||
|
targets+: [target { refId: std.char(std.codepoint('A') + nextTarget) }],
|
||||||
|
},
|
||||||
|
addTargets(targets):: std.foldl(function(p, t) p.addTarget(t), targets, self),
|
||||||
|
timeFrom: time_from,
|
||||||
|
timeShift: time_shift,
|
||||||
|
title: title,
|
||||||
|
type: 'logs',
|
||||||
|
},
|
||||||
|
}
|
9
monitoring/vendor/grafonnet/loki.libsonnet
vendored
Normal file
9
monitoring/vendor/grafonnet/loki.libsonnet
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
target(
|
||||||
|
expr,
|
||||||
|
hide=null,
|
||||||
|
):: {
|
||||||
|
[if hide != null then 'hide']: hide,
|
||||||
|
expr: expr,
|
||||||
|
},
|
||||||
|
}
|
21
monitoring/vendor/grafonnet/pluginlist.libsonnet
vendored
Normal file
21
monitoring/vendor/grafonnet/pluginlist.libsonnet
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Returns a new pluginlist panel that can be added in a row.
|
||||||
|
* It requires the pluginlist panel plugin in grafana, which is built-in.
|
||||||
|
*
|
||||||
|
* @param title The title of the pluginlist panel.
|
||||||
|
* @param description Description of the panel
|
||||||
|
* @param limit Set maximum items in a list
|
||||||
|
* @return A json that represents a pluginlist panel
|
||||||
|
*/
|
||||||
|
new(
|
||||||
|
title,
|
||||||
|
description=null,
|
||||||
|
limit=null,
|
||||||
|
):: {
|
||||||
|
type: 'pluginlist',
|
||||||
|
title: title,
|
||||||
|
[if limit != null then 'limit']: limit,
|
||||||
|
[if description != null then 'description']: description,
|
||||||
|
},
|
||||||
|
}
|
17
monitoring/vendor/grafonnet/template.libsonnet
vendored
17
monitoring/vendor/grafonnet/template.libsonnet
vendored
|
@ -45,7 +45,7 @@
|
||||||
)::
|
)::
|
||||||
{
|
{
|
||||||
current: $.current(current),
|
current: $.current(current),
|
||||||
hide: if hide == '' then 0 else if hide == 'label' then 1 else 2,
|
hide: $.hide(hide),
|
||||||
label: label,
|
label: label,
|
||||||
name: name,
|
name: name,
|
||||||
query: std.join(',', std.filter($.filterAuto, std.split(query, ','))),
|
query: std.join(',', std.filter($.filterAuto, std.split(query, ','))),
|
||||||
|
@ -131,4 +131,19 @@
|
||||||
query: query,
|
query: query,
|
||||||
type: 'custom',
|
type: 'custom',
|
||||||
},
|
},
|
||||||
|
text(
|
||||||
|
name,
|
||||||
|
label=''
|
||||||
|
)::
|
||||||
|
{
|
||||||
|
current: {
|
||||||
|
selected: false,
|
||||||
|
text: '',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
name: name,
|
||||||
|
label: label,
|
||||||
|
query: '',
|
||||||
|
type: 'textbox',
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +1,6 @@
|
||||||
{
|
{
|
||||||
prometheusAlerts+:: {
|
prometheusAlerts+:: {
|
||||||
groups+: [
|
groups+: [
|
||||||
{
|
|
||||||
name: 'node-time',
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
alert: 'ClockSkewDetected',
|
|
||||||
annotations: {
|
|
||||||
message: 'Clock skew detected on node-exporter {{ $labels.namespace }}/{{ $labels.pod }}. Ensure NTP is configured correctly on this host.',
|
|
||||||
},
|
|
||||||
expr: |||
|
|
||||||
abs(node_timex_offset_seconds{%(nodeExporterSelector)s}) > 0.05
|
|
||||||
||| % $._config,
|
|
||||||
'for': '2m',
|
|
||||||
labels: {
|
|
||||||
severity: 'warning',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'node-network',
|
name: 'node-network',
|
||||||
rules: [
|
rules: [
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
"subdir": "jsonnet/prometheus-operator"
|
"subdir": "jsonnet/prometheus-operator"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "release-0.37"
|
"version": "release-0.38"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "etcd-mixin",
|
"name": "etcd-mixin",
|
||||||
|
|
|
@ -5,7 +5,7 @@ local servicePort = k.core.v1.service.mixin.spec.portsType;
|
||||||
{
|
{
|
||||||
prometheus+: {
|
prometheus+: {
|
||||||
serviceWeaveNet:
|
serviceWeaveNet:
|
||||||
service.new('weave-net', { 'k8s-app': 'weave-net' }, servicePort.newNamed('weave-net-metrics', 6782, 6782)) +
|
service.new('weave-net', { 'name': 'weave-net' }, servicePort.newNamed('weave-net-metrics', 6782, 6782)) +
|
||||||
service.mixin.metadata.withNamespace('kube-system') +
|
service.mixin.metadata.withNamespace('kube-system') +
|
||||||
service.mixin.metadata.withLabels({ 'k8s-app': 'weave-net' }) +
|
service.mixin.metadata.withLabels({ 'k8s-app': 'weave-net' }) +
|
||||||
service.mixin.spec.withClusterIp('None'),
|
service.mixin.spec.withClusterIp('None'),
|
||||||
|
@ -23,7 +23,7 @@ local servicePort = k.core.v1.service.mixin.spec.portsType;
|
||||||
jobLabel: 'k8s-app',
|
jobLabel: 'k8s-app',
|
||||||
endpoints: [
|
endpoints: [
|
||||||
{
|
{
|
||||||
port: 'weave-metrics',
|
port: 'weave-net-metrics',
|
||||||
path: '/metrics',
|
path: '/metrics',
|
||||||
interval: '15s',
|
interval: '15s',
|
||||||
},
|
},
|
||||||
|
|
|
@ -50,7 +50,62 @@ local configMapList = k3.core.v1.configMapList;
|
||||||
preserveUnknownFields: null,
|
preserveUnknownFields: null,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
},
|
service+: {
|
||||||
|
spec+: {
|
||||||
|
ports: [
|
||||||
|
{
|
||||||
|
name: 'https',
|
||||||
|
port: 8443,
|
||||||
|
targetPort: 'https',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
serviceMonitor+: {
|
||||||
|
spec+: {
|
||||||
|
endpoints: [
|
||||||
|
{
|
||||||
|
port: 'https',
|
||||||
|
scheme: 'https',
|
||||||
|
honorLabels: true,
|
||||||
|
bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',
|
||||||
|
tlsConfig: {
|
||||||
|
insecureSkipVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
clusterRole+: {
|
||||||
|
rules+: [
|
||||||
|
{
|
||||||
|
apiGroups: ['authentication.k8s.io'],
|
||||||
|
resources: ['tokenreviews'],
|
||||||
|
verbs: ['create'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
apiGroups: ['authorization.k8s.io'],
|
||||||
|
resources: ['subjectaccessreviews'],
|
||||||
|
verbs: ['create'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
} +
|
||||||
|
((import 'kube-prometheus/kube-rbac-proxy/container.libsonnet') {
|
||||||
|
config+:: {
|
||||||
|
kubeRbacProxy: {
|
||||||
|
local cfg = self,
|
||||||
|
image: $._config.imageRepos.kubeRbacProxy + ':' + $._config.versions.kubeRbacProxy,
|
||||||
|
name: 'kube-rbac-proxy',
|
||||||
|
securePortName: 'https',
|
||||||
|
securePort: 8443,
|
||||||
|
secureListenAddress: ':%d' % self.securePort,
|
||||||
|
upstream: 'http://127.0.0.1:8080/',
|
||||||
|
tlsCipherSuites: $._config.tlsCipherSuites,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}).deploymentMixin,
|
||||||
|
|
||||||
grafana+:: {
|
grafana+:: {
|
||||||
dashboardDefinitions: configMapList.new(super.dashboardDefinitions),
|
dashboardDefinitions: configMapList.new(super.dashboardDefinitions),
|
||||||
serviceMonitor: {
|
serviceMonitor: {
|
||||||
|
|
|
@ -35,6 +35,7 @@ local containerPort = container.portsType;
|
||||||
spec+: {
|
spec+: {
|
||||||
containers+: [
|
containers+: [
|
||||||
container.new(krp.config.kubeRbacProxy.name, krp.config.kubeRbacProxy.image) +
|
container.new(krp.config.kubeRbacProxy.name, krp.config.kubeRbacProxy.image) +
|
||||||
|
container.mixin.securityContext.withRunAsUser(65534) +
|
||||||
container.withArgs([
|
container.withArgs([
|
||||||
'--logtostderr',
|
'--logtostderr',
|
||||||
'--secure-listen-address=' + krp.config.kubeRbacProxy.secureListenAddress,
|
'--secure-listen-address=' + krp.config.kubeRbacProxy.secureListenAddress,
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
{
|
{
|
||||||
_config+:: {
|
_config+:: {
|
||||||
|
versions+:: {
|
||||||
|
kubeStateMetrics: '1.9.5',
|
||||||
|
},
|
||||||
|
imageRepos+:: {
|
||||||
|
kubeStateMetrics: 'quay.io/coreos/kube-state-metrics',
|
||||||
|
},
|
||||||
kubeStateMetrics+:: {
|
kubeStateMetrics+:: {
|
||||||
scrapeInterval: '30s',
|
scrapeInterval: '30s',
|
||||||
scrapeTimeout: '30s',
|
scrapeTimeout: '30s',
|
||||||
|
@ -9,9 +15,9 @@
|
||||||
{
|
{
|
||||||
local ksm = self,
|
local ksm = self,
|
||||||
name:: 'kube-state-metrics',
|
name:: 'kube-state-metrics',
|
||||||
namespace:: 'monitoring',
|
namespace:: $._config.namespace,
|
||||||
version:: '1.9.5', //$._config.versions.kubeStateMetrics,
|
version:: $._config.versions.kubeStateMetrics,
|
||||||
image:: 'quay.io/coreos/kube-state-metrics:v' + ksm.version,
|
image:: $._config.imageRepos.kubeStateMetrics + ':v' + $._config.versions.kubeStateMetrics,
|
||||||
service+: {
|
service+: {
|
||||||
spec+: {
|
spec+: {
|
||||||
ports: [
|
ports: [
|
||||||
|
|
|
@ -16,6 +16,10 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
||||||
|
|
||||||
nodeExporter+:: {
|
nodeExporter+:: {
|
||||||
port: 9100,
|
port: 9100,
|
||||||
|
labels: {
|
||||||
|
'app.kubernetes.io/name': 'node-exporter',
|
||||||
|
'app.kubernetes.io/version': $._config.versions.nodeExporter,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -64,7 +68,7 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
||||||
local toleration = daemonset.mixin.spec.template.spec.tolerationsType;
|
local toleration = daemonset.mixin.spec.template.spec.tolerationsType;
|
||||||
local containerEnv = container.envType;
|
local containerEnv = container.envType;
|
||||||
|
|
||||||
local podLabels = { app: 'node-exporter' };
|
local podLabels = $._config.nodeExporter.labels;
|
||||||
|
|
||||||
local existsToleration = toleration.new() +
|
local existsToleration = toleration.new() +
|
||||||
toleration.withOperator('Exists');
|
toleration.withOperator('Exists');
|
||||||
|
@ -154,16 +158,12 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
||||||
metadata: {
|
metadata: {
|
||||||
name: 'node-exporter',
|
name: 'node-exporter',
|
||||||
namespace: $._config.namespace,
|
namespace: $._config.namespace,
|
||||||
labels: {
|
labels: $._config.nodeExporter.labels,
|
||||||
'k8s-app': 'node-exporter',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
spec: {
|
spec: {
|
||||||
jobLabel: 'k8s-app',
|
jobLabel: 'app.kubernetes.io/name',
|
||||||
selector: {
|
selector: {
|
||||||
matchLabels: {
|
matchLabels: $._config.nodeExporter.labels,
|
||||||
'k8s-app': 'node-exporter',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
endpoints: [
|
endpoints: [
|
||||||
{
|
{
|
||||||
|
@ -196,7 +196,7 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
||||||
|
|
||||||
service.new('node-exporter', $.nodeExporter.daemonset.spec.selector.matchLabels, nodeExporterPort) +
|
service.new('node-exporter', $.nodeExporter.daemonset.spec.selector.matchLabels, nodeExporterPort) +
|
||||||
service.mixin.metadata.withNamespace($._config.namespace) +
|
service.mixin.metadata.withNamespace($._config.namespace) +
|
||||||
service.mixin.metadata.withLabels({ 'k8s-app': 'node-exporter' }) +
|
service.mixin.metadata.withLabels($._config.nodeExporter.labels) +
|
||||||
service.mixin.spec.withClusterIp('None'),
|
service.mixin.spec.withClusterIp('None'),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,8 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
||||||
config: |||
|
config: |||
|
||||||
resourceRules:
|
resourceRules:
|
||||||
cpu:
|
cpu:
|
||||||
containerQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!="POD",container!="",pod!=""}[5m])) by (<<.GroupBy>>)
|
containerQuery: sum(irate(container_cpu_usage_seconds_total{<<.LabelMatchers>>,container!="POD",container!="",pod!=""}[5m])) by (<<.GroupBy>>)
|
||||||
nodeQuery: sum(1 - rate(node_cpu_seconds_total{mode="idle"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>)
|
nodeQuery: sum(1 - irate(node_cpu_seconds_total{mode="idle"}[5m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{<<.LabelMatchers>>}) by (<<.GroupBy>>)
|
||||||
resources:
|
resources:
|
||||||
overrides:
|
overrides:
|
||||||
node:
|
node:
|
||||||
|
|
2
monitoring/vendor/kubernetes-mixin/OWNERS
vendored
2
monitoring/vendor/kubernetes-mixin/OWNERS
vendored
|
@ -5,9 +5,11 @@ approvers:
|
||||||
- csmarchbanks
|
- csmarchbanks
|
||||||
- metalmatze
|
- metalmatze
|
||||||
- tomwilkie
|
- tomwilkie
|
||||||
|
- s-urbaniak
|
||||||
|
|
||||||
reviewers:
|
reviewers:
|
||||||
- brancz
|
- brancz
|
||||||
- csmarchbanks
|
- csmarchbanks
|
||||||
- metalmatze
|
- metalmatze
|
||||||
- tomwilkie
|
- tomwilkie
|
||||||
|
- s-urbaniak
|
||||||
|
|
|
@ -15,7 +15,7 @@ local lower(x) =
|
||||||
|
|
||||||
prometheusAlerts+::
|
prometheusAlerts+::
|
||||||
local addRunbookURL(rule) = rule {
|
local addRunbookURL(rule) = rule {
|
||||||
[if 'alert' in rule then 'annotations']+: {
|
[if 'alert' in rule && !('runbook_url' in rule.annotations) then 'annotations']+: {
|
||||||
runbook_url: $._config.runbookURLPattern % lower(rule.alert),
|
runbook_url: $._config.runbookURLPattern % lower(rule.alert),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -37,8 +37,10 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
alert: 'KubeletTooManyPods',
|
alert: 'KubeletTooManyPods',
|
||||||
|
// Some node has a capacity of 1 like AWS's Fargate and only exists while a pod is running on it.
|
||||||
|
// We have to ignore this special node in the KubeletTooManyPods alert.
|
||||||
expr: |||
|
expr: |||
|
||||||
max(max(kubelet_running_pod_count{%(kubeletSelector)s}) by(instance) * on(instance) group_left(node) kubelet_node_name{%(kubeletSelector)s}) by(node) / max(kube_node_status_capacity_pods{%(kubeStateMetricsSelector)s}) by(node) > 0.95
|
max(max(kubelet_running_pod_count{%(kubeletSelector)s}) by(instance) * on(instance) group_left(node) kubelet_node_name{%(kubeletSelector)s}) by(node) / max(kube_node_status_capacity_pods{%(kubeStateMetricsSelector)s} != 1) by(node) > 0.95
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
'for': '15m',
|
'for': '15m',
|
||||||
labels: {
|
labels: {
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
'for': '5m',
|
'for': '5m',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
alert: 'KubeMemOvercommit',
|
alert: 'KubeMemoryOvercommit',
|
||||||
expr: |||
|
expr: |||
|
||||||
sum(namespace:kube_pod_container_resource_requests_memory_bytes:sum{%(ignoringOverprovisionedWorkloadSelector)s})
|
sum(namespace:kube_pod_container_resource_requests_memory_bytes:sum{%(ignoringOverprovisionedWorkloadSelector)s})
|
||||||
/
|
/
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
'for': '5m',
|
'for': '5m',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
alert: 'KubeCPUOvercommit',
|
alert: 'KubeCPUQuotaOvercommit',
|
||||||
expr: |||
|
expr: |||
|
||||||
sum(kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource="cpu"})
|
sum(kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource="cpu"})
|
||||||
/
|
/
|
||||||
|
@ -75,7 +75,7 @@
|
||||||
'for': '5m',
|
'for': '5m',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
alert: 'KubeMemOvercommit',
|
alert: 'KubeMemoryQuotaOvercommit',
|
||||||
expr: |||
|
expr: |||
|
||||||
sum(kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource="memory"})
|
sum(kube_resourcequota{%(prefixedNamespaceSelector)s%(kubeStateMetricsSelector)s, type="hard", resource="memory"})
|
||||||
/
|
/
|
||||||
|
|
|
@ -7,9 +7,6 @@ local graphPanel = grafana.graphPanel;
|
||||||
local tablePanel = grafana.tablePanel;
|
local tablePanel = grafana.tablePanel;
|
||||||
local annotation = grafana.annotation;
|
local annotation = grafana.annotation;
|
||||||
local singlestat = grafana.singlestat;
|
local singlestat = grafana.singlestat;
|
||||||
local promgrafonnet = import '../lib/promgrafonnet/promgrafonnet.libsonnet';
|
|
||||||
local numbersinglestat = promgrafonnet.numbersinglestat;
|
|
||||||
local gauge = promgrafonnet.gauge;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
|
|
|
@ -7,9 +7,6 @@ local graphPanel = grafana.graphPanel;
|
||||||
local tablePanel = grafana.tablePanel;
|
local tablePanel = grafana.tablePanel;
|
||||||
local annotation = grafana.annotation;
|
local annotation = grafana.annotation;
|
||||||
local singlestat = grafana.singlestat;
|
local singlestat = grafana.singlestat;
|
||||||
local promgrafonnet = import '../lib/promgrafonnet/promgrafonnet.libsonnet';
|
|
||||||
local numbersinglestat = promgrafonnet.numbersinglestat;
|
|
||||||
local gauge = promgrafonnet.gauge;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
|
|
|
@ -7,9 +7,6 @@ local graphPanel = grafana.graphPanel;
|
||||||
local tablePanel = grafana.tablePanel;
|
local tablePanel = grafana.tablePanel;
|
||||||
local annotation = grafana.annotation;
|
local annotation = grafana.annotation;
|
||||||
local singlestat = grafana.singlestat;
|
local singlestat = grafana.singlestat;
|
||||||
local promgrafonnet = import '../lib/promgrafonnet/promgrafonnet.libsonnet';
|
|
||||||
local numbersinglestat = promgrafonnet.numbersinglestat;
|
|
||||||
local gauge = promgrafonnet.gauge;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
|
|
|
@ -6,9 +6,6 @@ local template = grafana.template;
|
||||||
local graphPanel = grafana.graphPanel;
|
local graphPanel = grafana.graphPanel;
|
||||||
local annotation = grafana.annotation;
|
local annotation = grafana.annotation;
|
||||||
local singlestat = grafana.singlestat;
|
local singlestat = grafana.singlestat;
|
||||||
local promgrafonnet = import '../lib/promgrafonnet/promgrafonnet.libsonnet';
|
|
||||||
local numbersinglestat = promgrafonnet.numbersinglestat;
|
|
||||||
local gauge = promgrafonnet.gauge;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
|
|
|
@ -6,9 +6,6 @@ local template = grafana.template;
|
||||||
local graphPanel = grafana.graphPanel;
|
local graphPanel = grafana.graphPanel;
|
||||||
local annotation = grafana.annotation;
|
local annotation = grafana.annotation;
|
||||||
local singlestat = grafana.singlestat;
|
local singlestat = grafana.singlestat;
|
||||||
local promgrafonnet = import '../lib/promgrafonnet/promgrafonnet.libsonnet';
|
|
||||||
local numbersinglestat = promgrafonnet.numbersinglestat;
|
|
||||||
local gauge = promgrafonnet.gauge;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
|
|
|
@ -4,31 +4,6 @@ local template = grafana.template;
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
local intervalTemplate =
|
|
||||||
template.new(
|
|
||||||
name='interval',
|
|
||||||
datasource='$datasource',
|
|
||||||
query='$__interval',
|
|
||||||
current='5m',
|
|
||||||
hide=2,
|
|
||||||
refresh=2,
|
|
||||||
includeAll=false,
|
|
||||||
sort=1
|
|
||||||
) + {
|
|
||||||
auto: false,
|
|
||||||
auto_count: 30,
|
|
||||||
auto_min: '10s',
|
|
||||||
skipUrlSync: false,
|
|
||||||
type: 'interval',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
selected: true,
|
|
||||||
text: '$__interval',
|
|
||||||
value: '$__interval',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
local clusterTemplate =
|
local clusterTemplate =
|
||||||
template.new(
|
template.new(
|
||||||
name='cluster',
|
name='cluster',
|
||||||
|
@ -69,12 +44,12 @@ local template = grafana.template;
|
||||||
];
|
];
|
||||||
|
|
||||||
local networkColumns = [
|
local networkColumns = [
|
||||||
'sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config,
|
'sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config,
|
||||||
'sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config,
|
'sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config,
|
||||||
'sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config,
|
'sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config,
|
||||||
'sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config,
|
'sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config,
|
||||||
'sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config,
|
'sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config,
|
||||||
'sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config,
|
'sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config,
|
||||||
];
|
];
|
||||||
|
|
||||||
local networkTableStyles = {
|
local networkTableStyles = {
|
||||||
|
@ -121,7 +96,7 @@ local template = grafana.template;
|
||||||
})
|
})
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('CPU Utilisation') +
|
g.panel('CPU Utilisation') +
|
||||||
g.statPanel('1 - avg(rate(node_cpu_seconds_total{mode="idle", %(clusterLabel)s="$cluster"}[$interval]))' % $._config)
|
g.statPanel('1 - avg(rate(node_cpu_seconds_total{mode="idle", %(clusterLabel)s="$cluster"}[$__interval]))' % $._config)
|
||||||
)
|
)
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('CPU Requests Commitment') +
|
g.panel('CPU Requests Commitment') +
|
||||||
|
@ -215,7 +190,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Receive Bandwidth') +
|
g.panel('Receive Bandwidth') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config, '{{namespace}}') +
|
g.queryPanel('sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config, '{{namespace}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -224,7 +199,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Transmit Bandwidth') +
|
g.panel('Transmit Bandwidth') +
|
||||||
g.queryPanel('sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config, '{{namespace}}') +
|
g.queryPanel('sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config, '{{namespace}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -233,7 +208,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Average Container Bandwidth by Namespace: Received') +
|
g.panel('Average Container Bandwidth by Namespace: Received') +
|
||||||
g.queryPanel('avg(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config, '{{namespace}}') +
|
g.queryPanel('avg(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config, '{{namespace}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -242,7 +217,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Average Container Bandwidth by Namespace: Transmitted') +
|
g.panel('Average Container Bandwidth by Namespace: Transmitted') +
|
||||||
g.queryPanel('avg(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config, '{{namespace}}') +
|
g.queryPanel('avg(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config, '{{namespace}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -251,7 +226,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets') +
|
g.panel('Rate of Received Packets') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config, '{{namespace}}') +
|
g.queryPanel('sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config, '{{namespace}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -260,7 +235,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets') +
|
g.panel('Rate of Transmitted Packets') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config, '{{namespace}}') +
|
g.queryPanel('sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config, '{{namespace}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -269,7 +244,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets Dropped') +
|
g.panel('Rate of Received Packets Dropped') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config, '{{namespace}}') +
|
g.queryPanel('sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config, '{{namespace}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -278,13 +253,13 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets Dropped') +
|
g.panel('Rate of Transmitted Packets Dropped') +
|
||||||
g.queryPanel('sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$interval])) by (namespace)' % $._config, '{{namespace}}') +
|
g.queryPanel('sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~".+"}[$__interval])) by (namespace)' % $._config, '{{namespace}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
) + {
|
) + {
|
||||||
tags: $._config.grafanaK8s.dashboardTags,
|
tags: $._config.grafanaK8s.dashboardTags,
|
||||||
templating+: { list+: [intervalTemplate, clusterTemplate] },
|
templating+: { list+: [clusterTemplate] },
|
||||||
refresh: $._config.grafanaK8s.refresh,
|
refresh: $._config.grafanaK8s.refresh,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -4,31 +4,6 @@ local template = grafana.template;
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
local intervalTemplate =
|
|
||||||
template.new(
|
|
||||||
name='interval',
|
|
||||||
datasource='$datasource',
|
|
||||||
query='$__interval',
|
|
||||||
current='5m',
|
|
||||||
hide=2,
|
|
||||||
refresh=2,
|
|
||||||
includeAll=false,
|
|
||||||
sort=1
|
|
||||||
) + {
|
|
||||||
auto: false,
|
|
||||||
auto_count: 30,
|
|
||||||
auto_min: '10s',
|
|
||||||
skipUrlSync: false,
|
|
||||||
type: 'interval',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
selected: true,
|
|
||||||
text: '$__interval',
|
|
||||||
value: '$__interval',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
local clusterTemplate =
|
local clusterTemplate =
|
||||||
template.new(
|
template.new(
|
||||||
name='cluster',
|
name='cluster',
|
||||||
|
@ -61,12 +36,12 @@ local template = grafana.template;
|
||||||
};
|
};
|
||||||
|
|
||||||
local networkColumns = [
|
local networkColumns = [
|
||||||
'sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config,
|
'sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config,
|
||||||
'sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config,
|
'sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config,
|
||||||
'sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config,
|
'sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config,
|
||||||
'sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config,
|
'sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config,
|
||||||
'sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config,
|
'sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config,
|
||||||
'sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config,
|
'sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config,
|
||||||
];
|
];
|
||||||
|
|
||||||
local networkTableStyles = {
|
local networkTableStyles = {
|
||||||
|
@ -268,7 +243,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Receive Bandwidth') +
|
g.panel('Receive Bandwidth') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config, '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config, '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -277,7 +252,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Transmit Bandwidth') +
|
g.panel('Transmit Bandwidth') +
|
||||||
g.queryPanel('sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config, '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config, '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -286,7 +261,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets') +
|
g.panel('Rate of Received Packets') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config, '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config, '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -295,7 +270,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets') +
|
g.panel('Rate of Transmitted Packets') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config, '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config, '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -304,7 +279,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets Dropped') +
|
g.panel('Rate of Received Packets Dropped') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config, '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config, '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -313,10 +288,10 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets Dropped') +
|
g.panel('Rate of Transmitted Packets Dropped') +
|
||||||
g.queryPanel('sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])) by (pod)' % $._config, '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])) by (pod)' % $._config, '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
) + { tags: $._config.grafanaK8s.dashboardTags, templating+: { list+: [intervalTemplate, clusterTemplate, namespaceTemplate] }, refresh: $._config.grafanaK8s.refresh },
|
) + { tags: $._config.grafanaK8s.dashboardTags, templating+: { list+: [clusterTemplate, namespaceTemplate] }, refresh: $._config.grafanaK8s.refresh },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,31 +4,6 @@ local template = grafana.template;
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
local intervalTemplate =
|
|
||||||
template.new(
|
|
||||||
name='interval',
|
|
||||||
datasource='$datasource',
|
|
||||||
query='$__interval',
|
|
||||||
current='5m',
|
|
||||||
hide=2,
|
|
||||||
refresh=2,
|
|
||||||
includeAll=false,
|
|
||||||
sort=1
|
|
||||||
) + {
|
|
||||||
auto: false,
|
|
||||||
auto_count: 30,
|
|
||||||
auto_min: '10s',
|
|
||||||
skipUrlSync: false,
|
|
||||||
type: 'interval',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
selected: true,
|
|
||||||
text: '$__interval',
|
|
||||||
value: '$__interval',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
local clusterTemplate =
|
local clusterTemplate =
|
||||||
template.new(
|
template.new(
|
||||||
name='cluster',
|
name='cluster',
|
||||||
|
@ -125,6 +100,6 @@ local template = grafana.template;
|
||||||
'Value #H': { alias: 'Memory Usage (Swap)', unit: 'bytes' },
|
'Value #H': { alias: 'Memory Usage (Swap)', unit: 'bytes' },
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
) + { tags: $._config.grafanaK8s.dashboardTags, refresh: $._config.grafanaK8s.refresh, templating+: { list+: [intervalTemplate, clusterTemplate, nodeTemplate] } },
|
) + { tags: $._config.grafanaK8s.dashboardTags, refresh: $._config.grafanaK8s.refresh, templating+: { list+: [clusterTemplate, nodeTemplate] } },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,31 +4,6 @@ local template = grafana.template;
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
local intervalTemplate =
|
|
||||||
template.new(
|
|
||||||
name='interval',
|
|
||||||
datasource='$datasource',
|
|
||||||
query='$__interval',
|
|
||||||
current='5m',
|
|
||||||
hide=2,
|
|
||||||
refresh=2,
|
|
||||||
includeAll=false,
|
|
||||||
sort=1
|
|
||||||
) + {
|
|
||||||
auto: false,
|
|
||||||
auto_count: 30,
|
|
||||||
auto_min: '10s',
|
|
||||||
skipUrlSync: false,
|
|
||||||
type: 'interval',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
selected: true,
|
|
||||||
text: '$__interval',
|
|
||||||
value: '$__interval',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
local clusterTemplate =
|
local clusterTemplate =
|
||||||
template.new(
|
template.new(
|
||||||
name='cluster',
|
name='cluster',
|
||||||
|
@ -238,7 +213,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Receive Bandwidth') +
|
g.panel('Receive Bandwidth') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_bytes_total{namespace=~"$namespace", pod=~"$pod"}[$interval])) by (pod)', '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_receive_bytes_total{namespace=~"$namespace", pod=~"$pod"}[$__interval])) by (pod)', '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -247,7 +222,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Transmit Bandwidth') +
|
g.panel('Transmit Bandwidth') +
|
||||||
g.queryPanel('sum(irate(container_network_transmit_bytes_total{namespace=~"$namespace", pod=~"$pod"}[$interval])) by (pod)', '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_transmit_bytes_total{namespace=~"$namespace", pod=~"$pod"}[$__interval])) by (pod)', '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -256,7 +231,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets') +
|
g.panel('Rate of Received Packets') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_packets_total{namespace=~"$namespace", pod=~"$pod"}[$interval])) by (pod)', '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_receive_packets_total{namespace=~"$namespace", pod=~"$pod"}[$__interval])) by (pod)', '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -265,7 +240,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets') +
|
g.panel('Rate of Transmitted Packets') +
|
||||||
g.queryPanel('sum(irate(container_network_transmit_packets_total{namespace=~"$namespace", pod=~"$pod"}[$interval])) by (pod)', '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_transmit_packets_total{namespace=~"$namespace", pod=~"$pod"}[$__interval])) by (pod)', '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -274,7 +249,7 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets Dropped') +
|
g.panel('Rate of Received Packets Dropped') +
|
||||||
g.queryPanel('sum(irate(container_network_receive_packets_dropped_total{namespace=~"$namespace", pod=~"$pod"}[$interval])) by (pod)', '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_receive_packets_dropped_total{namespace=~"$namespace", pod=~"$pod"}[$__interval])) by (pod)', '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
|
@ -283,10 +258,10 @@ local template = grafana.template;
|
||||||
g.row('Network')
|
g.row('Network')
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets Dropped') +
|
g.panel('Rate of Transmitted Packets Dropped') +
|
||||||
g.queryPanel('sum(irate(container_network_transmit_packets_dropped_total{namespace=~"$namespace", pod=~"$pod"}[$interval])) by (pod)', '{{pod}}') +
|
g.queryPanel('sum(irate(container_network_transmit_packets_dropped_total{namespace=~"$namespace", pod=~"$pod"}[$__interval])) by (pod)', '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
) + { tags: $._config.grafanaK8s.dashboardTags, templating+: { list+: [intervalTemplate, clusterTemplate, namespaceTemplate, podTemplate] }, refresh: $._config.grafanaK8s.refresh },
|
) + { tags: $._config.grafanaK8s.dashboardTags, templating+: { list+: [clusterTemplate, namespaceTemplate, podTemplate] }, refresh: $._config.grafanaK8s.refresh },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,31 +4,6 @@ local template = grafana.template;
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
local intervalTemplate =
|
|
||||||
template.new(
|
|
||||||
name='interval',
|
|
||||||
datasource='$datasource',
|
|
||||||
query='$__interval',
|
|
||||||
current='5m',
|
|
||||||
hide=2,
|
|
||||||
refresh=2,
|
|
||||||
includeAll=false,
|
|
||||||
sort=1
|
|
||||||
) + {
|
|
||||||
auto: false,
|
|
||||||
auto_count: 30,
|
|
||||||
auto_min: '10s',
|
|
||||||
skipUrlSync: false,
|
|
||||||
type: 'interval',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
selected: true,
|
|
||||||
text: '$__interval',
|
|
||||||
value: '$__interval',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
local typeTemplate =
|
local typeTemplate =
|
||||||
template.new(
|
template.new(
|
||||||
name='type',
|
name='type',
|
||||||
|
@ -84,32 +59,32 @@ local template = grafana.template;
|
||||||
|
|
||||||
local networkColumns = [
|
local networkColumns = [
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload_type="$type"}) by (workload))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|
@ -309,7 +284,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Receive Bandwidth') +
|
g.panel('Receive Bandwidth') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
||||||
||| % $._config, '{{workload}}') +
|
||| % $._config, '{{workload}}') +
|
||||||
|
@ -322,7 +297,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Transmit Bandwidth') +
|
g.panel('Transmit Bandwidth') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
||||||
||| % $._config, '{{workload}}') +
|
||| % $._config, '{{workload}}') +
|
||||||
|
@ -335,7 +310,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Average Container Bandwidth by Workload: Received') +
|
g.panel('Average Container Bandwidth by Workload: Received') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(avg(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(avg(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
||||||
||| % $._config, '{{workload}}') +
|
||| % $._config, '{{workload}}') +
|
||||||
|
@ -348,7 +323,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Average Container Bandwidth by Workload: Transmitted') +
|
g.panel('Average Container Bandwidth by Workload: Transmitted') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(avg(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(avg(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
||||||
||| % $._config, '{{workload}}') +
|
||| % $._config, '{{workload}}') +
|
||||||
|
@ -361,7 +336,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets') +
|
g.panel('Rate of Received Packets') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
||||||
||| % $._config, '{{workload}}') +
|
||| % $._config, '{{workload}}') +
|
||||||
|
@ -374,7 +349,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets') +
|
g.panel('Rate of Transmitted Packets') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
||||||
||| % $._config, '{{workload}}') +
|
||| % $._config, '{{workload}}') +
|
||||||
|
@ -387,7 +362,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets Dropped') +
|
g.panel('Rate of Received Packets Dropped') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
||||||
||| % $._config, '{{workload}}') +
|
||| % $._config, '{{workload}}') +
|
||||||
|
@ -400,14 +375,14 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets Dropped') +
|
g.panel('Rate of Transmitted Packets Dropped') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~".+", workload_type="$type"}) by (workload))
|
||||||
||| % $._config, '{{workload}}') +
|
||| % $._config, '{{workload}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
) + { tags: $._config.grafanaK8s.dashboardTags, templating+: { list+: [intervalTemplate, typeTemplate, clusterTemplate, namespaceTemplate] }, refresh: $._config.grafanaK8s.refresh },
|
) + { tags: $._config.grafanaK8s.dashboardTags, templating+: { list+: [typeTemplate, clusterTemplate, namespaceTemplate] }, refresh: $._config.grafanaK8s.refresh },
|
||||||
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,31 +4,6 @@ local template = grafana.template;
|
||||||
|
|
||||||
{
|
{
|
||||||
grafanaDashboards+:: {
|
grafanaDashboards+:: {
|
||||||
local intervalTemplate =
|
|
||||||
template.new(
|
|
||||||
name='interval',
|
|
||||||
datasource='$datasource',
|
|
||||||
query='$__interval',
|
|
||||||
current='5m',
|
|
||||||
hide=2,
|
|
||||||
refresh=2,
|
|
||||||
includeAll=false,
|
|
||||||
sort=1
|
|
||||||
) + {
|
|
||||||
auto: false,
|
|
||||||
auto_count: 30,
|
|
||||||
auto_min: '10s',
|
|
||||||
skipUrlSync: false,
|
|
||||||
type: 'interval',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
selected: true,
|
|
||||||
text: '$__interval',
|
|
||||||
value: '$__interval',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
local clusterTemplate =
|
local clusterTemplate =
|
||||||
template.new(
|
template.new(
|
||||||
name='cluster',
|
name='cluster',
|
||||||
|
@ -59,7 +34,7 @@ local template = grafana.template;
|
||||||
datasource='$datasource',
|
datasource='$datasource',
|
||||||
query='label_values(mixin_pod_workload{%(clusterLabel)s="$cluster", namespace="$namespace"}, workload)' % $._config.clusterLabel,
|
query='label_values(mixin_pod_workload{%(clusterLabel)s="$cluster", namespace="$namespace"}, workload)' % $._config.clusterLabel,
|
||||||
current='',
|
current='',
|
||||||
hide=if $._config.showMultiCluster then '' else '2',
|
hide='',
|
||||||
refresh=1,
|
refresh=1,
|
||||||
includeAll=false,
|
includeAll=false,
|
||||||
sort=1
|
sort=1
|
||||||
|
@ -86,32 +61,32 @@ local template = grafana.template;
|
||||||
|
|
||||||
local networkColumns = [
|
local networkColumns = [
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|||
|
|||
|
||||||
(sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config,
|
||| % $._config,
|
||||||
|
@ -251,7 +226,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Receive Bandwidth') +
|
g.panel('Receive Bandwidth') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config, '{{pod}}') +
|
||| % $._config, '{{pod}}') +
|
||||||
|
@ -264,7 +239,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Transmit Bandwidth') +
|
g.panel('Transmit Bandwidth') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config, '{{pod}}') +
|
||| % $._config, '{{pod}}') +
|
||||||
|
@ -277,7 +252,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Average Container Bandwidth by Pod: Received') +
|
g.panel('Average Container Bandwidth by Pod: Received') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(avg(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(avg(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config, '{{pod}}') +
|
||| % $._config, '{{pod}}') +
|
||||||
|
@ -290,7 +265,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Average Container Bandwidth by Pod: Transmitted') +
|
g.panel('Average Container Bandwidth by Pod: Transmitted') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(avg(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(avg(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config, '{{pod}}') +
|
||| % $._config, '{{pod}}') +
|
||||||
|
@ -303,7 +278,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets') +
|
g.panel('Rate of Received Packets') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config, '{{pod}}') +
|
||| % $._config, '{{pod}}') +
|
||||||
|
@ -316,7 +291,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets') +
|
g.panel('Rate of Transmitted Packets') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config, '{{pod}}') +
|
||| % $._config, '{{pod}}') +
|
||||||
|
@ -329,7 +304,7 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Received Packets Dropped') +
|
g.panel('Rate of Received Packets Dropped') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config, '{{pod}}') +
|
||| % $._config, '{{pod}}') +
|
||||||
|
@ -342,13 +317,13 @@ local template = grafana.template;
|
||||||
.addPanel(
|
.addPanel(
|
||||||
g.panel('Rate of Transmitted Packets Dropped') +
|
g.panel('Rate of Transmitted Packets Dropped') +
|
||||||
g.queryPanel(|||
|
g.queryPanel(|||
|
||||||
(sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$interval])
|
(sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster", namespace=~"$namespace"}[$__interval])
|
||||||
* on (namespace,pod)
|
* on (namespace,pod)
|
||||||
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
group_left(workload,workload_type) mixin_pod_workload{%(clusterLabel)s="$cluster", %(namespaceLabel)s=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
|
||||||
||| % $._config, '{{pod}}') +
|
||| % $._config, '{{pod}}') +
|
||||||
g.stack +
|
g.stack +
|
||||||
{ yaxes: g.yaxes('Bps') },
|
{ yaxes: g.yaxes('Bps') },
|
||||||
)
|
)
|
||||||
) + { tags: $._config.grafanaK8s.dashboardTags, templating+: { list+: [intervalTemplate, clusterTemplate, namespaceTemplate, workloadTemplate, workloadTypeTemplate] }, refresh: $._config.grafanaK8s.refresh },
|
) + { tags: $._config.grafanaK8s.dashboardTags, templating+: { list+: [clusterTemplate, namespaceTemplate, workloadTemplate, workloadTypeTemplate] }, refresh: $._config.grafanaK8s.refresh },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,4 +157,4 @@ local numbersinglestat = promgrafonnet.numbersinglestat;
|
||||||
.addRow(statsRow)
|
.addRow(statsRow)
|
||||||
.addRow(replicasRow),
|
.addRow(replicasRow),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,16 +17,16 @@
|
||||||
{
|
{
|
||||||
record: 'cluster:apiserver_request_duration_seconds:mean5m',
|
record: 'cluster:apiserver_request_duration_seconds:mean5m',
|
||||||
expr: |||
|
expr: |||
|
||||||
sum(rate(apiserver_request_duration_seconds_sum{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|PROXY|CONNECT"}[5m])) without(instance, %(podLabel)s)
|
sum(rate(apiserver_request_duration_seconds_sum{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, %(podLabel)s)
|
||||||
/
|
/
|
||||||
sum(rate(apiserver_request_duration_seconds_count{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|PROXY|CONNECT"}[5m])) without(instance, %(podLabel)s)
|
sum(rate(apiserver_request_duration_seconds_count{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, %(podLabel)s)
|
||||||
||| % ($._config),
|
||| % ($._config),
|
||||||
},
|
},
|
||||||
] + [
|
] + [
|
||||||
{
|
{
|
||||||
record: 'cluster_quantile:apiserver_request_duration_seconds:histogram_quantile',
|
record: 'cluster_quantile:apiserver_request_duration_seconds:histogram_quantile',
|
||||||
expr: |||
|
expr: |||
|
||||||
histogram_quantile(%(quantile)s, sum(rate(apiserver_request_duration_seconds_bucket{%(kubeApiserverSelector)s,subresource!="log",verb!~"LIST|WATCH|WATCHLIST|PROXY|CONNECT"}[5m])) without(instance, %(podLabel)s))
|
histogram_quantile(%(quantile)s, sum(rate(apiserver_request_duration_seconds_bucket{%(kubeApiserverSelector)s,subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, %(podLabel)s))
|
||||||
||| % ({ quantile: quantile } + $._config),
|
||| % ({ quantile: quantile } + $._config),
|
||||||
labels: {
|
labels: {
|
||||||
quantile: quantile,
|
quantile: quantile,
|
||||||
|
|
|
@ -184,6 +184,57 @@
|
||||||
description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf "%.0f" $value }} transmit errors in the last two minutes.',
|
description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf "%.0f" $value }} transmit errors in the last two minutes.',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
alert: 'NodeHighNumberConntrackEntriesUsed',
|
||||||
|
expr: |||
|
||||||
|
(node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75
|
||||||
|
||| % $._config,
|
||||||
|
annotations: {
|
||||||
|
summary: 'Number of conntrack are getting close to the limit',
|
||||||
|
description: '{{ $value | humanizePercentage }} of conntrack entries are used',
|
||||||
|
},
|
||||||
|
labels: {
|
||||||
|
severity: 'warning',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
alert: 'NodeClockSkewDetected',
|
||||||
|
expr: |||
|
||||||
|
(
|
||||||
|
node_timex_offset_seconds > 0.05
|
||||||
|
and
|
||||||
|
deriv(node_timex_offset_seconds[5m]) >= 0
|
||||||
|
)
|
||||||
|
or
|
||||||
|
(
|
||||||
|
node_timex_offset_seconds < -0.05
|
||||||
|
and
|
||||||
|
deriv(node_timex_offset_seconds[5m]) <= 0
|
||||||
|
)
|
||||||
|
||| % $._config,
|
||||||
|
'for': '10m',
|
||||||
|
labels: {
|
||||||
|
severity: 'warning',
|
||||||
|
},
|
||||||
|
annotations: {
|
||||||
|
summary: 'Clock skew detected.',
|
||||||
|
message: 'Clock on {{ $labels.instance }} is out of sync by more than 300s. Ensure NTP is configured correctly on this host.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
alert: 'NodeClockNotSynchronising',
|
||||||
|
expr: |||
|
||||||
|
min_over_time(node_timex_sync_status[5m]) == 0
|
||||||
|
||| % $._config,
|
||||||
|
'for': '10m',
|
||||||
|
labels: {
|
||||||
|
severity: 'warning',
|
||||||
|
},
|
||||||
|
annotations: {
|
||||||
|
summary: 'Clock not synchronising.',
|
||||||
|
message: 'Clock on {{ $labels.instance }} is not synchronising. Ensure NTP is configured on this host.',
|
||||||
|
},
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -15,7 +15,7 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
|
||||||
},
|
},
|
||||||
|
|
||||||
versions+:: {
|
versions+:: {
|
||||||
prometheusOperator: 'v0.37.0',
|
prometheusOperator: 'v0.38.0',
|
||||||
prometheusConfigReloader: self.prometheusOperator,
|
prometheusConfigReloader: self.prometheusOperator,
|
||||||
configmapReloader: 'v0.3.0',
|
configmapReloader: 'v0.3.0',
|
||||||
},
|
},
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -12,9 +12,7 @@ local util = import '_util.libsonnet';
|
||||||
|
|
||||||
local rates = ['5m', '30m', '1h', '2h', '6h', '1d', '3d'],
|
local rates = ['5m', '30m', '1h', '2h', '6h', '1d', '3d'],
|
||||||
|
|
||||||
local labels =
|
local rulesSelectors = slo.selectors + ['latency="' + slo.latencyTarget + '"'],
|
||||||
util.selectorsToLabels(slo.selectors),
|
|
||||||
|
|
||||||
|
|
||||||
local latencyRules = [
|
local latencyRules = [
|
||||||
{
|
{
|
||||||
|
@ -39,7 +37,7 @@ local util = import '_util.libsonnet';
|
||||||
rate,
|
rate,
|
||||||
],
|
],
|
||||||
record: 'latencytarget:%s:rate%s' % [slo.metric, rate],
|
record: 'latencytarget:%s:rate%s' % [slo.metric, rate],
|
||||||
labels: labels,
|
labels: util.selectorsToLabels(rulesSelectors),
|
||||||
}
|
}
|
||||||
for rate in rates
|
for rate in rates
|
||||||
],
|
],
|
||||||
|
@ -65,23 +63,23 @@ local util = import '_util.libsonnet';
|
||||||
)
|
)
|
||||||
||| % [
|
||| % [
|
||||||
latencyRules[2].record,
|
latencyRules[2].record,
|
||||||
std.join(',', slo.selectors),
|
std.join(',', rulesSelectors),
|
||||||
slo.latencyBudget,
|
slo.latencyBudget,
|
||||||
latencyRules[0].record,
|
latencyRules[0].record,
|
||||||
std.join(',', slo.selectors),
|
std.join(',', rulesSelectors),
|
||||||
slo.latencyBudget,
|
slo.latencyBudget,
|
||||||
latencyRules[4].record,
|
latencyRules[4].record,
|
||||||
std.join(',', slo.selectors),
|
std.join(',', rulesSelectors),
|
||||||
slo.latencyBudget,
|
slo.latencyBudget,
|
||||||
latencyRules[1].record,
|
latencyRules[1].record,
|
||||||
std.join(',', slo.selectors),
|
std.join(',', rulesSelectors),
|
||||||
slo.latencyBudget,
|
slo.latencyBudget,
|
||||||
],
|
],
|
||||||
labels: labels {
|
labels: util.selectorsToLabels(rulesSelectors) {
|
||||||
severity: 'critical',
|
severity: 'critical',
|
||||||
},
|
},
|
||||||
annotations: {
|
annotations: {
|
||||||
message: 'High requests latency budget burn for %s (current value: {{ $value }})' % [std.strReplace(std.join(',', slo.selectors), '"', '')],
|
message: 'High requests latency budget burn for %s (current value: {{ $value }})' % [std.strReplace(std.join(',', rulesSelectors), '"', '')],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -100,23 +98,23 @@ local util = import '_util.libsonnet';
|
||||||
)
|
)
|
||||||
||| % [
|
||| % [
|
||||||
latencyRules[5].record,
|
latencyRules[5].record,
|
||||||
std.join(',', slo.selectors),
|
std.join(',', rulesSelectors),
|
||||||
slo.latencyBudget,
|
slo.latencyBudget,
|
||||||
latencyRules[3].record,
|
latencyRules[3].record,
|
||||||
std.join(',', slo.selectors),
|
std.join(',', rulesSelectors),
|
||||||
slo.latencyBudget,
|
slo.latencyBudget,
|
||||||
latencyRules[6].record,
|
latencyRules[6].record,
|
||||||
std.join(',', slo.selectors),
|
std.join(',', rulesSelectors),
|
||||||
slo.latencyBudget,
|
slo.latencyBudget,
|
||||||
latencyRules[4].record,
|
latencyRules[4].record,
|
||||||
std.join(',', slo.selectors),
|
std.join(',', rulesSelectors),
|
||||||
slo.latencyBudget,
|
slo.latencyBudget,
|
||||||
],
|
],
|
||||||
labels: labels {
|
labels: util.selectorsToLabels(rulesSelectors) {
|
||||||
severity: 'warning',
|
severity: 'warning',
|
||||||
},
|
},
|
||||||
annotations: {
|
annotations: {
|
||||||
message: 'High requests latency budget burn for %s (current value: {{ $value }})' % [std.strReplace(std.join(',', slo.selectors), '"', '')],
|
message: 'High requests latency budget burn for %s (current value: {{ $value }})' % [std.strReplace(std.join(',', rulesSelectors), '"', '')],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
Reference in a new issue