Search code examples
azure-java-sdk

Azure Data Explorer Metrics


how can i get the "CacheUtilization" metric from "Azure Data Explorer" using java. Are there any JAVA SDKs that help fetch the metrics from "Azure Data Explorer" service?


Solution

  • Regarding the issue, please refer to the following code

    1. Maven
    <dependency>
          <groupId>com.azure</groupId>
          <artifactId>azure-identity</artifactId>
          <version>1.2.4</version>
    
        </dependency>
    
    
        <dependency>
          <groupId>com.azure.resourcemanager</groupId>
          <artifactId>azure-resourcemanager-resources</artifactId>
          <version>2.2.0</version>
        </dependency>
        <dependency>
          <groupId>com.azure.resourcemanager</groupId>
          <artifactId>azure-resourcemanager-monitor</artifactId>
          <version>2.2.0</version>
        </dependency>
    

    code

     String clientId="";
            String clientSecret="";
            String tenant="";
            String subId="";
            AzureProfile profile = new AzureProfile(tenant,subId,AzureEnvironment.AZURE);
            TokenCredential credential = new ClientSecretCredentialBuilder()
                    .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint())
                    .tenantId(tenant)
                    .clientId(clientId)
                    .clientSecret(clientSecret)
                    .build();
            MonitorManager manager = MonitorManager
                    .configure()
                    .withLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)
                    .authenticate(credential,profile);
    
            OffsetDateTime recordDateTime = OffsetDateTime.now();
            for (MetricDefinition metricDefinition : manager.metricDefinitions().listByResource("<the resource id of data exploer>")
                 ) {
    
               if(metricDefinition.name().localizedValue().equalsIgnoreCase("Cache utilization")){
                   MetricCollection metricCollection =  metricDefinition.defineQuery()
                           .startingFrom(recordDateTime.minusDays(7))
                           .endsBefore(recordDateTime)
                           .withAggregation("Average")
                           .withInterval(Duration.ofMinutes(5))
                           .filterByNamespace("microsoft.kusto/clusters")
                           .execute();
                   System.out.println("Metrics for '" + "" + "':");
                   System.out.println("Namespacse: " + metricCollection.namespace());
                   System.out.println("Query time: " + metricCollection.timespan());
                   System.out.println("Time Grain: " + metricCollection.interval());
                   System.out.println("Cost: " + metricCollection.cost());
    
                   for (Metric metric : metricCollection.metrics()) {
                       System.out.println("\tMetric: " + metric.name().localizedValue());
                       System.out.println("\tType: " + metric.type());
                       System.out.println("\tUnit: " + metric.unit());
                       System.out.println("\tTime Series: ");
                       for (TimeSeriesElement timeElement : metric.timeseries()) {
                           System.out.println("\t\tMetadata: ");
                           for (MetadataValueInner metadata : timeElement.metadatavalues()) {
                               System.out.println("\t\t\t" + metadata.name().localizedValue() + ": " + metadata.value());
                           }
                           System.out.println("\t\tData: ");
                           for (MetricValue data : timeElement.data()) {
                               System.out.println("\t\t\t" + data.timestamp()
                                       + " : (Min) " + data.minimum()
                                       + " : (Max) " + data.maximum()
                                       + " : (Avg) " + data.average()
                                       + " : (Total) " + data.total()
                                       + " : (Count) " + data.count());
                           }
                       }
                   }
                   break;
               }
            }