Skip to content

Commit d2beb32

Browse files
authored
[AKS] Add --enable-opentelemetry-metrics and --enable-opentelemetry-logs to monitoring addons in aks-preview (#9149)
1 parent 3a4e4c9 commit d2beb32

File tree

12 files changed

+6163
-1455
lines changed

12 files changed

+6163
-1455
lines changed

src/aks-preview/HISTORY.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,22 @@ To release a new version, please select a new version number (usually plus 1 to
1212
Pending
1313
+++++++
1414

15+
19.0.0b2
16+
+++++++
17+
* `az aks create`: Add new parameter `--enable-opentelemetry-metrics` to enable OTLP feature for metrics addon.
18+
* `az aks update`: Add new parameter `--enable-opentelemetry-metrics` to enable OTLP feature for metrics addon.
19+
* `az aks update`: Add new parameter `--disable-opentelemetry-metrics` to disable OTLP feature for metrics addon.
20+
* `az aks create`: Add new parameter `--opentelemetry-metrics-port` to change the OTLP port from the default for metrics addon.
21+
* `az aks update`: Add new parameter `--opentelemetry-metrics-port` to change the OTLP port from the default for metrics addon.
22+
* `az aks create`: Add new parameter `--enable-opentelemetry-logs` to enable OTLP feature for logs addon.
23+
* `az aks update`: Add new parameter `--enable-opentelemetry-logs` to enable OTLP feature for logs addon.
24+
* `az aks update`: Add new parameter `--disable-opentelemetry-logs` to disable OTLP feature for logs addon.
25+
* `az aks create`: Add new parameter `--opentelemetry-logs-port` to change the OTLP port from the default for logs addon.
26+
* `az aks update`: Add new parameter `--opentelemetry-logs-port` to change the OTLP port from the default for logs addon.
27+
* `az aks create`: Add new parameter `--enable-azure-monitor-logs` that is a wrapper to enable-addons -a monitoring.
28+
* `az aks update`: Add new parameter `--enable-azure-monitor-logs` that is a wrapper to enable-addons -a monitoring.
29+
* `az aks update`: Add new parameter `--disable-azure-monitor-logs` that is a wrapper to disable-addons -a monitoring.
30+
1531
19.0.0b1
1632
+++++++
1733
* [BREAKING CHANGE]: `az aks create`: remove `--enable-custom-ca-trust` and `--disable-custom-ca-trust` options

src/aks-preview/azext_aks_preview/_consts.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@
172172

173173
# monitoring
174174
CONST_MONITORING_ADDON_NAME = "omsagent"
175+
CONST_MONITORING_ADDON_NAME_CAMELCASE = "omsAgent"
175176
CONST_MONITORING_LOG_ANALYTICS_WORKSPACE_RESOURCE_ID = "logAnalyticsWorkspaceResourceID"
176177
CONST_MONITORING_USING_AAD_MSI_AUTH = "useAADAuth"
177178

src/aks-preview/azext_aks_preview/_help.py

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@
181181
- gitops : enable GitOps (PREVIEW).
182182
- azure-keyvault-secrets-provider : enable Azure Keyvault Secrets Provider addon.
183183
- web_application_routing : enable the App Routing addon (PREVIEW). Specify "--dns-zone-resource-id" to configure DNS.
184+
- name: --enable-azure-monitor-logs
185+
type: bool
186+
short-summary: Enable Azure Monitor logs for the cluster.
187+
long-summary: This is equivalent to using "--enable-addons monitoring". Turn on Log Analytics monitoring. Uses the Log Analytics Default Workspace if it exists, else creates one. Specify "--workspace-resource-id" to use an existing workspace. If monitoring addon is enabled --no-wait argument will have no effect
184188
- name: --disable-rbac
185189
type: bool
186190
short-summary: Disable Kubernetes Role-Based Access Control.
@@ -587,6 +591,24 @@
587591
- name: --enable-azure-monitor-app-monitoring
588592
type: bool
589593
short-summary: Enable Azure Monitor Application Monitoring
594+
- name: --enable-opentelemetry-metrics
595+
type: bool
596+
short-summary: Enable OpenTelemetry metrics collection. Requires Azure Monitor metrics to be enabled.
597+
- name: --opentelemetry-metrics-port
598+
type: int
599+
short-summary: Port for OpenTelemetry metrics collection (default port will be used if not specified)
600+
- name: --disable-opentelemetry-metrics
601+
type: bool
602+
short-summary: Disable OpenTelemetry metrics collection
603+
- name: --enable-opentelemetry-logs
604+
type: bool
605+
short-summary: Enable OpenTelemetry logs collection. Requires Azure Monitor logs to be enabled.
606+
- name: --opentelemetry-logs-port
607+
type: int
608+
short-summary: Port for OpenTelemetry logs collection (default port will be used if not specified)
609+
- name: --disable-opentelemetry-logs
610+
type: bool
611+
short-summary: Disable OpenTelemetry logs collection
590612
- name: --nodepool-labels
591613
type: string
592614
short-summary: The node labels for all node pools in this cluster. See https://aka.ms/node-labels for syntax of labels.
@@ -737,6 +759,16 @@
737759
text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-azuremonitormetrics
738760
- name: Create a kubernetes cluster with Azure Monitor App Monitoring enabled
739761
text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-azure-monitor-app-monitoring
762+
- name: Create a kubernetes cluster with OpenTelemetry metrics collection enabled
763+
text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-opentelemetry-metrics --enable-azuremonitormetrics
764+
- name: Create a kubernetes cluster with OpenTelemetry logs collection enabled
765+
text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-opentelemetry-logs --enable-addons monitoring
766+
- name: Create a kubernetes cluster with Azure Monitor logs enabled (shorthand)
767+
text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-azure-monitor-logs
768+
- name: Create a kubernetes cluster with OpenTelemetry metrics on custom port
769+
text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-opentelemetry-metrics --opentelemetry-metrics-port 8888 --enable-azuremonitormetrics
770+
- name: Create a kubernetes cluster with OpenTelemetry logs on custom port
771+
text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-opentelemetry-logs --opentelemetry-logs-port 4317 --enable-azure-monitor-logs
740772
- name: Create a kubernetes cluster with a nodepool having ip allocation mode set to "StaticBlock"
741773
text: az aks create -g MyResourceGroup -n MyManagedCluster --os-sku Ubuntu --max-pods MaxPodsPerNode --network-plugin azure --vnet-subnet-id /subscriptions/00000/resourceGroups/AnotherResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVnet/subnets/NodeSubnet --pod-subnet-id /subscriptions/00000/resourceGroups/AnotherResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVnet/subnets/PodSubnet --pod-ip-allocation-mode StaticBlock
742774
- name: Create a kubernetes cluster with a VirtualMachines nodepool
@@ -961,6 +993,32 @@
961993
- name: --disable-workload-identity
962994
type: bool
963995
short-summary: (PREVIEW) Disable Workload Identity addon for cluster.
996+
- name: --enable-azure-monitor-logs
997+
type: bool
998+
short-summary: Enable Azure Monitor logs for the cluster.
999+
long-summary: This is equivalent to using "az aks enable-addons -a monitoring". Enables Log Analytics monitoring for the cluster. Uses the Log Analytics Default Workspace if it exists, else creates one. Specify "--workspace-resource-id" to use an existing workspace. If monitoring addon is enabled --no-wait argument will have no effect
1000+
- name: --disable-azure-monitor-logs
1001+
type: bool
1002+
short-summary: Disable Azure Monitor logs for the cluster.
1003+
long-summary: This is equivalent to using "az aks disable-addons -a monitoring". Disables Log Analytics monitoring for the cluster.
1004+
- name: --workspace-resource-id
1005+
type: string
1006+
short-summary: The resource ID of an existing Log Analytics Workspace to use for storing monitoring data. If not specified, uses the default Log Analytics Workspace if it exists, otherwise creates one.
1007+
- name: --enable-msi-auth-for-monitoring
1008+
type: bool
1009+
short-summary: Send monitoring data to Log Analytics using the cluster's assigned identity (instead of the Log Analytics Workspace's shared key).
1010+
- name: --enable-syslog
1011+
type: bool
1012+
short-summary: Enable syslog data collection for Monitoring addon
1013+
- name: --data-collection-settings
1014+
type: string
1015+
short-summary: Path to JSON file containing data collection settings for Monitoring addon.
1016+
- name: --enable-high-log-scale-mode
1017+
type: bool
1018+
short-summary: Enable High Log Scale Mode for Container Logs.
1019+
- name: --ampls-resource-id
1020+
type: string
1021+
short-summary: Resource ID of Azure Monitor Private Link scope for Monitoring Addon.
9641022
- name: --enable-secret-rotation
9651023
type: bool
9661024
short-summary: Enable secret rotation. Use with azure-keyvault-secrets-provider addon.
@@ -1184,6 +1242,24 @@
11841242
- name: --disable-azure-monitor-app-monitoring
11851243
type: bool
11861244
short-summary: Disable Azure Monitor Application Monitoring
1245+
- name: --enable-opentelemetry-metrics
1246+
type: bool
1247+
short-summary: Enable OpenTelemetry metrics collection. Requires Azure Monitor metrics to be enabled.
1248+
- name: --opentelemetry-metrics-port
1249+
type: int
1250+
short-summary: Port for OpenTelemetry metrics collection (default port will be used if not specified)
1251+
- name: --disable-opentelemetry-metrics
1252+
type: bool
1253+
short-summary: Disable OpenTelemetry metrics collection
1254+
- name: --enable-opentelemetry-logs
1255+
type: bool
1256+
short-summary: Enable OpenTelemetry logs collection. Requires Azure Monitor logs to be enabled.
1257+
- name: --opentelemetry-logs-port
1258+
type: int
1259+
short-summary: Port for OpenTelemetry logs collection (default port will be used if not specified)
1260+
- name: --disable-opentelemetry-logs
1261+
type: bool
1262+
short-summary: Disable OpenTelemetry logs collection
11871263
- name: --enable-private-cluster
11881264
type: bool
11891265
short-summary: Enable private cluster for apiserver vnet integration cluster.
@@ -1379,8 +1455,24 @@
13791455
text: az aks update -g MyResourceGroup -n MyManagedCluster --safeguards-level Warning
13801456
- name: Update a kubernetes cluster with safeguards set to "Warning" and some namespaces excluded. Assumes azure policy addon is already enabled
13811457
text: az aks update -g MyResourceGroup -n MyManagedCluster --safeguards-level Warning --safeguards-excluded-ns ns1,ns2
1458+
- name: Enable Azure Monitor logs for a kubernetes cluster
1459+
text: az aks update -g MyResourceGroup -n MyManagedCluster --enable-azure-monitor-logs
1460+
- name: Disable Azure Monitor logs for a kubernetes cluster
1461+
text: az aks update -g MyResourceGroup -n MyManagedCluster --disable-azure-monitor-logs
13821462
- name: Update a kubernetes cluster to clear any namespaces excluded from safeguards. Assumes azure policy addon is already enabled
13831463
text: az aks update -g MyResourceGroup -n MyManagedCluster --safeguards-excluded-ns ""
1464+
- name: Enable OpenTelemetry metrics collection on an existing cluster
1465+
text: az aks update -g MyResourceGroup -n MyManagedCluster --enable-opentelemetry-metrics
1466+
- name: Enable OpenTelemetry logs collection on an existing cluster
1467+
text: az aks update -g MyResourceGroup -n MyManagedCluster --enable-opentelemetry-logs
1468+
- name: Configure OpenTelemetry metrics with custom port
1469+
text: az aks update -g MyResourceGroup -n MyManagedCluster --enable-opentelemetry-metrics --opentelemetry-metrics-port 8888
1470+
- name: Configure OpenTelemetry logs with custom port
1471+
text: az aks update -g MyResourceGroup -n MyManagedCluster --enable-opentelemetry-logs --opentelemetry-logs-port 4317
1472+
- name: Disable OpenTelemetry metrics collection on an existing cluster
1473+
text: az aks update -g MyResourceGroup -n MyManagedCluster --disable-opentelemetry-metrics
1474+
- name: Disable OpenTelemetry logs collection on an existing cluster
1475+
text: az aks update -g MyResourceGroup -n MyManagedCluster --disable-opentelemetry-logs
13841476
"""
13851477

13861478
helps['aks kollect'] = """

src/aks-preview/azext_aks_preview/_params.py

Lines changed: 129 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@
176176
validate_assign_kubelet_identity,
177177
validate_azure_keyvault_kms_key_id,
178178
validate_azure_keyvault_kms_key_vault_resource_id,
179+
validate_azure_monitor_and_opentelemetry_for_create,
180+
validate_azure_monitor_and_opentelemetry_for_update,
181+
validate_azure_monitor_logs_and_enable_addons,
182+
validate_azure_monitor_logs_enable_disable,
179183
validate_azuremonitorworkspaceresourceid,
180184
validate_cluster_id,
181185
validate_cluster_snapshot_id,
@@ -749,6 +753,12 @@ def load_arguments(self, _):
749753
options_list=["--enable-addons", "-a"],
750754
validator=validate_addons,
751755
)
756+
c.argument(
757+
"enable_azure_monitor_logs",
758+
action="store_true",
759+
validator=validate_azure_monitor_logs_and_enable_addons,
760+
help="Enable Azure Monitor logs for the cluster. Equivalent to '--enable-addons monitoring'."
761+
)
752762
c.argument("workspace_resource_id")
753763
c.argument(
754764
"enable_msi_auth_for_monitoring",
@@ -1028,9 +1038,50 @@ def load_arguments(self, _):
10281038
c.argument("ksm_metric_annotations_allow_list")
10291039
c.argument("grafana_resource_id", validator=validate_grafanaresourceid)
10301040
c.argument("enable_windows_recording_rules", action="store_true")
1031-
c.argument("enable_azure_monitor_app_monitoring", is_preview=True, action="store_true")
1032-
c.argument("enable_cost_analysis", action="store_true")
1033-
c.argument('enable_ai_toolchain_operator', is_preview=True, action='store_true')
1041+
c.argument("enable_azure_monitor_app_monitoring",
1042+
is_preview=True,
1043+
action="store_true"
1044+
)
1045+
# OpenTelemetry parameters
1046+
c.argument("enable_opentelemetry_metrics",
1047+
is_preview=True,
1048+
action="store_true",
1049+
help="Enable OpenTelemetry metrics collection",
1050+
validator=validate_azure_monitor_and_opentelemetry_for_create
1051+
)
1052+
c.argument("opentelemetry_metrics_port",
1053+
is_preview=True,
1054+
type=int,
1055+
help="Port for OpenTelemetry metrics collection"
1056+
)
1057+
c.argument("disable_opentelemetry_metrics",
1058+
is_preview=True,
1059+
action="store_true",
1060+
help="Disable OpenTelemetry metrics collection"
1061+
)
1062+
c.argument("enable_opentelemetry_logs",
1063+
options_list=["--enable-opentelemetry-logs"],
1064+
is_preview=True,
1065+
action="store_true",
1066+
help="Enable OpenTelemetry logs collection"
1067+
)
1068+
c.argument("opentelemetry_logs_port",
1069+
is_preview=True,
1070+
type=int,
1071+
help="Port for OpenTelemetry logs collection"
1072+
)
1073+
c.argument("disable_opentelemetry_logs",
1074+
is_preview=True,
1075+
action="store_true",
1076+
help="Disable OpenTelemetry logs collection"
1077+
)
1078+
c.argument("enable_cost_analysis",
1079+
action="store_true"
1080+
)
1081+
c.argument("enable_ai_toolchain_operator",
1082+
is_preview=True,
1083+
action="store_true"
1084+
)
10341085
# azure container storage
10351086
c.argument(
10361087
"enable_azure_container_storage",
@@ -1281,6 +1332,18 @@ def load_arguments(self, _):
12811332
is_preview=True,
12821333
)
12831334
# addons
1335+
c.argument(
1336+
"enable_azure_monitor_logs",
1337+
action="store_true",
1338+
validator=validate_azure_monitor_logs_enable_disable,
1339+
help="Enable Azure Monitor logs for the cluster. Equivalent to 'az aks enable-addons -a monitoring'."
1340+
)
1341+
# Monitoring parameters are inherited from base CLI
1342+
c.argument(
1343+
"disable_azure_monitor_logs",
1344+
action="store_true",
1345+
help="Disable Azure Monitor logs for the cluster. Equivalent to 'az aks disable-addons -a monitoring'."
1346+
)
12841347
c.argument("enable_secret_rotation", action="store_true")
12851348
c.argument("disable_secret_rotation", action="store_true")
12861349
c.argument("rotation_poll_interval")
@@ -1407,9 +1470,69 @@ def load_arguments(self, _):
14071470
hide=True,
14081471
),
14091472
)
1410-
c.argument("disable_azure_monitor_metrics", action="store_true")
1411-
c.argument("enable_azure_monitor_app_monitoring", action="store_true", is_preview=True)
1412-
c.argument("disable_azure_monitor_app_monitoring", action="store_true", is_preview=True)
1473+
c.argument("enable_azure_monitor_app_monitoring",
1474+
action="store_true",
1475+
is_preview=True
1476+
)
1477+
c.argument("disable_azure_monitor_app_monitoring",
1478+
action="store_true",
1479+
is_preview=True
1480+
)
1481+
# Azure Monitor logs additional parameters
1482+
c.argument("workspace_resource_id",
1483+
help="Resource ID of the Azure Log Analytics workspace to use for monitoring")
1484+
c.argument(
1485+
"enable_msi_auth_for_monitoring",
1486+
arg_type=get_three_state_flag(),
1487+
is_preview=True,
1488+
help="Enable managed identity authentication for Azure Monitor logs"
1489+
)
1490+
c.argument("enable_syslog",
1491+
arg_type=get_three_state_flag(),
1492+
is_preview=True,
1493+
help="Enable syslog collection for Azure Monitor logs")
1494+
c.argument("data_collection_settings",
1495+
is_preview=True,
1496+
help="Data collection settings for Azure Monitor logs")
1497+
c.argument("enable_high_log_scale_mode",
1498+
arg_type=get_three_state_flag(),
1499+
is_preview=True,
1500+
help="Enable high log scale mode for Azure Monitor logs")
1501+
c.argument("ampls_resource_id",
1502+
is_preview=True,
1503+
help="Resource ID of the Azure Monitor Private Link Scope to associate with the cluster")
1504+
# OpenTelemetry parameters
1505+
c.argument("enable_opentelemetry_metrics",
1506+
is_preview=True,
1507+
action="store_true",
1508+
help="Enable OpenTelemetry metrics collection",
1509+
validator=validate_azure_monitor_and_opentelemetry_for_update
1510+
)
1511+
c.argument("opentelemetry_metrics_port",
1512+
is_preview=True,
1513+
type=int,
1514+
help="Port for OpenTelemetry metrics collection"
1515+
)
1516+
c.argument("disable_opentelemetry_metrics",
1517+
is_preview=True,
1518+
action="store_true",
1519+
help="Disable OpenTelemetry metrics collection"
1520+
)
1521+
c.argument("enable_opentelemetry_logs",
1522+
is_preview=True,
1523+
action="store_true",
1524+
help="Enable OpenTelemetry logs collection"
1525+
)
1526+
c.argument("opentelemetry_logs_port",
1527+
is_preview=True,
1528+
type=int,
1529+
help="Port for OpenTelemetry logs collection"
1530+
)
1531+
c.argument("disable_opentelemetry_logs",
1532+
is_preview=True,
1533+
action="store_true",
1534+
help="Disable OpenTelemetry logs collection"
1535+
)
14131536
c.argument(
14141537
"enable_vpa",
14151538
action="store_true",

0 commit comments

Comments
 (0)