Назначьте пространство имен и измерение для Azure Application Insights для пользовательского показателя из Java - PullRequest
0 голосов
/ 10 октября 2018

Я отправляю пользовательские метрики из моего Java-приложения в Azure Application Insights.Каждые несколько секунд поток просыпается, получает метрики из приложения и отправляет их в Azure.Вот пример кода, как я это делаю:

TelemetryClient telemetryClient = new TelemetryClient();
MetricTelemetry telemetry = new MetricTelemetry();
telemetry.setTimestamp(metricbean.getMetricTimestamp());
telemetry.setName("My custom metric");
telemetry.setValue( metricbean.getValue());
telemetry.setCount(1);
telemetryClient.trackMetric(telemetry);

Я вижу метрики на портале Azure, и это хорошо.Предполагается, что Azure поддерживает измерения и пространства имен.Как я могу установить это, используя TelemetryClient API в Java?

Кроме того, есть ли способ проверить код возврата?Метод trackMetric () является недействительным и не выдает никаких проверенных исключений?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Хотя не в Java, у меня была та же проблема с использованием Microsoft.AI.PerfCounterCollector в C #.

В основном приходится создавать собственный TelemetryInitializer и добавлять его в конфигурацию приложения.

Пример добавления инициализатора через C #:

AppInsightsConfig = TelemetryConfiguration.Active;

AppInsightsConfig.TelemetryInitializers.Add(new AppInsightsCloudIdInitializer());

Пример пользовательского AppInsightsCloudIdInitializer:

public class AppInsightsCloudIdInitializer : ITelemetryInitializer
{
    private readonly string CloudRoleName;
    private readonly string CloudRoleInstance;

    public AppInsightsCloudIdInitializer()
    {
        CloudRoleName = "MyRole";
        CloudRoleInstance = "MyInstance";
    }

    public void Initialize(ITelemetry telemetry)
    {
        if (telemetry is MetricTelemetry metric)
        {
            metric.MetricNamespace = CloudRoleName;
        }
        if (string.IsNullOrWhiteSpace(telemetry.Context.Cloud.RoleInstance) || string.IsNullOrWhiteSpace(telemetry.Context.Cloud.RoleName))
        {
            telemetry.Context.Cloud.RoleInstance = CloudRoleInstance;
            telemetry.Context.Cloud.RoleName = CloudRoleName;
        }
    }
}
0 голосов
/ 13 октября 2018

Вы можете добавить свойства в MetricTelemetry, используя следующий метод.

telemetry.getProperties.putIfAbsent(key, value);

trackMetric () является пустым типом, и это предусмотрено проектом.Если вы включите SDKLogs, добавив следующий тег в ApplicationInsights.xml, вы увидите сообщение об ошибке, когда сервер ответит кодом ошибки.SDK также повторяет определенные коды ошибок.

Чтобы просмотреть пользовательские измерения в обозревателе метрик, необходимо перейти в раздел «Использование и расчетная стоимость» и проверить раздел предварительного просмотра пользовательских метрик.

enter image description here

Обратите внимание, что указанные выше шаги для включения пользовательских метрик необходимы только для их просмотра в исследовании метрик на портале Azure.Вы все еще можете использовать плитку Analytics для просмотра метрик с пользовательскими измерениями и составления диаграмм с помощью запросов.

...