Skip to content

Commit 0cff707

Browse files
authored
initial changes, need to figure out monitoring pt parse issue (#42147)
1 parent bb3d2ce commit 0cff707

File tree

7 files changed

+37
-40
lines changed

7 files changed

+37
-40
lines changed

sdk/monitor/azure-monitor-opentelemetry-exporter/src/main/java/com/azure/monitor/opentelemetry/exporter/implementation/quickpulse/QuickPulse.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class QuickPulse {
2626

2727
public static QuickPulse create(HttpPipeline httpPipeline, Supplier<URL> endpointUrl,
2828
Supplier<String> instrumentationKey, @Nullable String roleName, @Nullable String roleInstance,
29-
boolean useNormalizedValueForNonNormalizedCpuPercentage, String sdkVersion) {
29+
String sdkVersion) {
3030

3131
QuickPulse quickPulse = new QuickPulse();
3232

@@ -40,8 +40,7 @@ public static QuickPulse create(HttpPipeline httpPipeline, Supplier<URL> endpoin
4040
} catch (InterruptedException e) {
4141
Thread.currentThread().interrupt();
4242
}
43-
quickPulse.initialize(httpPipeline, endpointUrl, instrumentationKey, roleName, roleInstance,
44-
useNormalizedValueForNonNormalizedCpuPercentage, sdkVersion);
43+
quickPulse.initialize(httpPipeline, endpointUrl, instrumentationKey, roleName, roleInstance, sdkVersion);
4544
});
4645
// the condition below will always be false, but by referencing the executor it ensures the
4746
// executor can't become unreachable in the middle of the execute() method execution above
@@ -65,8 +64,7 @@ public void add(TelemetryItem telemetryItem) {
6564
}
6665

6766
private void initialize(HttpPipeline httpPipeline, Supplier<URL> endpointUrl, Supplier<String> instrumentationKey,
68-
@Nullable String roleName, @Nullable String roleInstance,
69-
boolean useNormalizedValueForNonNormalizedCpuPercentage, String sdkVersion) {
67+
@Nullable String roleName, @Nullable String roleInstance, String sdkVersion) {
7068

7169
String quickPulseId = UUID.randomUUID().toString().replace("-", "");
7270
ArrayBlockingQueue<HttpRequest> sendQueue = new ArrayBlockingQueue<>(256, true);
@@ -83,8 +81,7 @@ private void initialize(HttpPipeline httpPipeline, Supplier<URL> endpointUrl, Su
8381
instanceName = "Unknown host";
8482
}
8583

86-
QuickPulseDataCollector collector
87-
= new QuickPulseDataCollector(useNormalizedValueForNonNormalizedCpuPercentage);
84+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
8885

8986
QuickPulsePingSender quickPulsePingSender = new QuickPulsePingSender(httpPipeline, endpointUrl,
9087
instrumentationKey, roleName, instanceName, machineName, quickPulseId, sdkVersion);

sdk/monitor/azure-monitor-opentelemetry-exporter/src/main/java/com/azure/monitor/opentelemetry/exporter/implementation/quickpulse/QuickPulseDataCollector.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,12 @@ final class QuickPulseDataCollector {
4141
private final AtomicReference<Counters> counters = new AtomicReference<>(null);
4242
private final CpuPerformanceCounterCalculator cpuPerformanceCounterCalculator
4343
= getCpuPerformanceCounterCalculator();
44-
private final boolean useNormalizedValueForNonNormalizedCpuPercentage;
4544

4645
private volatile QuickPulseStatus quickPulseStatus = QuickPulseStatus.QP_IS_OFF;
4746

4847
private volatile Supplier<String> instrumentationKeySupplier;
4948

50-
QuickPulseDataCollector(boolean useNormalizedValueForNonNormalizedCpuPercentage) {
51-
this.useNormalizedValueForNonNormalizedCpuPercentage = useNormalizedValueForNonNormalizedCpuPercentage;
49+
QuickPulseDataCollector() {
5250
}
5351

5452
private static CpuPerformanceCounterCalculator getCpuPerformanceCounterCalculator() {
@@ -319,14 +317,14 @@ class FinalCounters {
319317
final long rdds;
320318
final double rddsDuration;
321319
final int unsuccessfulRdds;
322-
final long memoryCommitted;
323-
final double cpuUsage;
320+
final long processPhysicalMemory;
321+
final double processNormalizedCpuUsage;
324322
final List<QuickPulseDocument> documentList = new ArrayList<>();
325323

326324
private FinalCounters(Counters currentCounters) {
327325

328-
memoryCommitted = getMemoryCommitted(memory);
329-
cpuUsage = getNonNormalizedCpuPercentage(cpuPerformanceCounterCalculator);
326+
processPhysicalMemory = getPhysicalMemory(memory);
327+
processNormalizedCpuUsage = getNormalizedCpuPercentage(cpuPerformanceCounterCalculator);
330328
exceptions = currentCounters.exceptions.get();
331329

332330
CountAndDuration countAndDuration
@@ -344,32 +342,28 @@ private FinalCounters(Counters currentCounters) {
344342
}
345343
}
346344

347-
private long getMemoryCommitted(@Nullable MemoryMXBean memory) {
345+
private long getPhysicalMemory(@Nullable MemoryMXBean memory) {
348346
if (memory == null) {
349347
return -1;
350348
}
351349
MemoryUsage heapMemoryUsage = memory.getHeapMemoryUsage();
352-
if (heapMemoryUsage == null) {
350+
MemoryUsage nonHeapMemoryUsage = memory.getNonHeapMemoryUsage();
351+
if (heapMemoryUsage == null || nonHeapMemoryUsage == null) {
353352
return -1;
354353
}
355-
return heapMemoryUsage.getCommitted();
354+
return heapMemoryUsage.getUsed() + nonHeapMemoryUsage.getUsed();
356355
}
357356

358357
private double
359-
getNonNormalizedCpuPercentage(@Nullable CpuPerformanceCounterCalculator cpuPerformanceCounterCalculator) {
358+
getNormalizedCpuPercentage(@Nullable CpuPerformanceCounterCalculator cpuPerformanceCounterCalculator) {
360359
if (cpuPerformanceCounterCalculator == null) {
361360
return -1;
362361
}
363362
Double cpuDatum = cpuPerformanceCounterCalculator.getCpuPercentage();
364363
if (cpuDatum == null) {
365364
return -1;
366365
}
367-
368-
if (useNormalizedValueForNonNormalizedCpuPercentage) {
369-
// normalize for backwards compatibility even though this is supposed to be non-normalized
370-
cpuDatum /= operatingSystemMxBean.getAvailableProcessors();
371-
}
372-
366+
cpuDatum /= operatingSystemMxBean.getAvailableProcessors();
373367
return cpuDatum;
374368
}
375369
}

sdk/monitor/azure-monitor-opentelemetry-exporter/src/main/java/com/azure/monitor/opentelemetry/exporter/implementation/quickpulse/QuickPulseDataFetcher.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,14 @@ private String buildPostEntity(QuickPulseDataCollector.FinalCounters counters) t
151151
metricsList.add(new QuickPulseMetrics("\\ApplicationInsights\\Dependency Calls Succeeded/Sec",
152152
counters.rdds - counters.unsuccessfulRdds, 1));
153153
metricsList.add(new QuickPulseMetrics("\\ApplicationInsights\\Exceptions/Sec", counters.exceptions, 1));
154-
metricsList.add(new QuickPulseMetrics("\\Memory\\Committed Bytes", counters.memoryCommitted, 1));
155-
metricsList.add(new QuickPulseMetrics("\\Processor(_Total)\\% Processor Time", counters.cpuUsage, 1));
154+
// TODO: remove old memory counter name when service side makes the UI change
155+
metricsList.add(new QuickPulseMetrics("\\Memory\\Committed Bytes", counters.processPhysicalMemory, 1));
156+
metricsList.add(new QuickPulseMetrics("\\Process\\Physical Bytes", counters.processPhysicalMemory, 1));
157+
// TODO: remove old cpu counter name when service side makes the UI change
158+
metricsList
159+
.add(new QuickPulseMetrics("\\Processor(_Total)\\% Processor Time", counters.processNormalizedCpuUsage, 1));
160+
metricsList.add(
161+
new QuickPulseMetrics("\\% Process\\Processor Time Normalized", counters.processNormalizedCpuUsage, 1));
156162

157163
return metricsList;
158164
}

sdk/monitor/azure-monitor-opentelemetry-exporter/src/test/java/com/azure/monitor/opentelemetry/exporter/implementation/quickpulse/QuickPulseCoordinatorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ void testOnlyPings() throws InterruptedException {
1919
QuickPulseDataFetcher mockFetcher = mock(QuickPulseDataFetcher.class);
2020
QuickPulseDataSender mockSender = mock(QuickPulseDataSender.class);
2121
QuickPulsePingSender mockPingSender = mock(QuickPulsePingSender.class);
22-
QuickPulseDataCollector collector = new QuickPulseDataCollector(true);
22+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
2323
Mockito.doReturn(new QuickPulseHeaderInfo(QuickPulseStatus.QP_IS_OFF)).when(mockPingSender).ping(null);
2424

2525
QuickPulseCoordinatorInitData initData = new QuickPulseCoordinatorInitDataBuilder().withDataFetcher(mockFetcher)
@@ -64,7 +64,7 @@ void testOnePingAndThenOnePost() throws InterruptedException {
6464
.thenReturn(new QuickPulseHeaderInfo(QuickPulseStatus.QP_IS_ON),
6565
new QuickPulseHeaderInfo(QuickPulseStatus.QP_IS_OFF));
6666

67-
QuickPulseDataCollector collector = new QuickPulseDataCollector(true);
67+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
6868
QuickPulseCoordinatorInitData initData = new QuickPulseCoordinatorInitDataBuilder().withDataFetcher(mockFetcher)
6969
.withDataSender(mockSender)
7070
.withPingSender(mockPingSender)
@@ -112,7 +112,7 @@ void testOnePingAndThenOnePostWithRedirectedLink() throws InterruptedException {
112112
QuickPulseCoordinatorInitData initData = new QuickPulseCoordinatorInitDataBuilder().withDataFetcher(mockFetcher)
113113
.withDataSender(mockSender)
114114
.withPingSender(mockPingSender)
115-
.withCollector(new QuickPulseDataCollector(true))
115+
.withCollector(new QuickPulseDataCollector())
116116
.withWaitBetweenPingsInMillis(10L)
117117
.withWaitBetweenPostsInMillis(10L)
118118
.withWaitOnErrorInMillis(10L)

sdk/monitor/azure-monitor-opentelemetry-exporter/src/test/java/com/azure/monitor/opentelemetry/exporter/implementation/quickpulse/QuickPulseDataCollectorTests.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ class QuickPulseDataCollectorTests {
2323

2424
@Test
2525
void initialStateIsDisabled() {
26-
assertThat(new QuickPulseDataCollector(true).peek()).isNull();
26+
assertThat(new QuickPulseDataCollector().peek()).isNull();
2727
}
2828

2929
@Test
3030
void emptyCountsAndDurationsAfterEnable() {
31-
QuickPulseDataCollector collector = new QuickPulseDataCollector(true);
31+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
3232

3333
collector.enable(FAKE_CONNECTION_STRING::getInstrumentationKey);
3434
QuickPulseDataCollector.FinalCounters counters = collector.peek();
@@ -37,7 +37,7 @@ void emptyCountsAndDurationsAfterEnable() {
3737

3838
@Test
3939
void nullCountersAfterDisable() {
40-
QuickPulseDataCollector collector = new QuickPulseDataCollector(true);
40+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
4141

4242
collector.enable(FAKE_CONNECTION_STRING::getInstrumentationKey);
4343
collector.disable();
@@ -46,7 +46,7 @@ void nullCountersAfterDisable() {
4646

4747
@Test
4848
void requestTelemetryIsCounted_DurationIsSum() {
49-
QuickPulseDataCollector collector = new QuickPulseDataCollector(true);
49+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
5050

5151
collector.setQuickPulseStatus(QuickPulseStatus.QP_IS_ON);
5252
collector.enable(FAKE_CONNECTION_STRING::getInstrumentationKey);
@@ -88,7 +88,7 @@ void requestTelemetryIsCounted_DurationIsSum() {
8888

8989
@Test
9090
void dependencyTelemetryIsCounted_DurationIsSum() {
91-
QuickPulseDataCollector collector = new QuickPulseDataCollector(true);
91+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
9292

9393
collector.setQuickPulseStatus(QuickPulseStatus.QP_IS_ON);
9494
collector.enable(FAKE_CONNECTION_STRING::getInstrumentationKey);
@@ -130,7 +130,7 @@ void dependencyTelemetryIsCounted_DurationIsSum() {
130130

131131
@Test
132132
void exceptionTelemetryIsCounted() {
133-
QuickPulseDataCollector collector = new QuickPulseDataCollector(true);
133+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
134134

135135
collector.setQuickPulseStatus(QuickPulseStatus.QP_IS_ON);
136136
collector.enable(FAKE_CONNECTION_STRING::getInstrumentationKey);
@@ -204,7 +204,7 @@ private static void assertCountersReset(QuickPulseDataCollector.FinalCounters co
204204

205205
@Test
206206
void checkDocumentsListSize() {
207-
QuickPulseDataCollector collector = new QuickPulseDataCollector(true);
207+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
208208

209209
collector.setQuickPulseStatus(QuickPulseStatus.QP_IS_ON);
210210
collector.enable(FAKE_CONNECTION_STRING::getInstrumentationKey);

sdk/monitor/azure-monitor-opentelemetry-exporter/src/test/java/com/azure/monitor/opentelemetry/exporter/implementation/quickpulse/QuickPulseDataFetcherTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class QuickPulseDataFetcherTests {
2424
@Test
2525
void testGetCurrentSdkVersion() {
2626
ConnectionString connectionString = ConnectionString.parse("InstrumentationKey=testing-123");
27-
QuickPulseDataFetcher dataFetcher = new QuickPulseDataFetcher(new QuickPulseDataCollector(true), null,
27+
QuickPulseDataFetcher dataFetcher = new QuickPulseDataFetcher(new QuickPulseDataCollector(), null,
2828
connectionString::getLiveEndpoint, connectionString::getInstrumentationKey, null, null, null, null);
2929
String sdkVersion = dataFetcher.getCurrentSdkVersion();
3030
assertThat(sdkVersion).isNotNull();
@@ -34,7 +34,7 @@ void testGetCurrentSdkVersion() {
3434
@Test
3535
void endpointIsFormattedCorrectlyWhenUsingConfig() throws URISyntaxException {
3636
ConnectionString connectionString = ConnectionString.parse("InstrumentationKey=testing-123");
37-
QuickPulseDataFetcher quickPulseDataFetcher = new QuickPulseDataFetcher(new QuickPulseDataCollector(true), null,
37+
QuickPulseDataFetcher quickPulseDataFetcher = new QuickPulseDataFetcher(new QuickPulseDataCollector(), null,
3838
connectionString::getLiveEndpoint, connectionString::getInstrumentationKey, null, null, null, null);
3939
String quickPulseEndpoint = quickPulseDataFetcher.getQuickPulseEndpoint();
4040
String endpointUrl = quickPulseDataFetcher.getEndpointUrl(quickPulseEndpoint);
@@ -47,7 +47,7 @@ void endpointIsFormattedCorrectlyWhenUsingConfig() throws URISyntaxException {
4747
@Test
4848
void endpointIsFormattedCorrectlyWhenConfigIsNull() throws URISyntaxException {
4949
ConnectionString connectionString = ConnectionString.parse("InstrumentationKey=testing-123");
50-
QuickPulseDataFetcher quickPulseDataFetcher = new QuickPulseDataFetcher(new QuickPulseDataCollector(true), null,
50+
QuickPulseDataFetcher quickPulseDataFetcher = new QuickPulseDataFetcher(new QuickPulseDataCollector(), null,
5151
connectionString::getLiveEndpoint, connectionString::getInstrumentationKey, null, null, null, null);
5252
String quickPulseEndpoint = quickPulseDataFetcher.getQuickPulseEndpoint();
5353
String endpointUrl = quickPulseDataFetcher.getEndpointUrl(quickPulseEndpoint);

sdk/monitor/azure-monitor-opentelemetry-exporter/src/test/java/com/azure/monitor/opentelemetry/exporter/implementation/quickpulse/QuickPulseIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void testPostRequest() throws InterruptedException {
8787
QuickPulseHeaderInfo quickPulseHeaderInfo = pingSender.ping(null);
8888
QuickPulseDataSender dataSender = new QuickPulseDataSender(
8989
getHttpPipeline(new ValidationPolicy(postCountDown, expectedPostRequestBody)), sendQueue);
90-
QuickPulseDataCollector collector = new QuickPulseDataCollector(true);
90+
QuickPulseDataCollector collector = new QuickPulseDataCollector();
9191
QuickPulseDataFetcher dataFetcher
9292
= new QuickPulseDataFetcher(collector, sendQueue, connectionString::getLiveEndpoint,
9393
connectionString::getInstrumentationKey, null, "instance1", "machine1", null);

0 commit comments

Comments
 (0)