From 635904a17750b030214f0a8d16f1d8aeee14c8b0 Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Wed, 31 Mar 2021 12:09:41 -0700 Subject: [PATCH 01/12] Create ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 54 +++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Documentation/OSMPrivatePreview/ReadMe.md diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md new file mode 100644 index 000000000..86124280e --- /dev/null +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -0,0 +1,54 @@ +# Azure Monitor Container Insights Open Service Mesh Monitoring + +Azure Monitor container insights now supporting preview of Open Service Mesh(OSM) Monitoring. As part of this support. Customer can +1. Filter & view inventory of all the services that are part of your service mesh. +2. Visualize and monitor requests between services in your service mesh, with request latency, error rate & resource utilization by services. +3. Provides connection summary for OSM infrastructure running on AKS. + +## How to onboard Container Insights OSM monitoring? +OSM exposes Prometheus metrics which container insights collect, for container insights agent to collect OSM metrics follow the following steps. +1. Enable OSM to expose Prometheus metrics https://github.com/openservicemesh/osm/blob/main/docs/patterns/observability/metrics.md#configuring-prometheus-metrics-scraping +2. If you are using Azure Monitor container insights, if not on-board here. +3. If you are configuring your existing ConfigMap, append the following section in your existing ConfigMap yaml file +a. Set the setting here for monitor_kubernetes_pods to true +4. Else if you don't have ConfigMap, download the new ConfigMap from here. & then +a. Set the setting here for monitor_kubernetes_pods to true +5. Run the following kubectl command: kubectl apply -f + Example: kubectl apply -f container-azm-ms-agentconfig.yaml. +The configuration change can take a few minutes //15 mins to finish before taking effect, and all omsagent pods in the cluster will restart. The restart is a rolling restart for all omsagent pods, not all restart at the same time. + + +## Validate the metrics flow +1. Kusto query insight metrics name contains envoy. + +## How to consume OSM monitoring dashboard? +1. Access your AKS cluster & container insights through this [link.](https://aka.ms/azmon/osmux) +2. Go to reports tab and access Open Service Mesh (OSM) workbook (screen below) +3. Select the time-range & namespace to scope your services. By default, we only show services deployed by customers and we exclude internal service communication. In case you want to view that you select Show All in the filter. Please note OSM is managed service mesh, we show all internal connections for transparency. + +### Requests Tab +1. This tab provides you the summary of all the http requests sent via service to service in OSM. +2. You can view all the services and all the services it is communicating to by selecting the service in grid. +3. You can view total requests, request error rate & P90 latency. +4. You can drill-down to destination and view trends for HTTP error/success code, success rate, Pods resource utilization, latencies at different percentiles. + +### Connections Tab +1. This tab provides you a summary of all the connections between your services in Open Service Mesh. +2. Outbound connections: Total number of connections between Source and destination services. +3. Outbound active connections: Last count of active connections between source and destination in selected time range. +4. Outbound failed connections: Total number of failed connections between source and destination service + +### Troubleshooting guidance when Outbound active connections is 0 or failed connection count is >10k. +1. Please check your connection policy in OSM configuration. +2. If connection policy is fine, please refer the OSM documentation. https://aka.ms/osm/tsg +3. From this view as well, you can drill-down to destination and view trends for HTTP error/success code, success rate, Pods resource utilization, latencies at different percentiles. + + +### Known Issues +1. Scale 50 pods; can select namespace; cost issue +2. Large scale UX limit. +3. Local here. +4. OSM controller no latency & for internal services no resource utilization. + +Feedback: This is private preview, the goal for us is to get feedback. Feel free to reach out to us at [askcoin@microsoft.com](mailto:askcoin@microsoft.com) for any feedback and questions! + From 33b661f456c500a391937d30c7041cb4c82ef7c7 Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Wed, 31 Mar 2021 12:33:45 -0700 Subject: [PATCH 02/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 86124280e..899e7c4c1 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -8,14 +8,12 @@ Azure Monitor container insights now supporting preview of Open Service Mesh(OSM ## How to onboard Container Insights OSM monitoring? OSM exposes Prometheus metrics which container insights collect, for container insights agent to collect OSM metrics follow the following steps. 1. Enable OSM to expose Prometheus metrics https://github.com/openservicemesh/osm/blob/main/docs/patterns/observability/metrics.md#configuring-prometheus-metrics-scraping -2. If you are using Azure Monitor container insights, if not on-board here. -3. If you are configuring your existing ConfigMap, append the following section in your existing ConfigMap yaml file -a. Set the setting here for monitor_kubernetes_pods to true -4. Else if you don't have ConfigMap, download the new ConfigMap from here. & then -a. Set the setting here for monitor_kubernetes_pods to true -5. Run the following kubectl command: kubectl apply -f - Example: kubectl apply -f container-azm-ms-agentconfig.yaml. -The configuration change can take a few minutes //15 mins to finish before taking effect, and all omsagent pods in the cluster will restart. The restart is a rolling restart for all omsagent pods, not all restart at the same time. +2. If you are using Azure Monitor container insights follow steps below, if not on-board [here.](https://docs.microsoft.com/azure/azure-monitor/containers/container-insights-overview) + * Download the configmap from [here](https://github.com/microsoft/Docker-Provider/blob/ci_prod/kubernetes/container-azm-ms-osmconfig.yaml) + * Add the namespaces you want to monitor in configmap `monitor_namespaces = ["namespace1", "namespace2"]` + * Run the following kubectl command: kubectl apply -f + * Example: `kubectl apply -f container-azm-ms-agentconfig.yaml` +3. The configuration change can take upto 15 mins to finish before taking effect, and all omsagent pods in the cluster will restart. The restart is a rolling restart for all omsagent pods, not all restart at the same time. ## Validate the metrics flow From 1c306f5b7c90bbceb362ea72a3f576896890566d Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Wed, 31 Mar 2021 16:21:09 -0700 Subject: [PATCH 03/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 899e7c4c1..01030842d 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -17,7 +17,12 @@ OSM exposes Prometheus metrics which container insights collect, for container i ## Validate the metrics flow -1. Kusto query insight metrics name contains envoy. +1. Query cluster's workspace InsightsMetrics table to see metrics are flowing or not +``` +InsightsMetrics +| where Name contains "envoy" +| take 10 +``` ## How to consume OSM monitoring dashboard? 1. Access your AKS cluster & container insights through this [link.](https://aka.ms/azmon/osmux) @@ -43,10 +48,8 @@ OSM exposes Prometheus metrics which container insights collect, for container i ### Known Issues -1. Scale 50 pods; can select namespace; cost issue -2. Large scale UX limit. -3. Local here. -4. OSM controller no latency & for internal services no resource utilization. +1. The workbook has scale limits of 50 pods per namespace. If you have more than 50 pods in mesh you can have workbook loading issues. +2. When source or destination is osmcontroller we show no latency & for internal services we show no resource utilization. Feedback: This is private preview, the goal for us is to get feedback. Feel free to reach out to us at [askcoin@microsoft.com](mailto:askcoin@microsoft.com) for any feedback and questions! From b863b1596b29d408986c7e5742c9de4b2a451a28 Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Wed, 31 Mar 2021 18:14:24 -0700 Subject: [PATCH 04/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 01030842d..1ac415099 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -1,13 +1,13 @@ # Azure Monitor Container Insights Open Service Mesh Monitoring -Azure Monitor container insights now supporting preview of Open Service Mesh(OSM) Monitoring. As part of this support. Customer can +Azure Monitor container insights now supporting preview of [Open Service Mesh(OSM)](https://docs.microsoft.com/azure/aks/servicemesh-osm-about) Monitoring. As part of this support, customer can: 1. Filter & view inventory of all the services that are part of your service mesh. 2. Visualize and monitor requests between services in your service mesh, with request latency, error rate & resource utilization by services. 3. Provides connection summary for OSM infrastructure running on AKS. ## How to onboard Container Insights OSM monitoring? OSM exposes Prometheus metrics which container insights collect, for container insights agent to collect OSM metrics follow the following steps. -1. Enable OSM to expose Prometheus metrics https://github.com/openservicemesh/osm/blob/main/docs/patterns/observability/metrics.md#configuring-prometheus-metrics-scraping +1. Enable OSM to expose Prometheus metrics. Link [here](https://github.com/openservicemesh/osm/blob/main/docs/content/docs/tasks_usage/observability/_index.md) 2. If you are using Azure Monitor container insights follow steps below, if not on-board [here.](https://docs.microsoft.com/azure/azure-monitor/containers/container-insights-overview) * Download the configmap from [here](https://github.com/microsoft/Docker-Provider/blob/ci_prod/kubernetes/container-azm-ms-osmconfig.yaml) * Add the namespaces you want to monitor in configmap `monitor_namespaces = ["namespace1", "namespace2"]` @@ -26,7 +26,7 @@ InsightsMetrics ## How to consume OSM monitoring dashboard? 1. Access your AKS cluster & container insights through this [link.](https://aka.ms/azmon/osmux) -2. Go to reports tab and access Open Service Mesh (OSM) workbook (screen below) +2. Go to reports tab and access Open Service Mesh (OSM) workbook. 3. Select the time-range & namespace to scope your services. By default, we only show services deployed by customers and we exclude internal service communication. In case you want to view that you select Show All in the filter. Please note OSM is managed service mesh, we show all internal connections for transparency. ### Requests Tab From 55eefabeefd42cc846c8d09b056387a0933aadf0 Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Wed, 31 Mar 2021 18:25:55 -0700 Subject: [PATCH 05/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 1ac415099..043594e14 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -17,7 +17,7 @@ OSM exposes Prometheus metrics which container insights collect, for container i ## Validate the metrics flow -1. Query cluster's workspace InsightsMetrics table to see metrics are flowing or not +1. Query cluster's Log Analytics workspace InsightsMetrics table to see metrics are flowing or not ``` InsightsMetrics | where Name contains "envoy" From af2824b191daa9d5e11b8db0f8b55d107ff34938 Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Wed, 31 Mar 2021 18:26:32 -0700 Subject: [PATCH 06/12] Add files via upload --- Documentation/OSMPrivatePreview/Image1.jpg | Bin 0 -> 120932 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Documentation/OSMPrivatePreview/Image1.jpg diff --git a/Documentation/OSMPrivatePreview/Image1.jpg b/Documentation/OSMPrivatePreview/Image1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04cd03ab127c94aec072d56c418da612b934604a GIT binary patch literal 120932 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

