8 Game Title1 コロプラではKubernetes上の監視に、Prometheus + Grafanaを利用しています これまでのPrometheus/Grafanaの運用 Single Tenant構成 ゲームタイトルごとに各K8sクラスタ K8sクラスタ : Prometheus = 1:1 API Game Title2 PvP API Game Title3 API
9 Game Title1 コロプラではKubernetes上の監視に、Prometheus + Grafanaを利用しています これまでのPrometheus/Grafanaの運用 Single Tenant構成 ゲームタイトルごとに各K8sクラスタ K8sクラスタ : Prometheus = 1:1 API Game Title2 PvP API Game Title3 API max1,500 pods
33 Victoria Metrics Victoria Metrics is ... THE BEST LONG-TERM REMOTE STORAGE FOR PROMETHEUS 公式ページ: https://victoriametrics.com/ Features ・SIMPLIFIES MONITORING ・GLOBAL QUERY VIEW ・DESIGNED TO BE FAST ・NATIVE PROMQL SUPPORT ・LONG TERM STORAGE ・LOW RESOURCE USAGE 本番運用から数ヶ月経ちましたが、非常に高い信頼性で動作しています
34 Architecture 【Mode】 Single version Cluster version の2種あります 右図はCluster ver の図になります 出典: https://github.com/Victoria Metrics/VictoriaMetrics/blo b/cluster/README.md
56 Victoria Metrics VMSelect ● maxConcurrentRequests: 2*vCPU 同時Request数はコア数の2倍までが推奨 ● maxUniqueTimeseries: 1,000,000 (default: 300,000) Parameter Tuning cannot find tag filter matching less than 300001 time series; either increase -search.maxUniqueTimeseries or use more specific tag filters 天井にあたったParameter名が表示されるので Logベースでチューニングするのが簡単です
58 Prometheus& Victoria Metrics専用の NodePool(Node Instance Group)を用意 Scheduling上の工夫 Kubernetes cluster backend pool ZoneA ZoneB Instance Group label: back taint: back Instance Group label: back taint: back app pool ZoneA ZoneB Instance Group label: app taint: app Instance Group label: app taint: app prometheus pool ZoneA ZoneB Instance Group label: prom taint: prom Instance Group label: prom taint: prom system pool ZoneA ZoneB Instance Group label: system taint: system Instance Group label: system taint: system
59 収集Metricsが増えすぎて、kube-state-metricsがOOMKilled → kube-state-metrics専用のNodeを確保 Scheduling上の工夫 Kubernetes cluster backend pool ZoneA ZoneB Instance Group label: back taint: back Instance Group label: back taint: back app pool ZoneA ZoneB Instance Group label: app taint: app Instance Group label: app taint: app kube-state-metrics pool ZoneA ZoneB Instance Group label: metric taint: metric Instance Group label: metric taint: metric prometheus pool ZoneA ZoneB Instance Group label: prom taint: prom Instance Group label: prom taint: prom