Monitoring Kubernetes
原文:https://docs.gitlab.com/ee/user/project/integrations/prometheus_library/kubernetes.html
- Requirements
- Metrics supported
- Configuring Prometheus to monitor for Kubernetes metrics
- Specifying the Environment
- Displaying Canary metrics
Monitoring Kubernetes
在 GitLab 9.0 中引入 .
GitLab 支持自动检测和监视 Kubernetes 指标.
Requirements
必须启用Prometheus和Kubernetes集成服务.
Metrics supported
平均内存使用量(MB):
avg(sum(container_memory_usage_bytes{container_name!="POD",pod_name=~"^%{ci_environment_slug}-([^c].*|c([^a]|a([^n]|n([^a]|a([^r]|r[^y])))).*|)-(.*)",namespace="%{kube_namespace}"}) by (job)) without (job) / count(avg(container_memory_usage_bytes{container_name!="POD",pod_name=~"^%{ci_environment_slug}-([^c].*|c([^a]|a([^n]|n([^a]|a([^r]|r[^y])))).*|)-(.*)",namespace="%{kube_namespace}"}) without (job)) /1024/1024
平均 CPU 使用率(%):
avg(sum(rate(container_cpu_usage_seconds_total{container_name!="POD",pod_name=~"^%{ci_environment_slug}-([^c].*|c([^a]|a([^n]|n([^a]|a([^r]|r[^y])))).*|)-(.*)",namespace="%{kube_namespace}"}[15m])) by (job)) without (job) / count(sum(rate(container_cpu_usage_seconds_total{container_name!="POD",pod_name=~"^%{ci_environment_slug}-([^c].*|c([^a]|a([^n]|n([^a]|a([^r]|r[^y])))).*|)-(.*)",namespace="%{kube_namespace}"}[15m])) by (pod_name))
Configuring Prometheus to monitor for Kubernetes metrics
为了收集 Kubernetes 指标,需要将 Prometheus 部署到集群中并进行正确配置. GitLab 支持两种方法:
- GitLab 与 Kubernetes 集成 ,并且可以将 Prometheus 部署到连接的集群中 . 它被自动配置为收集 Kubernetes 指标.
- 要配置自己的 Prometheus 服务器,可以遵循Prometheus 文档 .
Specifying the Environment
为了隔离并仅显示给定环境的相关 CPU 和内存指标,GitLab 需要一种方法来检测其正在运行的容器. 由于这些指标是在容器级别跟踪的,因此传统的 Kubernetes 标签不可用.
相反, Deployment或DaemonSet名称应以CI_ENVIRONMENT_SLUG 开头 . 如果需要,可以在其后跟一个-
和其他内容. 例如, review-homepage-5620p5
的部署名称将与review/homepage
环境匹配.
Displaying Canary metrics
在GitLab 10.2 中引入.
GitLab 还收集了针对Canary 部署的 Kubernetes 指标,从而可以轻松比较当前部署的版本和 Canary.
这些度量标准期望Deployment或DaemonSet名称以$CI_ENVIRONMENT_SLUG-canary
开头,以隔离 canary 度量标准.
Canary metrics supported
平均内存使用量(MB)
avg(sum(container_memory_usage_bytes{container_name!="POD",pod_name=~"^%{ci_environment_slug}-canary-(.*)",namespace="%{kube_namespace}"}) by (job)) without (job) / count(avg(container_memory_usage_bytes{container_name!="POD",pod_name=~"^%{ci_environment_slug}-canary-(.*)",namespace="%{kube_namespace}"}) without (job)) /1024/1024
平均 CPU 使用率(%)
avg(sum(rate(container_cpu_usage_seconds_total{container_name!="POD",pod_name=~"^%{ci_environment_slug}-canary-(.*)",namespace="%{kube_namespace}"}[15m])) by (job)) without (job) / count(sum(rate(container_cpu_usage_seconds_total{container_name!="POD",pod_name=~"^%{ci_environment_slug}-canary-(.*)",namespace="%{kube_namespace}"}[15m])) by (pod_name))