Skip to content

Commit 255864a

Browse files
authored
Merge pull request #287532 from kgremban/m2-otel
OTel updates
2 parents ec411bb + ccac681 commit 255864a

File tree

4 files changed

+117
-92
lines changed

4 files changed

+117
-92
lines changed

articles/iot-operations/configure-observability-monitoring/howto-configure-observability-manual.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,21 @@ az provider register -n "Microsoft.AlertsManagement"
3030
```
3131

3232
## Install Azure Monitor managed service for Prometheus
33+
3334
Azure Monitor managed service for Prometheus is a component of Azure Monitor Metrics. This managed service provides flexibility in the types of metric data that you can collect and analyze with Azure Monitor. Prometheus metrics share some features with platform and custom metrics. Prometheus metrics also use some different features to better support open-source tools such as PromQL and Grafana.
3435

3536
Azure Monitor managed service for Prometheus allows you to collect and analyze metrics at scale using a Prometheus-compatible monitoring solution. This fully managed service is based on the Prometheus project from the Cloud Native Computing Foundation (CNCF). The service allows you to use the Prometheus query language (PromQL) to analyze and alert on the performance of monitored infrastructure and workloads, without having to operate the underlying infrastructure.
3637

3738
To set up Prometheus metrics collection for the new Arc-enabled cluster, follow the steps in [Configure Prometheus metrics collection](howto-configure-observability.md#configure-prometheus-metrics-collection).
3839

3940
## Install Container Insights
41+
4042
Container Insights monitors the performance of container workloads deployed to the cloud. It gives you performance visibility by collecting memory and processor metrics from controllers, nodes, and containers that are available in Kubernetes through the Metrics API. After you enable monitoring from Kubernetes clusters, metrics and container logs are automatically collected through a containerized version of the Log Analytics agent for Linux. Metrics are sent to the metrics database in Azure Monitor. Log data is sent to your Log Analytics workspace.
4143

4244
To monitor container workload performance, complete the steps to [enable container insights](/azure/azure-monitor/containers/kubernetes-monitoring-enable).
4345

4446
## Install Grafana
47+
4548
Azure Managed Grafana is a data visualization platform built on top of the Grafana software by Grafana Labs. Azure Managed Grafana is a fully managed Azure service operated and supported by Microsoft. Grafana helps you bring together metrics, logs and traces into a single user interface. With its extensive support for data sources and graphing capabilities, you can view and analyze your application and infrastructure telemetry data in real-time.
4649

4750
Azure IoT Operations provides a collection of dashboards designed to give you many of the visualizations you need to understand the health and performance of your Azure IoT Operations deployment.
@@ -54,6 +57,14 @@ To install Azure Managed Grafana, complete the following steps:
5457

5558
1. Configure the dashboards by following the steps in [Deploy dashboards to Grafana](howto-configure-observability.md#deploy-dashboards-to-grafana).
5659

60+
## Install OpenTelemetry (OTel) Collector
61+
62+
OpenTelemetry Collector is a key component in the OpenTelemetry project, which is an open-source observability framework aimed at providing unified tracing, metrics, and logging for distributed systems. The collector is designed to receive, process, and export telemetry data from multiple sources, such as applications and infrastructure, and send it to a monitoring backend. This OTel Collector collects metrics from Azure IoT Operations and makes it available to use with other observability tooling like Azure Monitor managed service for Prometheus, Container Insights, and Grafana.
63+
64+
To install OTel collector, complete the following steps:
65+
66+
[!INCLUDE [deploy-otel-collector.md](../includes/deploy-otel-collector.md)]
67+
5768
## Related content
5869

5970
- [Deploy observability resources with a script](howto-configure-observability.md)

articles/iot-operations/configure-observability-monitoring/howto-configure-observability.md

Lines changed: 5 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -39,101 +39,15 @@ az provider register -n "Microsoft.AlertsManagement"
3939

4040
## Install observability components
4141

42-
The steps in this section install shared monitoring resources and configure your Arc enabled cluster to emit observability signals to these resources. The shared monitoring resources include Azure Managed Grafana, Azure Monitor Workspace, Azure Managed Prometheus, Azure Log Analytics, and Container Insights. In this section, you also deploy an [OpenTelemetry (Otel) Collector](https://opentelemetry.io/docs/collector/)
42+
The steps in this section deploy an [OpenTelemetry (OTel) Collector](https://opentelemetry.io/docs/collector/) and then install shared monitoring resources and configure your Arc enabled cluster to emit observability signals to these resources. The shared monitoring resources include Azure Managed Grafana, Azure Monitor Workspace, Azure Managed Prometheus, Azure Log Analytics, and Container Insights.
4343

44-
1. Clone or download the Azure IoT Operations repo to your local machine: [azure-iot-operations.git](https://github.com/Azure/azure-iot-operations.git).
44+
### Deploy OpenTelemetry Collector
4545

46-
> [!NOTE]
47-
> The repo contains the deployment definition of Azure IoT Operations, and samples that include the sample dashboards used in this article.
48-
49-
1. Browse to the following path in your local copy of the repo:
50-
51-
*azure-iot-operations\tools\setup-3p-obs-infra*
52-
53-
1. Create a file called `otel-collector-values.yaml` and past the following code into it to define an OpenTelemetry Collector:
54-
55-
```yml
56-
File: otel-collector-values.yaml
57-
mode: deployment
58-
fullnameOverride: aio-otel-collector
59-
image:
60-
repository: otel/opentelemetry-collector
61-
tag: 0.107.0
62-
config:
63-
processors:
64-
memory_limiter:
65-
limit_percentage: 80
66-
spike_limit_percentage: 10
67-
check_interval: '60s'
68-
receivers:
69-
jaeger: null
70-
prometheus: null
71-
zipkin: null
72-
otlp:
73-
protocols:
74-
grpc:
75-
endpoint: ':4317'
76-
http:
77-
endpoint: ':4318'
78-
exporters:
79-
prometheus:
80-
endpoint: ':8889'
81-
resource_to_telemetry_conversion:
82-
enabled: true
83-
service:
84-
extensions:
85-
- health_check
86-
pipelines:
87-
metrics:
88-
receivers:
89-
- otlp
90-
exporters:
91-
- prometheus
92-
logs: null
93-
traces: null
94-
telemetry: null
95-
extensions:
96-
memory_ballast:
97-
size_mib: 0
98-
resources:
99-
limits:
100-
cpu: '100m'
101-
memory: '512Mi'
102-
ports:
103-
metrics:
104-
enabled: true
105-
containerPort: 8889
106-
servicePort: 8889
107-
protocol: 'TCP'
108-
jaeger-compact:
109-
enabled: false
110-
jaeger-grpc:
111-
enabled: false
112-
jaeger-thrift:
113-
enabled: false
114-
zipkin:
115-
enabled: false
116-
```
46+
[!INCLUDE [deploy-otel-collector.md](../includes/deploy-otel-collector.md)]
11747

118-
1. In the `otel-collector-values.yaml` file, make a note of the following values that you'll use when you deploy Azure IoT Operations on the cluster:
119-
120-
* **fullnameOverride**
121-
* **grpc.endpoint**
122-
* **check_interval**
123-
124-
1. Save and close the file.
125-
126-
1. Deploy the collector by running the following commands:
127-
128-
```shell
129-
kubectl get namespace azure-iot-operations || kubectl create namespace azure-iot-operations
130-
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
131-
132-
helm repo update
133-
helm upgrade --install aio-observability open-telemetry/opentelemetry-collector -f otel-collector-values.yaml --namespace azure-iot-operations
134-
```
48+
### Deploy observability components
13549

136-
1. Deploy the observability components by running one of the following commands. Use the subscription ID and resource group of the Arc-enabled cluster that you want to monitor.
50+
- Deploy the observability components by running one of the following commands. Use the subscription ID and resource group of the Arc-enabled cluster that you want to monitor.
13751

13852
> [!NOTE]
13953
> To discover other optional parameters you can set, see the [bicep file](https://github.com/Azure/azure-iot-operations/blob/main/tools/setup-3p-obs-infra/observability-full.bicep). The optional parameters can specify things like alternative locations for cluster resources.

articles/iot-operations/deploy-iot-ops/howto-deploy-iot-operations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ Azure IoT Operations requires a schema registry on your cluster. Schema registry
123123
| --------- | ----- | ----------- |
124124
| `--no-progress` | | Disables the deployment progress display in the terminal. |
125125
| `--enable-fault-tolerance` | `false`, `true` | Enables fault tolerance for Azure Arc Container Storage. At least three cluster nodes are required. |
126-
| `--ops-config` | `observability.metrics.openTelemetryCollectorAddress="<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT>` | If you followed the optional prerequisites to prepare your cluster for observability, provide the OpenTelemetry (OTel) collector address you configured in the otel-collector-values.yaml file.<br><br>The sample values used in [Configure observability](../configure-observability-monitoring/howto-configure-observability.md) are **fullnameOverride=aio-otel-collector** and **grpc.enpoint=4317**. |
126+
| `--ops-config` | `observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT>` | If you followed the optional prerequisites to prepare your cluster for observability, provide the OpenTelemetry (OTel) collector address you configured in the otel-collector-values.yaml file.<br><br>The sample values used in [Configure observability](../configure-observability-monitoring/howto-configure-observability.md) are **fullnameOverride=aio-otel-collector** and **grpc.enpoint=4317**. |
127127
| `--ops-config` | `observability.metrics.exportInternalSeconds=<CHECK_INTERVAL>` | If you followed the optional prerequisites to prepare your cluster for observability, provide the **check_interval** value you configured in the otel-collector-values.yaml file.<br><br>The sample value used in [Configure observability](../configure-observability-monitoring/howto-configure-observability.md) is **check_interval=60**. |
128128

