Как я могу запросить «Состояние Azure» с помощью powershell - PullRequest
2 голосов
/ 02 мая 2019

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

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

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

Ответы [ 3 ]

1 голос
/ 03 мая 2019

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

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

Информация, предоставляемая Resource Health, является более конкретной, чем информация, предоставляемая статусом Azure или панелью мониторинга работоспособности службы.

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

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

Sample

$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

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

enter image description here

0 голосов
/ 03 мая 2019

В 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>

А вот всеawesome one -

<?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 голосов
/ 03 мая 2019

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

Спасибо vasudeva reddy

...