Kubernetesの監視
GitLab 9.0で導入されました。
GitLabはKubernetesのメトリクスを自動的に検出して監視する機能をサポートしています。
要件
Prometheusと Kubernetesインテグレーションサービスを有効にする必要があります。
対応メトリクス
-
平均メモリ使用量(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))
Kubernetesメトリクスを監視するためのPrometheusの設定
Kubernetesメトリクスを収集するためには、Prometheusをクラスターにデプロイし、適切に設定する必要があります。 GitLabはそのための2つの方法をサポートしています:
- GitLabはKubernetesとインテグレーションしており、接続されたクラスターにPrometheusをデプロイすることができます。 Kubernetesメトリクスを収集するように自動的に設定されます。
- 独自のPrometheusサーバを設定するには、Prometheusのドキュメントに従ってください。
環境の指定
ある環境に対して関連するCPUとメモリのメトリクスを分離して表示するには、GitLabがどのコンテナを実行しているかを検出する方法が必要です。 これらのメトリクスはコンテナレベルで追跡されるため、従来のKubernetesラベルは利用できません。
代わりに、デプロイメント名またはデーモンセット名は、CI_ENVIRONMENT_SLUGで始まる必要があります。 必要に応じて、-
および追加コンテンツを続けることができます。 たとえば、review-homepage-5620p5
というデプロイメント名は、review/homepage
環境に一致します。
カナリア・メトリクスの表示
GitLab 10.2で導入されました。
GitLabはまた、カナリアデプロイのKubernetesメトリクスを収集し、現在デプロイされているバージョンとカナリアを簡単に比較できるようにします。
これらのメトリクスは、カナリア・メトリクスを分離するために、デプロイまたはデーモン・セット名が$CI_ENVIRONMENT_SLUG-canary
で始まることを期待します。
カナリア・メトリクスに対応
-
平均メモリ使用量(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))