From 1d77b8141e6b6f0db92ae243e21fa2cc6efe70e3 Mon Sep 17 00:00:00 2001 From: Eero Tamminen Date: Fri, 15 Nov 2024 10:48:35 +0200 Subject: [PATCH] Update observability README + fix typos (#556) * Update observability README + fix typos * Give image files reasonable names Scaling them down, and converting to 8-bit would be good next step, to make also their sizes to more reasonable. Signed-off-by: Eero Tamminen Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- kubernetes-addons/Observability/README.md | 66 ++++++++++-------- .../{image-1.png => assets/habana.png} | Bin .../Observability/assets/opea-scaling.png | Bin 0 -> 57495 bytes .../{image.png => assets/pcm.png} | Bin .../{image-2.png => assets/tgi.png} | Bin 5 files changed, 38 insertions(+), 28 deletions(-) rename kubernetes-addons/Observability/{image-1.png => assets/habana.png} (100%) create mode 100644 kubernetes-addons/Observability/assets/opea-scaling.png rename kubernetes-addons/Observability/{image.png => assets/pcm.png} (100%) rename kubernetes-addons/Observability/{image-2.png => assets/tgi.png} (100%) diff --git a/kubernetes-addons/Observability/README.md b/kubernetes-addons/Observability/README.md index 199e2c4b..a5cc48cb 100644 --- a/kubernetes-addons/Observability/README.md +++ b/kubernetes-addons/Observability/README.md @@ -40,7 +40,7 @@ kubectl port-forward service/grafana 3000:80 Open your browser and navigate to http://localhost:3000. Use "admin/prom-operator" as the username and the password to login. -## 2. Metric for Gaudi Hardware(v1.16.2) +## 2. Metrics for Gaudi Hardware (v1.16.2) To monitor Gaudi hardware metrics, you can use the following steps: @@ -64,8 +64,6 @@ kubectl apply -f ./habana/metric-exporter-serviceMonitor.yaml ### Step 4: Verify the metrics -The metric endpoints for habana will be a headless service, so we need to get endpoint to verify - ``` # To get the metric endpoints, e.g. to get first endpoint to test habana_metric_url=`kubectl -n monitoring get ep metric-exporter -o jsonpath="{.subsets[].addresses[0].ip}:{..subsets[].ports[0].port}"` @@ -95,58 +93,70 @@ promhttp_metric_handler_requests_total{code="503"} 0 ### Step 5: Import the dashboard into Grafana -Manually import ./habana/Dashboard-Gaudi-HW.json into Grafana -![alt text](image-1.png) +Manually import the [`Dashboard-Gaudi-HW.json`](./habana/Dashboard-Gaudi-HW.json) file into Grafana +![Gaudi HW dashboard](./assets/habana.png) -## 3. Metric for OPEA/chatqna +## 3. Metrics for OPEA applications -To monitor ChatQnA metrics including TGI-gaudi,TEI,TEI-Reranking and other micro services, you can use the following steps: +To monitor OPEA application metrics including TGI-gaudi, TEI, TEI-Reranking and other micro services, you can use the following steps: -### Step 1: Install ChatQnA by Helm +### Step 1: Install application with Helm Install Helm (version >= 3.15) first. Refer to the [Helm Installation Guide](https://helm.sh/docs/intro/install/) for more information. -Refer to the [ChatQnA helm chart](https://github.com/opea-project/GenAIInfra/tree/main/helm-charts/chatqna/README.md) for instructions on deploying ChatQnA into Kubernetes on Xeon & Gaudi. +Install OPEA application as described in [Helm charts README](../../helm-charts/README.md). -### Step 2: Install all the serviceMonitor +For example, to install ChatQnA, follow [ChatQnA helm chart](https://github.com/opea-project/GenAIInfra/tree/main/helm-charts/chatqna/README.md) for instructions on deploying it to Kubernetes. -> NOTE: -> If the chatQnA installed into another instance instead of chatqna(Default instance name),you should modify the -> matchLabels app.kubernetes.io/instance:${instanceName} with proper instanceName +Make sure to enable [Helm monitoring option](../../helm-charts/monitoring.md). -``` -kubectl apply -f chatqna/ -``` +### Step 2: Install dashboards + +Here are few Grafana dashboards for monitoring different aspects of OPEA applications: + +- [`queue_size_embedding_rerank_tgi.json`](./chatqna/dashboard/queue_size_embedding_rerank_tgi.json): queue size of TGI-gaudi, TEI-Embedding, TEI-reranking +- [`tgi_grafana.json`](./chatqna/dashboard/tgi_grafana.json): `tgi-gaudi` text generation inferencing service utilization +- [`opea-scaling.json`](./opea-apps/opea-scaling.json): scaling, request rates and failures for OPEA application megaservice, TEI-reranking, TEI-embedding, and TGI -### Step 3: Install the dashboard +You can either: -- manually import tgi_grafana.json into the Grafana to monitor the tgi-gaudi utilization -- manually import queue_size_embedding_rerank_tgi.json into the Grafana to monitor the queue size of TGI-gaudi,TEI-Embedding,TEI-reranking -- OR you could create dashboard to monitor all the services in ChatQnA by yourself +- Import them manually to Grafana, +- Use [`update-dashboards.sh`](./update-dashboards.sh) script to add them to Kubernetes as Grafana dashboard configMaps + - (Script assumes Prometheus / Grafana to be installed according to above instructions) +- Or create your own dashboards based on them -![alt text](image-2.png) +Note: when dashboard is imported to Grafana, you can directly save changes to it, but those dashboards go away if Grafana is removed / re-installed. -## 4. Metric for PCM(Intel® Performance Counter Monitor) +Whereas with dashboard configMaps, Grafana saves changes to a selected file, but you need to remember to re-apply them to Kubernetes / Grafana, for your changes to be there when that dashboard is reloaded. + +![TGI dashboard](./assets/tgi.png) +![Scaling dashboard](./assets/opea-scaling.png) + +## 4. Metrics for PCM (Intel® Performance Counter Monitor) ### Step 1: Install PCM -Please refer this repo to install [Intel® PCM](https://github.com/intel/pcm) +Please refer to this repo to install [Intel® PCM](https://github.com/intel/pcm) ### Step 2: Modify & Install pcm-service -modify the pcm/pcm-service.yaml to set the addresses +modify the `pcm/pcm-service.yaml` file to set the addresses ``` kubectl apply -f pcm/pcm-service.yaml ``` -### Step 3: Install pcm serviceMonitor +### Step 3: Install PCM serviceMonitor ``` kubectl apply -f pcm/pcm-serviceMonitor.yaml ``` -### Step 4: Install the pcm dashboard +### Step 4: Install the PCM dashboard + +manually import the [`pcm-dashboard.json`](./pcm/pcm-dashboard.json) file into the Grafana +![PCM dashboard](./assets/pcm.png) + +## More dashboards -manually import the pcm/pcm-dashboard.json into the Grafana -![alt text](image.png) +GenAIEval repository includes additional [dashboards](https://github.com/opea-project/GenAIEval/tree/main/evals/benchmark/grafana). diff --git a/kubernetes-addons/Observability/image-1.png b/kubernetes-addons/Observability/assets/habana.png similarity index 100% rename from kubernetes-addons/Observability/image-1.png rename to kubernetes-addons/Observability/assets/habana.png diff --git a/kubernetes-addons/Observability/assets/opea-scaling.png b/kubernetes-addons/Observability/assets/opea-scaling.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a3753a2ec6dfc55fe6c9c90338bfdbeda22b86 GIT binary patch literal 57495 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 Oe=3UV3T1MS1OE^11bm7B literal 0 HcmV?d00001 diff --git a/kubernetes-addons/Observability/image.png b/kubernetes-addons/Observability/assets/pcm.png similarity index 100% rename from kubernetes-addons/Observability/image.png rename to kubernetes-addons/Observability/assets/pcm.png diff --git a/kubernetes-addons/Observability/image-2.png b/kubernetes-addons/Observability/assets/tgi.png similarity index 100% rename from kubernetes-addons/Observability/image-2.png rename to kubernetes-addons/Observability/assets/tgi.png