Monitoring Kubernetes

原文:https://docs.gitlab.com/ee/user/project/integrations/prometheus_library/kubernetes.html

Monitoring Kubernetes

在 GitLab 9.0 中引入 .

GitLab 支持自动检测和监视 Kubernetes 指标.

Requirements

必须启用PrometheusKubernetes集成服务.

Metrics supported

  • 平均内存使用量(MB):

    1. 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 使用率(%):

    1. 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 支持两种方法:

Specifying the Environment

为了隔离并仅显示给定环境的相关 CPU 和内存指标,GitLab 需要一种方法来检测其正在运行的容器. 由于这些指标是在容器级别跟踪的,因此传统的 Kubernetes 标签不可用.

相反, DeploymentDaemonSet名称应以CI_ENVIRONMENT_SLUG 开头 . 如果需要,可以在其后跟一个-和其他内容. 例如, review-homepage-5620p5的部署名称将与review/homepage环境匹配.

Displaying Canary metrics

GitLab 10.2 中引入.

GitLab 还收集了针对Canary 部署的 Kubernetes 指标,从而可以轻松比较当前部署的版本和 Canary.

这些度量标准期望DeploymentDaemonSet名称以$CI_ENVIRONMENT_SLUG-canary开头,以隔离 canary 度量标准.

Canary metrics supported

  • 平均内存使用量(MB)

    1. 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 使用率(%)

    1. 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))