@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); }
@Override public Telemetry apply(BaseTelemetry bt) { Preconditions.checkNotNull(bt); PerformanceCounterTelemetry t = (PerformanceCounterTelemetry) bt; final Metric.Builder mb = Metric.newBuilder() .setVer(t.getVer()); if (t.getProperties() != null) mb.putAllProperties(t.getProperties()); String metricName = null; if (t.getCategoryName() != null && t.getCounterName() != null) { metricName = String.format("%s - %s", t.getCategoryName(), t.getCounterName()); } else if (t.getCategoryName() != null) { metricName = t.getCategoryName(); } else if (t.getCounterName() != null) { metricName = t.getCounterName(); } final DataPoint.Builder dpb = DataPoint.newBuilder() .setKind(DataPointType.Measurement) .setValue(t.getValue()); if (metricName != null) dpb.setName(metricName); mb.addMetrics(dpb); mb.putProperties("CustomPerfCounter", "true"); if (t.getInstanceName() != null) mb.putProperties("CounterInstanceName", t.getInstanceName()); return telemetryBuilderWithStandardFields(t).setMetric(mb).build(); } });
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; }
@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); }
public void track(Telemetry telemetry) { if (!(telemetry instanceof PerformanceCounterTelemetry)) { assertFalse(true); } PerformanceCounterTelemetry pct = (PerformanceCounterTelemetry)telemetry; assertTrue(pct.getCategoryName().startsWith("Process(")); assertEquals(Constants.PROCESS_MEM_PC_COUNTER_NAME, pct.getCounterName()); assertEquals("", pct.getInstanceName()); } }
telemetry.setValue(value); InternalLogger.INSTANCE.trace("JMX Metric: %s:%s: %s", telemetry.getCategoryName(), telemetry.getCounterName(), value); telemetryClient.track(telemetry); } catch (Exception e) {
String instanceName = "some-instance"; double value = 45.654; PerformanceCounterTelemetry pc = new PerformanceCounterTelemetry(categoryName, counterName, instanceName, value); pc.getContext().setInstrumentationKey(iKey); pc.getProperties().putAll(props); testCases.add(new Object[]{ "PerformanceCounter, transformed to a metric", getTelemetryBuilder(MetricTelemetry.ENVELOPE_NAME, iKey) .setMetric(Metric.newBuilder() .setVer(pc.getVer()) .addMetrics(DataPoint.newBuilder() .setValue(value)
private void send(TelemetryClient telemetryClient, double value, WindowsPerformanceCounterData data) { PerformanceCounterTelemetry telemetry = new PerformanceCounterTelemetry(data.categoryName, data.counterName, data.instanceName, value); telemetryClient.track(telemetry); }
public void track(Telemetry telemetry) { if (!(telemetry instanceof PerformanceCounterTelemetry)) { assertFalse(true); } PerformanceCounterTelemetry pct = (PerformanceCounterTelemetry)telemetry; assertEquals(Constants.PROCESS_MEM_PC_COUNTER_NAME, pct.getCounterName()); } }
@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 testEmptyCounterName() throws IOException { new PerformanceCounterTelemetry(MOCK_CATEGORY, "", MOCK_INSTANCE, MOCK_VALUE); }
@Test(expected = IllegalArgumentException.class) public void testNullCounterName() throws IOException { new PerformanceCounterTelemetry(MOCK_CATEGORY, null, 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; }