Можно ли передавать показатели виртуальной машины Azure в концентратор событий, не касаясь компьютера? - PullRequest
0 голосов
/ 27 июня 2018

В настоящее время я пытаюсь передать метрики виртуальной машины Windows Azure (например, cpu и т. Д.) В концентратор событий.
Я нашел учебник под https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-streaming-azure-diags-data,, но в этом учебнике необходимо изменить конфигурацию каждой системы. Поскольку у нас много систем, это будет означать большие неудобства. В настоящее время нам нужны только те метрики, которые отображаются при нажатии на виртуальную машину в Azure (ПРОЦЕНТНЫЙ ЦП, СЕТЬ ВХОД / ВЫХОД, ДИСК ЧИТАТЬ / ЗАПИСАТЬ БАЙТЫ, ДИСК ЧИТАТЬ ОПЕРАЦИИ). нам уже удалось отправить оповещения на основе этих показателей через приложение логики.

1 Ответ

0 голосов
/ 29 июня 2018

Можно ли передавать метрики виртуальной машины Azure в концентратор событий, не касаясь машины?

Да, мы можем получить метрику с помощью библиотеки Microsoft.Azure.Management.Monitor.Fluent t. Вы можете обратиться к этой SO thread , чтобы получить демонстрационный код. Мы также можем получить другие имена поддерживаемых метрик из Поддерживаемые метрики с Azure Monitor .

var azureTenantId = "tenant id";
var azureSecretKey = "secret key";
var azureAppId = "client id";
var subscriptionId = "subscription id";
var resourceGroup = "resource group";
var machineName = "machine name";
var serviceCreds = ApplicationTokenProvider.LoginSilentAsync(azureTenantId, azureAppId, azureSecretKey).Result;
MonitorClient monitorClient = new MonitorClient(serviceCreds) { SubscriptionId = subscriptionId };
 var resourceUrl = $"subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/virtualMachines/{machineName}";
 var metricNames = "(name.value eq 'Disk Write Operations/Sec' or  name.value eq 'Percentage CPU' or  name.value eq 'Network In' or  name.value eq 'Network Out' or  name.value eq 'Disk Read Operations/Sec' or  name.value eq 'Disk Read Bytes' or  name.value eq 'Disk Write Bytes')"; 
 string timeGrain = " and timeGrain eq duration'PT5M'";
 string startDate = " and startTime eq 2017-10-26T05:28:34.919Z";
 string endDate = " and endTime eq 2017-10-26T05:33:34.919Z";
 var odataFilterMetrics = new ODataQuery<MetricInner>(
                $"{metricNames}{timeGrain}{startDate}{endDate}");

 var metrics = monitorClient.Metrics.ListWithHttpMessagesAsync(resourceUrl, odataFilterMetrics).Result;

А как отправить сообщение в концентратор событий, обратитесь к этому учебнику .

...