Kubernetes上でのモニタリングサービスのデプロイ
このトピックでは、Prometheusを使用してKubernetes上のMilvusクラスタに監視サービスをデプロイする方法について説明します。
Prometheusでメトリクスを監視する
メトリクスは、システムの実行状態に関する情報を提供する指標です。例えば、メトリクスを使用すると、Milvusのデータノードで消費されるメモリやCPUリソースの量を把握できます。Milvusクラスタ内のコンポーネントのパフォーマンスとステータスを把握することで、十分な情報を得ることができるため、より適切な意思決定を行い、よりタイムリーにリソースの割り当てを調整することができます。
一般的に、メトリクスはPrometheusのような時系列データベース(TSDB)に保存され、タイムスタンプとともに記録されます。Milvusのサービスを監視する場合、Prometheusを使用して、エクスポータによって設定されたエンドポイントからデータを引き出すことができます。その後、Prometheusは各Milvusコンポーネントのメトリクスをhttp://<component-host>:9091/metrics
。
しかし、1つのコンポーネントに対して複数のレプリカが存在する場合があり、Prometheusの手動設定が複雑になりすぎます。そこで、Kubernetesの拡張機能であるPrometheus Operatorを使用することで、Prometheusモニタリングインスタンスを自動化し、効率的に管理することができます。Prometheus Operatorを使用すると、メトリックターゲットとサービスプロバイダーを手動で追加する手間が省けます。
ServiceMonitorカスタムリソース定義(CRD)を使用すると、動的なサービスセットを監視する方法を宣言的に定義できます。また、ラベル選択を使用して、必要な構成で監視するサービスを選択できます。Prometheus Operatorを使用すると、メトリクスを公開する方法を指定する規約を導入できます。新しいサービスは、手動で再設定することなく、設定した規約に従って自動的に検出されます。
次の図は、Prometheusのワークフローを表しています。
Prometheus_architecture
前提条件
このチュートリアルでは、kube-prometheusを使用して、各監視およびアラートコンポーネントのインストールと手動設定の手間を省きます。
Kube-prometheusは、Kubernetesマニフェスト、Grafanaダッシュボード、およびドキュメントとスクリプトを組み合わせたPrometheusルールを収集します。
監視サービスをデプロイする前に、kube-prometheus manifestsディレクトリ内の設定を使用して監視スタックを作成する必要があります。
$ git clone https://github.com/prometheus-operator/kube-prometheus.git
$ cd kube-prometheus
$ kubectl apply --server-side -f manifests/setup
$ kubectl wait \
--for condition=Established \
--all CustomResourceDefinition \
--namespace=monitoring
$ kubectl apply -f manifests/
kubectl patch clusterrole prometheus-k8s --type=json -p='[{"op": "add", "path": "/rules/-", "value": {"apiGroups": [""], "resources": ["pods", "services", "endpoints"], "verbs": ["get", "watch", "list"]}}]'
スタックを削除するには、kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup
を実行します。
Kubernetesに監視サービスをデプロイする
1.ダッシュボードにアクセスする
Prometheus サービスをポート9090
に、Grafana サービスをポート3000
に転送する。
$ kubectl --namespace monitoring --address 0.0.0.0 port-forward svc/prometheus-k8s 9090
$ kubectl --namespace monitoring --address 0.0.0.0 port-forward svc/grafana 3000
2.ServiceMonitorを有効にする
Milvus Helmでは、デフォルトではServiceMonitorは有効になっていません。KubernetesクラスタにPrometheus Operatorをインストールした後、パラメータmetrics.serviceMonitor.enabled=true
を追加することで有効にできます。
$ helm upgrade my-release milvus/milvus --set metrics.serviceMonitor.enabled=true --reuse-values
インストールが完了したら、kubectl
を使用して ServiceMonitor リソースを確認します。
$ kubectl get servicemonitor
NAME AGE
my-release-milvus 54s
次のステップ
- Milvusクラスタにモニタリングサービスをデプロイした場合、次のことも学ぶとよいでしょう:
- Milvusクラスタのスケール方法に関する情報をお探しの場合は、以下をご覧ください:
- Milvusのバージョンアップに興味がある場合、