Skip to content

Commit fb8011c

Browse files
authored
Enabled OTel logs and traces support (#1527)
* OTel logs support * Telemetry changes * Resolving comments * Add auto instrument telemetry * Removed additional env vars
1 parent c41071c commit fb8011c

File tree

5 files changed

+65
-19
lines changed

5 files changed

+65
-19
lines changed

build/linux/installer/scripts/livenessprobe.sh

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ then
7070
exit 1
7171
fi
7272

73-
if [[ "${IS_HIGH_LOG_SCALE_MODE}" == "true" || "${AZMON_MULTI_TENANCY_LOGS_SERVICE_MODE}" == "true" ]]; then
74-
(ps -ef | grep "amacoreagent" | grep -v "grep")
75-
if [ $? -ne 0 ]
76-
then
77-
echo "amacoreagent is not running" > /dev/termination-log
78-
exit 1
79-
fi
73+
if [[ "${IS_HIGH_LOG_SCALE_MODE}" == "true" || "${AZMON_MULTI_TENANCY_LOGS_SERVICE_MODE}" == "true" || "${APPMONITORING_OPENTELEMETRYLOGS_ENABLED}" == "true" ]]; then
74+
(ps -ef | grep "amacoreagent" | grep -v "grep")
75+
if [ $? -ne 0 ]
76+
then
77+
echo "amacoreagent is not running when high log scale or OpenTelemetry logs is enabled" > /dev/termination-log
78+
exit 1
79+
fi
8080
fi
8181

8282

kubernetes/ama-logs.yaml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,8 @@ spec:
454454
value: "false"
455455
- name: APPMONITORING_OPENTELEMETRYLOGS_PORT
456456
value: "28331"
457+
- name: AZMON_OPENTELEMETRYLOGS_CONTAINER_PORT
458+
value: "4319"
457459
- name: AZMON_RETINA_FLOW_LOGS_ENABLED
458460
value: "false"
459461
- name: CLUSTER_CLOUD_ENVIRONMENT
@@ -474,6 +476,10 @@ spec:
474476
containerPort: 28330
475477
hostPort: 28330
476478
protocol: TCP
479+
- name: otlp-logs
480+
containerPort: 4319
481+
hostPort: 28331
482+
protocol: TCP
477483
volumeMounts:
478484
- name: kube-api-access
479485
mountPath: /var/run/secrets/kubernetes.io/serviceaccount
@@ -1093,10 +1099,6 @@ spec:
10931099
# value: "true"
10941100
- name: APPMONITORING_AUTOINSTRUMENTATION_ENABLED
10951101
value: "false"
1096-
- name: APPMONITORING_OPENTELEMETRYLOGS_ENABLED
1097-
value: "false"
1098-
- name: APPMONITORING_OPENTELEMETRYLOGS_PORT
1099-
value: "28331"
11001102
- name: AZMON_TELEGRAF_LIVENESSPROBE_ENABLED
11011103
value: "false"
11021104
- name: AZMON_WINDOWS_FLUENT_BIT_ENABLED

kubernetes/linux/main.sh

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ getClusterCloudEnvironment() {
6060
}
6161

6262
startAMACoreAgent() {
63-
echo "AMACoreAgent: Starting AMA Core Agent since High Log scale mode is enabled"
63+
echo "AMACoreAgent: Starting AMA Core Agent since High Log scale or OpenTelemetry logs is enabled"
6464

6565
export AMACALogFileDir="/var/opt/microsoft/linuxmonagent/amaca/log"
6666
export AMACALogFilePath="$AMACALogFileDir"/amaca.log
@@ -79,7 +79,26 @@ startAMACoreAgent() {
7979
echo "export PA_CONFIG_PORT=$PA_CONFIG_PORT"
8080
echo "export CounterDataReportFrequencyInMinutes=$CounterDataReportFrequencyInMinutes"
8181
echo "export AMACALogFilePath=$AMACALogFilePath"
82-
} >> ~/.bashrc
82+
} >> ~/.bashrc
83+
84+
if isOpenTelemetryLogsEnabled; then
85+
export PA_AMCS_PROTOCOL="HttpProtobuf"
86+
export PA_AMCS_HOST="0.0.0.0"
87+
export PA_AMCS_PORT=4319
88+
if [ -n "${AZMON_OPENTELEMETRYLOGS_CONTAINER_PORT}" ]; then
89+
# Convert AZMON_OPENTELEMETRYLOGS_CONTAINER_PORT from string to int
90+
port_int=$((AZMON_OPENTELEMETRYLOGS_CONTAINER_PORT + 0))
91+
if [ "$port_int" -gt 0 ] 2>/dev/null; then
92+
export PA_AMCS_PORT=$port_int
93+
fi
94+
fi
95+
96+
{
97+
echo "export PA_AMCS_PROTOCOL=$PA_AMCS_PROTOCOL"
98+
echo "export PA_AMCS_PORT=$PA_AMCS_PORT"
99+
echo "export PA_AMCS_HOST=$PA_AMCS_HOST"
100+
} >> ~/.bashrc
101+
fi
83102

84103
source ~/.bashrc
85104
/opt/microsoft/azure-mdsd/bin/amacoreagent --configport $PA_CONFIG_PORT --amacalog $AMACALogFilePath --giglaport $PA_DATA_PORT > /dev/null 2>&1 &
@@ -230,6 +249,14 @@ isHighLogScaleMode() {
230249
fi
231250
}
232251

252+
isOpenTelemetryLogsEnabled() {
253+
if [[ "${APPMONITORING_OPENTELEMETRYLOGS_ENABLED}" == "true" ]]; then
254+
true
255+
else
256+
false
257+
fi
258+
}
259+
233260
checkAgentOnboardingStatus() {
234261
local sleepdurationsecs=1
235262
local totalsleptsecs=0
@@ -494,10 +521,10 @@ source common_agent_config_env_var
494521

495522
# check if high log scale mode enabled
496523
if isHighLogScaleMode; then
497-
echo "Enabled High Log Scale Mode"
498-
export IS_HIGH_LOG_SCALE_MODE=true
499-
echo "export IS_HIGH_LOG_SCALE_MODE=$IS_HIGH_LOG_SCALE_MODE" >>~/.bashrc
500-
source ~/.bashrc
524+
echo "Enabled High Log Scale Mode"
525+
export IS_HIGH_LOG_SCALE_MODE=true
526+
echo "export IS_HIGH_LOG_SCALE_MODE=$IS_HIGH_LOG_SCALE_MODE" >>~/.bashrc
527+
source ~/.bashrc
501528
fi
502529

503530
#Parse the configmap to set the right environment variables for agent config.
@@ -1088,7 +1115,7 @@ if [ "${CONTAINER_TYPE}" == "PrometheusSidecar" ]; then
10881115
fi
10891116
else
10901117
echo "starting mdsd in main container..."
1091-
if isHighLogScaleMode; then
1118+
if isHighLogScaleMode || isOpenTelemetryLogsEnabled; then
10921119
startAMACoreAgent
10931120
fi
10941121
export MDSD_ROLE_PREFIX=/var/run/mdsd-ci/default

kubernetes/linux/setup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ rm -rf /usr/lib/ruby/gems/3.3.0/gems/rdoc-6.6.3.1
3737
# remove net-imap gem as it has a known CVE (CVE-2025-43857) and is not used by the agent
3838
gem uninstall net-imap --force
3939

40-
sudo tdnf install -y azure-mdsd-1.35.7
40+
sudo tdnf install -y azure-mdsd-1.37.0
4141
cp -f $TMPDIR/mdsd.xml /etc/mdsd.d
4242
cp -f $TMPDIR/envmdsd /etc/mdsd.d
4343
rm /usr/sbin/telegraf

source/plugins/go/src/telemetry.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,23 @@ func SendContainerLogPluginMetrics(telemetryPushIntervalProperty string) {
292292
telemetryDimensions["isHighLogScaleMode"] = isHighLogScaleMode
293293
}
294294

295+
isOpenTelemetryLogsEnabled := os.Getenv("APPMONITORING_OPENTELEMETRYLOGS_ENABLED")
296+
if isOpenTelemetryLogsEnabled != "" {
297+
telemetryDimensions["OtelLogs"] = isOpenTelemetryLogsEnabled
298+
if strings.EqualFold(isOpenTelemetryLogsEnabled, "true") {
299+
otelLogsPort := os.Getenv("APPMONITORING_OPENTELEMETRYLOGS_PORT")
300+
// Otel node port 28331 is the default port. We will send the port only if it is configured to a different port
301+
if otelLogsPort != "28331" {
302+
telemetryDimensions["OtelLogsPort"] = otelLogsPort
303+
}
304+
isAppMonitoringAutoInstrumentationEnabled := os.Getenv("APPMONITORING_AUTOINSTRUMENTATION_ENABLED")
305+
// By default otel is enabled with App monitoring auto instrumentation so only send the value if it is set to false
306+
if isAppMonitoringAutoInstrumentationEnabled == "false" {
307+
telemetryDimensions["AppMonAutoInstrument"] = "false"
308+
}
309+
}
310+
}
311+
295312
isAzMonMultitenancyEnabled := os.Getenv("AZMON_MULTI_TENANCY_LOG_COLLECTION")
296313
isAzMonMultitenancyAdvancedMode := os.Getenv("AZMON_MULTI_TENANCY_LOG_COLLECTION_ADVANCED_MODE")
297314
isAzMonMultitenancyDefaultFallbackIngestionDisabled := os.Getenv("AZMON_MULTI_TENANCY_FALLBACK_INGESTION_DISABLED")

0 commit comments

Comments
 (0)