129129
1. Deploy Azure IoT Operations. This command takes several minutes to complete:
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
---
2+
title: include file
3+
description: include file
4+
author: kgremban
5+
ms.topic: include
6+
ms.date: 09/27/2024
7+
ms.author: kgremban
8+
ms.custom: include file
9+
---
10+
11+
1. Clone or download the Azure IoT Operations repo to your local machine: [azure-iot-operations.git](https://github.com/Azure/azure-iot-operations.git).
12+
13+
> [!NOTE]
14+
> The repo contains the deployment definition of Azure IoT Operations, and samples that include the sample dashboards used in this article.
15+
16+
1. Browse to the following path in your local copy of the repo:
17+
18+
*azure-iot-operations\tools\setup-3p-obs-infra*
19+
20+
1. Create a file called `otel-collector-values.yaml` and paste the following code into it to define an OpenTelemetry Collector:
21+
22+
```yml
23+
mode: deployment
24+
fullnameOverride: aio-otel-collector
25+
image:
26+
repository: otel/opentelemetry-collector
27+
tag: 0.107.0
28+
config:
29+
processors:
30+
memory_limiter:
31+
limit_percentage: 80
32+
spike_limit_percentage: 10
33+
check_interval: '60s'
34+
receivers:
35+
jaeger: null
36+
prometheus: null
37+
zipkin: null
38+
otlp:
39+
protocols:
40+
grpc:
41+
endpoint: ':4317'
42+
http:
43+
endpoint: ':4318'
44+
exporters:
45+
prometheus:
46+
endpoint: ':8889'
47+
resource_to_telemetry_conversion:
48+
enabled: true
49+
service:
50+
extensions:
51+
- health_check
52+
pipelines:
53+
metrics:
54+
receivers:
55+
- otlp
56+
exporters:
57+
- prometheus
58+
logs: null
59+
traces: null
60+
telemetry: null
61+
extensions:
62+
memory_ballast:
63+
size_mib: 0
64+
resources:
65+
limits:
66+
cpu: '100m'
67+
memory: '512Mi'
68+
ports:
69+
metrics:
70+
enabled: true
71+
containerPort: 8889
72+
servicePort: 8889
73+
protocol: 'TCP'
74+
jaeger-compact:
75+
enabled: false
76+
jaeger-grpc:
77+
enabled: false
78+
jaeger-thrift:
79+
enabled: false
80+
zipkin:
81+
enabled: false
82+
```
83+
84+
1. In the `otel-collector-values.yaml` file, make a note of the following values that you use in the `az iot ops init` command when you deploy Azure IoT Operations on the cluster:
85+
86+
* **fullnameOverride**
87+
* **grpc.endpoint**
88+
* **check_interval**
89+
90+
1. Save and close the file.
91+
92+
1. Deploy the collector by running the following commands:
93+
94+
```shell
95+
kubectl get namespace azure-iot-operations || kubectl create namespace azure-iot-operations
96+
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
97+
98+
helm repo update
99+
helm upgrade --install aio-observability open-telemetry/opentelemetry-collector -f otel-collector-values.yaml --namespace azure-iot-operations
100+
```

0 commit comments

Comments
 (0)