библиотека анализа предупреждений azure c#

#c# #json #azure-functions

Вопрос:

мне поручено проанализировать предупреждения azure и извлечь соответствующую информацию из предупреждений azure. Существует ли какой-либо пакет nuget, который анализирует предупреждения azure и извлекает группу ресурсов/подписку/имя ресурса и сведения о предупреждениях ? Вот пример формата оповещения

{ «schemaId»: «Azuremonitorcommon», «данные»: { «основы»: { «Предупреждение»: «/подписки/63b6a1c5-3552-4676-8073-c31e2641f787/поставщики/Microsoft.Управление предупреждениями/оповещения/7cf70adc-c221-467c-bcfe-bab9e33d98b2», «Предупреждение»: «AlertMetricCPUPercentage», «серьезность»: «Sev0», «Тип сигнала»: «Показатель», «Состояние монитора»: «Уволен», «Служба мониторинга»: «Платформа», «Параметры оповещения»: [ «/subscriptions/63b6a1c5-3552-4676-8073-c31e2641f787/resourcegroups/bridge/providers/microsoft.compute/virtualmachines/vm01» ], «Элементы конфигурации»: [ «vm01» ], «originAlertId»: «63b6a1c5-3552-4676-8073-c31e2641f787_microsoft.insights_metricalerts_AlertMetricCPUPercentage_-1419778843», «firedDateTime»: «2021-05-21T18:20:57.1495223 Z», «описание»: «если процент процессора меньше 10%», «Существенная конверсия»: «1.0», «alertContextVersion»: «1.0» }, «alertContext»: { «свойства»: null, «Тип условия»: «MultipleResourceMultipleMetricCriteria», «условие»: { «Размер окна»: «PT5M», «allOf»: [ { «Метрическое имя»: «Процент процессора», «Метрическое пространство»: «Microsoft.Предложение Compute/virtualMachines», «оператор»: «меньше, чем», «порог»: «10», «timeAggregation»: «максимум», «размеры»: [], «metricValue»: 0.95, «webTestName»: нулевой } ], «windowStartTime»: «2021-05-21T18:12:44.375 з», «windowEndTime»: «2021-05-21T18:17:44.375 з» } } } }

Комментарии:

1. Это просто json, вы можете использовать JSON.net

Ответ №1:

Как указано выше, это просто данные JSON, поэтому вам просто нужно создать класс C#, сопоставленный с интересующими вас свойствами, а затем десериализовать данные в объект этого класса.

Вот фрагмент из документов Microsoft по десериализации данных JSON

 using System;
using System.Collections.Generic;
using System.Text.Json;

namespace DeserializeExtra
{
    public class WeatherForecast
    {
        public DateTimeOffset Date { get; set; }
        public int TemperatureCelsius { get; set; }
        public string Summary { get; set; }
        public string SummaryField;
        public IList<DateTimeOffset> DatesAvailable { get; set; }
        public Dictionary<string, HighLowTemps> TemperatureRanges { get; set; }
        public string[] SummaryWords { get; set; }
    }

    public class HighLowTemps
    {
        public int High { get; set; }
        public int Low { get; set; }
    }

    public class Program
    {
        public static void Main()
        {
            string jsonString =
@"{
  ""Date"": ""2019-08-01T00:00:00-07:00"",
  ""TemperatureCelsius"": 25,
  ""Summary"": ""Hot"",
  ""DatesAvailable"": [
    ""2019-08-01T00:00:00-07:00"",
    ""2019-08-02T00:00:00-07:00""
  ],
  ""TemperatureRanges"": {
                ""Cold"": {
                    ""High"": 20,
      ""Low"": -10
                },
    ""Hot"": {
                    ""High"": 60,
      ""Low"": 20
    }
            },
  ""SummaryWords"": [
    ""Cool"",
    ""Windy"",
    ""Humid""
  ]
}
";
                
            WeatherForecast weatherForecast = 
                JsonSerializer.Deserialize<WeatherForecast>(jsonString);

            Console.WriteLine($"Date: {weatherForecast.Date}");
            Console.WriteLine($"TemperatureCelsius: {weatherForecast.TemperatureCelsius}");
            Console.WriteLine($"Summary: {weatherForecast.Summary}");
        }
    }
}
// output:
//Date: 8/1/2019 12:00:00 AM -07:00
//TemperatureCelsius: 25
//Summary: Hot
 

А вот собственно статья
https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to?pivots=dotnet-5-0