private void send(TelemetryClient telemetryClient, double value, WindowsPerformanceCounterData data) { PerformanceCounterTelemetry telemetry = new PerformanceCounterTelemetry(data.categoryName, data.counterName, data.instanceName, value); telemetryClient.track(telemetry); }
@Override public void report(TelemetryClient telemetryClient) { MemoryMXBean memoryData = ManagementFactory.getMemoryMXBean(); MemoryUsage heapMemoryUsage = memoryData.getHeapMemoryUsage(); MemoryUsage nonHeapMemoryUsage = memoryData.getNonHeapMemoryUsage(); double memoryBytes = (double)heapMemoryUsage.getUsed(); memoryBytes += (double)nonHeapMemoryUsage.getUsed(); InternalLogger.INSTANCE.trace("Performance Counter: %s %s: %s", getProcessCategoryName(), Constants.PROCESS_MEM_PC_COUNTER_NAME, memoryBytes); Telemetry telemetry = new PerformanceCounterTelemetry( getProcessCategoryName(), Constants.PROCESS_MEM_PC_COUNTER_NAME, SystemInformation.INSTANCE.getProcessId(), memoryBytes); telemetryClient.track(telemetry); } }
@Test(expected = IllegalArgumentException.class) public void testNullCategoryName() throws IOException { new PerformanceCounterTelemetry(null, MOCK_COUNTER, MOCK_INSTANCE, MOCK_VALUE); }
@Test(expected = IllegalArgumentException.class) public void testEmptyCategoryName() throws IOException { new PerformanceCounterTelemetry("", MOCK_COUNTER, MOCK_INSTANCE, MOCK_VALUE); }
@Test(expected = IllegalArgumentException.class) public void testNullCounterName() throws IOException { new PerformanceCounterTelemetry(MOCK_CATEGORY, null, MOCK_INSTANCE, MOCK_VALUE); }
@Test(expected = IllegalArgumentException.class) public void testEmptyCounterName() throws IOException { new PerformanceCounterTelemetry(MOCK_CATEGORY, "", MOCK_INSTANCE, MOCK_VALUE); }
@Override public void report(TelemetryClient telemetryClient) { Double totalAvailableMemory = getTotalAvailableMemory(); if (totalAvailableMemory == null) { return; } InternalLogger.INSTANCE.trace("Sending Performance Counter: %s %s: %s", Constants.TOTAL_MEMORY_PC_CATEGORY_NAME, Constants.TOTAL_MEMORY_PC_COUNTER_NAME, totalAvailableMemory); Telemetry telemetry = new PerformanceCounterTelemetry( Constants.TOTAL_MEMORY_PC_CATEGORY_NAME, Constants.TOTAL_MEMORY_PC_COUNTER_NAME, "", totalAvailableMemory); telemetryClient.track(telemetry); }
@Override public void report(TelemetryClient telemetryClient) { String line = getLineOfData(); if (!Strings.isNullOrEmpty(line)) { String[] rawStringValues = line.split(" "); ArrayList<String> stringValues = new ArrayList<String>(rawStringValues.length - 1); for (int i = 1; i < rawStringValues.length; ++i) { String stringValue = rawStringValues[i]; if (Strings.isNullOrEmpty(stringValue)) { continue; } stringValues.add(stringValue); } String[] array = stringValues.toArray(new String[stringValues.size()]); if (prevCpuCounters == null) { getCountersForTheFirstTime(array); return; } double totalCpuUsage = calculateTotalCpuUsage(array); InternalLogger.INSTANCE.trace("Sending Performance Counter: %s %s %s: %s", Constants.TOTAL_CPU_PC_CATEGORY_NAME, Constants.CPU_PC_COUNTER_NAME, Constants.INSTANCE_NAME_TOTAL, totalCpuUsage); Telemetry telemetry = new PerformanceCounterTelemetry( Constants.TOTAL_CPU_PC_CATEGORY_NAME, Constants.CPU_PC_COUNTER_NAME, Constants.INSTANCE_NAME_TOTAL, totalCpuUsage); telemetryClient.track(telemetry); } }
@Override public void report(TelemetryClient telemetryClient) { long currentCollectionInNanos = System.nanoTime(); Double processIO = getCurrentIOForCurrentProcess(); if (processIO == null) { return; } if (lastCollectionInNanos != -1) { // Not the first time double timeElapsedInSeconds = ((double)(currentCollectionInNanos - lastCollectionInNanos)) / NANOS_IN_SECOND; double value = (processIO - prevProcessIO) / timeElapsedInSeconds; prevProcessIO = processIO; InternalLogger.INSTANCE.trace("Sending Performance Counter: %s %s: %s", getProcessCategoryName(), Constants.PROCESS_IO_PC_COUNTER_NAME, value); Telemetry telemetry = new PerformanceCounterTelemetry( getProcessCategoryName(), Constants.PROCESS_IO_PC_COUNTER_NAME, SystemInformation.INSTANCE.getProcessId(), value); telemetryClient.track(telemetry); } prevProcessIO = processIO; lastCollectionInNanos = currentCollectionInNanos; }
public JmxPerformanceCounter(String categoryName, String counterName, Map<String, Collection<JmxAttributeData>> objectToAttributes) { Preconditions.checkArgument(!Strings.isNullOrEmpty(categoryName), "categoryName should be a valid non-empty value"); Preconditions.checkArgument(!Strings.isNullOrEmpty(counterName), "categoryName should be a valid non-empty value"); Preconditions.checkNotNull(objectToAttributes, "objectToAttributes should be not null"); Preconditions.checkArgument(!objectToAttributes.isEmpty(), "objectToAttributes should be not be empty"); id = categoryName + "." + counterName; telemetry = new PerformanceCounterTelemetry(); telemetry.setCategoryName(categoryName); telemetry.setCounterName(counterName); telemetry.setInstanceName(SystemInformation.INSTANCE.getProcessId()); this.objectToAttributes = objectToAttributes; }
@Override public void report(TelemetryClient telemetryClient) { if (cpuPerformanceCounterCalculator == null) { return; } Double processCpuUsage = cpuPerformanceCounterCalculator.getProcessCpuUsage(); if (processCpuUsage == null) { return; } InternalLogger.INSTANCE.trace("Performance Counter: %s %s: %s", getProcessCategoryName(), Constants.CPU_PC_COUNTER_NAME, processCpuUsage); Telemetry telemetry = new PerformanceCounterTelemetry( getProcessCategoryName(), Constants.CPU_PC_COUNTER_NAME, SystemInformation.INSTANCE.getProcessId(), processCpuUsage); telemetryClient.track(telemetry); } }
@Test public void testCategoryName() throws IOException { PerformanceCounterTelemetry telemetry = new PerformanceCounterTelemetry(MOCK_CATEGORY, MOCK_COUNTER, MOCK_INSTANCE, MOCK_VALUE); String newValue = MOCK_CATEGORY + "new"; telemetry.setCategoryName(newValue); assertEquals(newValue, telemetry.getCategoryName()); verifyJson(telemetry, newValue, MOCK_COUNTER, MOCK_INSTANCE, MOCK_VALUE); }
@Test public void testCounterName() throws IOException { PerformanceCounterTelemetry telemetry = new PerformanceCounterTelemetry(MOCK_CATEGORY, MOCK_COUNTER, MOCK_INSTANCE, MOCK_VALUE); String newValue = MOCK_COUNTER + "new"; telemetry.setCounterName(newValue); assertEquals(newValue, telemetry.getCounterName()); verifyJson(telemetry, MOCK_CATEGORY, newValue, MOCK_INSTANCE, MOCK_VALUE); }
@Test public void testInstanceName() throws IOException { PerformanceCounterTelemetry telemetry = new PerformanceCounterTelemetry(MOCK_CATEGORY, MOCK_COUNTER, MOCK_INSTANCE, MOCK_VALUE); String newValue = MOCK_INSTANCE + "new"; telemetry.setInstanceName(newValue); assertEquals(newValue, telemetry.getInstanceName()); verifyJson(telemetry, MOCK_CATEGORY, MOCK_COUNTER, newValue, MOCK_VALUE); }
@Test public void testValue() throws IOException { PerformanceCounterTelemetry telemetry = new PerformanceCounterTelemetry(MOCK_CATEGORY, MOCK_COUNTER, MOCK_INSTANCE, MOCK_VALUE); double newValue = MOCK_VALUE + 1; telemetry.setValue(newValue); assertEquals(newValue, telemetry.getValue(), 0.0); verifyJson(telemetry, MOCK_CATEGORY, MOCK_COUNTER, MOCK_INSTANCE, newValue); }
@Test public void telemetryBuilderWithStandardFieldsMinimalFields() { String ikey = "123"; for (BaseTelemetry<?> bt : new BaseTelemetry[] { new MetricTelemetry(), new TraceTelemetry(), new ExceptionTelemetry(new RuntimeException("fake")), new RemoteDependencyTelemetry(), new EventTelemetry(), new PageViewTelemetry(), new RequestTelemetry(), new PerformanceCounterTelemetry() }) { String envelopeName = bt instanceof PerformanceCounterTelemetry ? MetricTelemetry.ENVELOPE_NAME : bt.getEnvelopName(); bt.getContext().setInstrumentationKey(ikey); final Date date = new Date(); bt.setTimestamp(date); assertEquals(Telemetry.newBuilder() .setDateTime(LocalStringsUtils.getDateFormatter().format(date)) .setVer(LocalForwarderModelTransformer.CURRENT_ENVELOPE_VERSION) .setInstrumentationKey(ikey) .setDataTypeName(String.format("Microsoft.ApplicationInsights.%s.%s", ikey, envelopeName)).buildPartial(), LocalForwarderModelTransformer.telemetryBuilderWithStandardFields(bt).buildPartial()); } }
@Test public void testStateAfterCtor() throws IOException { PerformanceCounterTelemetry telemetry = new PerformanceCounterTelemetry(MOCK_CATEGORY, MOCK_COUNTER, MOCK_INSTANCE, MOCK_VALUE); assertEquals(MOCK_CATEGORY, telemetry.getCategoryName()); assertEquals(MOCK_COUNTER, telemetry.getCounterName()); assertEquals(MOCK_INSTANCE, telemetry.getInstanceName()); assertEquals(MOCK_VALUE, telemetry.getValue(), 0.0); verifyJson(telemetry, MOCK_CATEGORY, MOCK_COUNTER, MOCK_INSTANCE, MOCK_VALUE); }
new PageViewTelemetry(), new RequestTelemetry(), new PerformanceCounterTelemetry() }) { String envelopeName = bt instanceof PerformanceCounterTelemetry ? MetricTelemetry.ENVELOPE_NAME : bt.getEnvelopName();
String instanceName = "some-instance"; double value = 45.654; PerformanceCounterTelemetry pc = new PerformanceCounterTelemetry(categoryName, counterName, instanceName, value); pc.getContext().setInstrumentationKey(iKey); pc.getProperties().putAll(props);