Как я могу запросить «Состояние Azure» с помощью PowerShell?

https://azure.microsoft.com/en-in/status/

У нас есть логика автоматизации, и мы хотим импровизировать, проверив, проверяет ли сервис Azure на сбой. Если нет перебоев, продолжайте автоматизацию.

2
Manjunath Rao 2 Май 2019 в 15:58

3 ответа

Лучший ответ

AFAIK, для получения статуса Azure не существует PowerShell или Rest API. Самое близкое, что я могу найти, - это получить Ресурс Здоровье.

Как это ссылка,

Информация, предоставляемая Resource Health, является более конкретной, чем информация о состоянии Azure или сводной панели Service Health.

Принимая во внимание, что состояние Azure и панель мониторинга работоспособности службы информируют вас о проблемах с обслуживанием, которые затрагивают широкий круг клиентов (например, регион Azure), Resource Health предоставляет более детализированные события, которые относятся только к конкретному ресурсу. Например, если хост неожиданно перезагружается, работоспособность ресурса предупреждает только тех клиентов, чьи виртуальные машины работали на этом хосте.

Кроме того, нет также встроенного PowerShell для получения Resource Health. Если вы хотите получить его через powershell, вы можете попытаться вызвать остальные API Availability Statuses - List By Subscription Id via Invoke-RestMethod.

Образец :

$url = "https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.ResourceHealth/availabilityStatuses?api-version=2015-01-01"
$accesstoken = "eyJ0eXAixxxxxxxxxxxxx4qPcZfMJNLGRLOMeIncWnFnKWA"
$header = @{
    'Authorization' = 'Bearer ' + $accesstoken
}

Invoke-RestMethod –Uri $url –Headers $header –Method GET | ConvertTo-Json

enter image description here

Чтобы получить $accesstoken в приведенной выше команде, самый простой способ - нажать кнопку Try it в doc, войдите в систему и скопируйте токен.

enter image description here

Если вы не хотите использовать этот способ, вы также можете использовать лазурное объявление поток учетных данных клиента для генерации токена доступа. Вот sample, вы можете обратиться к нему. Не забудьте изменить $ARMResource на https://management.azure.com/.

enter image description here

1
Joy Wang 3 Май 2019 в 02:42

У нас есть требование проверять состояние шлюза VPN и запускать электронную почту, что я могу сделать с PowerShell, используя runbook, и теперь они попросили меня проверить состояние лазурного региона, если регион активен, а затем запустить runbook, есть ли способ сделать с приложением логики, кто-то предложил использовать приложение логики.

Спасибо Васудева Редди

0
Dev Reddy 3 Май 2019 в 08:50

В JavaScript (легко PowerShellable):

const feedUrl = 'https://azure.microsoft.com/en-us/status/feed/';

async function isAzureDown() {
    // This is an OPTIONS call
    let response = await fetch(url, { 
        headers: { 'x-requested-with': 'xhr' }
    });
    // This is the GET
    let data = await response.text();
    ready = true;

    return data.search(/<item>/i) != -1 ? true : false;
}

Это вернет true, если в ответе найдены дочерние узлы с именем <item>. Просто пройдите через <item> и верните title и description, если вам это нужно. Если <item> нет, все службы работают, функция возвращает false.

Вот захват из этого канала во время инцидента -

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:az="http://azure.com/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Azure Status</title>
    <link>https://status.azure.com</link>
    <atom:link href="https://status.azure.com" rel="self" type="application/rss+xml" />
    <description>Azure Status</description>
    <pubDate>Wed, 20 Jul 2016 23:48:45 GMT</pubDate>
    <item>
      <title>SQL Database -  East US - Advisory</title>
      <description>Starting at approximately 21:30 UTC on 20 Jul 2016 customers using SQL Database in East US may experience issues accessing services. New connections to existing databases in this region may result in an error or timeout, and existing connections may have been terminated. Engineers are currently investigating and the next update will be provided in 60 minutes or as events warrant.</description>
      <pubDate>Wed, 20 Jul 2016 23:02:32 GMT</pubDate>
      <link>http://status.azure.com</link>
      <category>SQL Database</category>
      <az:tags>
        <az:tag>East US</az:tag>
      </az:tags>
    </item>
  </channel>
</rss>

А вот все круто один -

<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:a10="http://www.w3.org/2005/Atom"
  version="2.0">
  <channel xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <title>Azure Status</title>
    <link>https://azure.microsoft.com/en-us/status/</link>
    <description>Azure Status</description>
    <language>en-US</language>
    <lastBuildDate>Fri, 03 May 2019 08:55:00 Z</lastBuildDate>
  </channel>
</rss>

Да, это ужасно, да, должен быть более простой способ сделать это, также нет поддержки CORS для этой конечной точки канала, поэтому вы не можете сделать это из одностраничного приложения. PowerShell должен быть в порядке.

Пример реализации (пока он длится, домены .wtf стоят небольшого состояния, кто бы знал) -

http://isazuredown.wtf/

Реализация Python здесь -
https://github.com/snobu/azure-ticker

0
evilSnobu 3 Май 2019 в 09:10