dj+R1b 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 Date: Wed, 31 Mar 2021 18:30:32 -0700 Subject: [PATCH 07/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 043594e14..59b545c8a 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -29,6 +29,7 @@ InsightsMetrics 2. Go to reports tab and access Open Service Mesh (OSM) workbook. 3. Select the time-range & namespace to scope your services. By default, we only show services deployed by customers and we exclude internal service communication. In case you want to view that you select Show All in the filter. Please note OSM is managed service mesh, we show all internal connections for transparency. +![alt text](https://github.com/microsoft/Docker-Provider/blob/saarorOSMdoc/Documentation/OSMPrivatePreview/Image1.jpg) ### Requests Tab 1. This tab provides you the summary of all the http requests sent via service to service in OSM. 2. You can view all the services and all the services it is communicating to by selecting the service in grid. From 10e3970539db48d48c7c15cce62cc83b9cefa18e Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Thu, 1 Apr 2021 09:47:25 -0700 Subject: [PATCH 08/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 59b545c8a..9ff50b187 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -6,9 +6,9 @@ Azure Monitor container insights now supporting preview of [Open Service Mesh(OS 3. Provides connection summary for OSM infrastructure running on AKS. ## How to onboard Container Insights OSM monitoring? -OSM exposes Prometheus metrics which container insights collect, for container insights agent to collect OSM metrics follow the following steps. +OSM exposes Prometheus metrics which Container Insights can collect, for container insights agent to collect OSM metrics follow the following steps. 1. Enable OSM to expose Prometheus metrics. Link [here](https://github.com/openservicemesh/osm/blob/main/docs/content/docs/tasks_usage/observability/_index.md) -2. If you are using Azure Monitor container insights follow steps below, if not on-board [here.](https://docs.microsoft.com/azure/azure-monitor/containers/container-insights-overview) +2. If you are using Azure Monitor Container Insights follow steps below, if not on-board [here.](https://docs.microsoft.com/azure/azure-monitor/containers/container-insights-overview) * Download the configmap from [here](https://github.com/microsoft/Docker-Provider/blob/ci_prod/kubernetes/container-azm-ms-osmconfig.yaml) * Add the namespaces you want to monitor in configmap `monitor_namespaces = ["namespace1", "namespace2"]` * Run the following kubectl command: kubectl apply -f @@ -21,11 +21,11 @@ OSM exposes Prometheus metrics which container insights collect, for container i ``` InsightsMetrics | where Name contains "envoy" -| take 10 +| summarize count() by Name ``` ## How to consume OSM monitoring dashboard? -1. Access your AKS cluster & container insights through this [link.](https://aka.ms/azmon/osmux) +1. Access your AKS cluster & Container Insights through this [link.](https://aka.ms/azmon/osmux) 2. Go to reports tab and access Open Service Mesh (OSM) workbook. 3. Select the time-range & namespace to scope your services. By default, we only show services deployed by customers and we exclude internal service communication. In case you want to view that you select Show All in the filter. Please note OSM is managed service mesh, we show all internal connections for transparency. @@ -52,5 +52,4 @@ InsightsMetrics 1. The workbook has scale limits of 50 pods per namespace. If you have more than 50 pods in mesh you can have workbook loading issues. 2. When source or destination is osmcontroller we show no latency & for internal services we show no resource utilization. -Feedback: This is private preview, the goal for us is to get feedback. Feel free to reach out to us at [askcoin@microsoft.com](mailto:askcoin@microsoft.com) for any feedback and questions! - +This is private preview, the goal for us is to get feedback. Please feel free to reach out to us at [askcoin@microsoft.com](mailto:askcoin@microsoft.com) for any feedback and questions! From 555889c5ee8768b3288e02bf9c0b26d5156074af Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Thu, 1 Apr 2021 11:59:14 -0700 Subject: [PATCH 09/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 9ff50b187..03f534e76 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -7,13 +7,23 @@ Azure Monitor container insights now supporting preview of [Open Service Mesh(OS ## How to onboard Container Insights OSM monitoring? OSM exposes Prometheus metrics which Container Insights can collect, for container insights agent to collect OSM metrics follow the following steps. -1. Enable OSM to expose Prometheus metrics. Link [here](https://github.com/openservicemesh/osm/blob/main/docs/content/docs/tasks_usage/observability/_index.md) -2. If you are using Azure Monitor Container Insights follow steps below, if not on-board [here.](https://docs.microsoft.com/azure/azure-monitor/containers/container-insights-overview) +1. Configure OSM to allow Prometheus scrapping, follow steps from [here](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#configure-osm-to-allow-prometheus-scraping) +2. Enable one or more namespaces for metrics scraping: + +```bash +# With osm +osm metrics enable --namespace test +osm metrics enable --namespace "test1, test2" + +# With kubectl +kubectl patch namespace test --type=merge -p '{"metadata": {"annotations": {"openservicemesh.io/metrics": "enabled"}}}' +``` +3. If you are using Azure Monitor Container Insights follow steps below, if not on-board [here.](https://docs.microsoft.com/azure/azure-monitor/containers/container-insights-overview) * Download the configmap from [here](https://github.com/microsoft/Docker-Provider/blob/ci_prod/kubernetes/container-azm-ms-osmconfig.yaml) * Add the namespaces you want to monitor in configmap `monitor_namespaces = ["namespace1", "namespace2"]` * Run the following kubectl command: kubectl apply -f * Example: `kubectl apply -f container-azm-ms-agentconfig.yaml` -3. The configuration change can take upto 15 mins to finish before taking effect, and all omsagent pods in the cluster will restart. The restart is a rolling restart for all omsagent pods, not all restart at the same time. +4. The configuration change can take upto 15 mins to finish before taking effect, and all omsagent pods in the cluster will restart. The restart is a rolling restart for all omsagent pods, not all restart at the same time. ## Validate the metrics flow From 5bfb048b87f82c9bef83cf714275e7fa84e8b68b Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Thu, 1 Apr 2021 12:01:48 -0700 Subject: [PATCH 10/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 03f534e76..1eb50dc33 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -7,8 +7,10 @@ Azure Monitor container insights now supporting preview of [Open Service Mesh(OS ## How to onboard Container Insights OSM monitoring? OSM exposes Prometheus metrics which Container Insights can collect, for container insights agent to collect OSM metrics follow the following steps. -1. Configure OSM to allow Prometheus scrapping, follow steps from [here](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#configure-osm-to-allow-prometheus-scraping) -2. Enable one or more namespaces for metrics scraping: + +1. Deploy OSM to your AKS cluster, follow instructions [here] (https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#osm-service-quotas-and-limits-preview) +2. Configure OSM to allow Prometheus scrapping, follow steps from [here](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#configure-osm-to-allow-prometheus-scraping) +3. Enable one or more namespaces for metrics scraping: ```bash # With osm From d8867d87ef4fb23c535708d924e5858f2e73720b Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Thu, 1 Apr 2021 12:02:16 -0700 Subject: [PATCH 11/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 1eb50dc33..69bf94d1c 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -8,7 +8,7 @@ Azure Monitor container insights now supporting preview of [Open Service Mesh(OS ## How to onboard Container Insights OSM monitoring? OSM exposes Prometheus metrics which Container Insights can collect, for container insights agent to collect OSM metrics follow the following steps. -1. Deploy OSM to your AKS cluster, follow instructions [here] (https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#osm-service-quotas-and-limits-preview) +1. Deploy OSM to your AKS cluster, follow instructions [here](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#osm-service-quotas-and-limits-preview) 2. Configure OSM to allow Prometheus scrapping, follow steps from [here](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#configure-osm-to-allow-prometheus-scraping) 3. Enable one or more namespaces for metrics scraping: From 51f23c8929549a0d40d662186dbfb19b9758268a Mon Sep 17 00:00:00 2001 From: saaror <31900410+saaror@users.noreply.github.com> Date: Mon, 5 Apr 2021 13:08:41 -0700 Subject: [PATCH 12/12] Update ReadMe.md --- Documentation/OSMPrivatePreview/ReadMe.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Documentation/OSMPrivatePreview/ReadMe.md b/Documentation/OSMPrivatePreview/ReadMe.md index 69bf94d1c..1becd80b5 100644 --- a/Documentation/OSMPrivatePreview/ReadMe.md +++ b/Documentation/OSMPrivatePreview/ReadMe.md @@ -8,17 +8,18 @@ Azure Monitor container insights now supporting preview of [Open Service Mesh(OS ## How to onboard Container Insights OSM monitoring? OSM exposes Prometheus metrics which Container Insights can collect, for container insights agent to collect OSM metrics follow the following steps. -1. Deploy OSM to your AKS cluster, follow instructions [here](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#osm-service-quotas-and-limits-preview) -2. Configure OSM to allow Prometheus scrapping, follow steps from [here](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#configure-osm-to-allow-prometheus-scraping) -3. Enable one or more namespaces for metrics scraping: +1. Follow this [link](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#register-the-aks-openservicemesh-preview-feature) as a prereq before enabling the addon. +2. Enable AKS OSM addon on your + - [New AKS cluster](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#install-open-service-mesh-osm-azure-kubernetes-service-aks-add-on-for-a-new-aks-cluster) + - [Existing AKS cluster](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#enable-open-service-mesh-osm-azure-kubernetes-service-aks-add-on-for-an-existing-aks-cluster) +2. Configure OSM to allow Prometheus scraping, follow steps from [here](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#configure-osm-to-allow-prometheus-scraping) +3. To enable namespace(s), download the osm client library [here](https://docs.microsoft.com/en-us/azure/aks/servicemesh-osm-about?pivots=client-operating-system-linux#osm-service-quotas-and-limits-preview) & then enable metrics on namespaces ```bash # With osm osm metrics enable --namespace test osm metrics enable --namespace "test1, test2" -# With kubectl -kubectl patch namespace test --type=merge -p '{"metadata": {"annotations": {"openservicemesh.io/metrics": "enabled"}}}' ``` 3. If you are using Azure Monitor Container Insights follow steps below, if not on-board [here.](https://docs.microsoft.com/azure/azure-monitor/containers/container-insights-overview) * Download the configmap from [here](https://github.com/microsoft/Docker-Provider/blob/ci_prod/kubernetes/container-azm-ms-osmconfig.yaml)