Skip to content

Commit bad69c3

Browse files
authored
Add App Map to App service/function view support (#1868)
* working code * add ostype * address comments and fix smoke test
1 parent 18d5a0d commit bad69c3

File tree

3 files changed

+58
-4
lines changed

3 files changed

+58
-4
lines changed

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/heartbeat/DefaultHeartBeatPropertyProvider.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ public class DefaultHeartBeatPropertyProvider implements HeartBeatPayloadProvide
6060

6161
private static final String PROCESS_SESSION_ID = "processSessionId";
6262

63+
private static final String OS_TYPE = "osType";
64+
6365
public DefaultHeartBeatPropertyProvider() {
6466
defaultFields = new HashSet<>();
6567
initializeDefaultFields(defaultFields);
@@ -86,6 +88,7 @@ public Boolean call() {
8688
hasSetValues = true;
8789
break;
8890
case OS_VERSION:
91+
case OS_TYPE:
8992
provider.addHeartBeatProperty(fieldName, getOsVersion(), true);
9093
hasSetValues = true;
9194
break;
@@ -119,6 +122,7 @@ private static void initializeDefaultFields(Set<String> defaultFields) {
119122
defaultFields.add(SDK_VERSION);
120123
defaultFields.add(OS_VERSION);
121124
defaultFields.add(PROCESS_SESSION_ID);
125+
defaultFields.add(OS_TYPE);
122126
}
123127

124128
/** Returns the JDK version being used by the application. */

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/heartbeat/WebAppsHeartbeatProvider.java

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
package com.microsoft.applicationinsights.agent.internal.heartbeat;
2323

24+
import com.microsoft.applicationinsights.agent.internal.common.Strings;
2425
import java.util.HashSet;
2526
import java.util.Map;
2627
import java.util.Set;
@@ -52,6 +53,12 @@ public class WebAppsHeartbeatProvider implements HeartBeatPayloadProviderInterfa
5253

5354
private static final String WEBSITE_HOME_STAMPNAME = "appSrv_wsStamp";
5455

56+
private static final String WEBSITE_OWNER_NAME = "appSrv_wsOwner";
57+
58+
private static final String WEBSITE_RESOURCE_GROUP = "appSrv_ResourceGroup";
59+
// Only populated in Azure functions
60+
private static final String WEBSITE_SLOT_NAME = "appSrv_SlotName";
61+
5562
/** Constructor that initializes fields and load environment variables. */
5663
public WebAppsHeartbeatProvider() {
5764
defaultFields = new HashSet<>();
@@ -76,28 +83,52 @@ public Boolean call() {
7683
switch (fieldName) {
7784
case WEBSITE_SITE_NAME:
7885
String webSiteName = getWebsiteSiteName();
79-
if (webSiteName == null) {
86+
if (Strings.isNullOrEmpty(webSiteName)) {
8087
break;
8188
}
8289
provider.addHeartBeatProperty(fieldName, webSiteName, true);
8390
hasSetValues = true;
8491
break;
8592
case WEBSITE_HOSTNAME:
8693
String webSiteHostName = getWebsiteHostName();
87-
if (webSiteHostName == null) {
94+
if (Strings.isNullOrEmpty(webSiteHostName)) {
8895
break;
8996
}
9097
provider.addHeartBeatProperty(fieldName, webSiteHostName, true);
9198
hasSetValues = true;
9299
break;
93100
case WEBSITE_HOME_STAMPNAME:
94101
String websiteHomeStampName = getWebsiteHomeStampName();
95-
if (websiteHomeStampName == null) {
102+
if (Strings.isNullOrEmpty(websiteHomeStampName)) {
96103
break;
97104
}
98105
provider.addHeartBeatProperty(fieldName, websiteHomeStampName, true);
99106
hasSetValues = true;
100107
break;
108+
case WEBSITE_OWNER_NAME:
109+
String websiteOwnerName = getWebsiteOwnerName();
110+
if (Strings.isNullOrEmpty(websiteOwnerName)) {
111+
break;
112+
}
113+
provider.addHeartBeatProperty(fieldName, websiteOwnerName, true);
114+
hasSetValues = true;
115+
break;
116+
case WEBSITE_RESOURCE_GROUP:
117+
String websiteResourceGroup = getWebsiteResourceGroup();
118+
if (Strings.isNullOrEmpty(websiteResourceGroup)) {
119+
break;
120+
}
121+
provider.addHeartBeatProperty(fieldName, websiteResourceGroup, true);
122+
hasSetValues = true;
123+
break;
124+
case WEBSITE_SLOT_NAME:
125+
String websiteSlotName = getWebsiteSlotName();
126+
if (Strings.isNullOrEmpty(websiteSlotName)) {
127+
break;
128+
}
129+
provider.addHeartBeatProperty(fieldName, websiteSlotName, true);
130+
hasSetValues = true;
131+
break;
101132
default:
102133
logger.trace("Unknown web apps property encountered");
103134
break;
@@ -118,6 +149,9 @@ private static void initializeDefaultFields(Set<String> defaultFields) {
118149
defaultFields.add(WEBSITE_SITE_NAME);
119150
defaultFields.add(WEBSITE_HOSTNAME);
120151
defaultFields.add(WEBSITE_HOME_STAMPNAME);
152+
defaultFields.add(WEBSITE_OWNER_NAME);
153+
defaultFields.add(WEBSITE_RESOURCE_GROUP);
154+
defaultFields.add(WEBSITE_SLOT_NAME);
121155
}
122156

123157
/** Returns the name of the website by reading environment variable. */
@@ -135,6 +169,21 @@ private String getWebsiteHomeStampName() {
135169
return environmentMap.get("WEBSITE_HOME_STAMPNAME");
136170
}
137171

172+
/** Returns the website owner name by reading environment variable. */
173+
private String getWebsiteOwnerName() {
174+
return environmentMap.get("WEBSITE_OWNER_NAME");
175+
}
176+
177+
/** Returns the website resource group by reading environment variable. */
178+
private String getWebsiteResourceGroup() {
179+
return environmentMap.get("WEBSITE_RESOURCE_GROUP");
180+
}
181+
182+
/** Returns the website slot name by reading environment variable. */
183+
private String getWebsiteSlotName() {
184+
return environmentMap.get("WEBSITE_SLOT_NAME");
185+
}
186+
138187
/**
139188
* This method updates the environment variable at every call to add the payload, to cover hotswap
140189
* scenarios.

test/smoke/testApps/HeartBeat/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/HeartBeatTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ public void testHeartBeat() throws Exception {
4848
assertNotNull(data.getProperties().get("sdkVersion"));
4949
assertNotNull(data.getProperties().get("osVersion"));
5050
assertNotNull(data.getProperties().get("processSessionId"));
51-
assertEquals(4, data.getProperties().size());
51+
assertNotNull(data.getProperties().get("osType"));
52+
assertEquals(5, data.getProperties().size());
5253
}
5354

5455
private static Predicate<Envelope> getMetricPredicate(String name) {

0 commit comments

Comments
 (0)