Отправка журналов диагностики Azure Stack Hub с помощью привилегированной конечной точки

Чтобы запустить Get-AzureStackLog в интегрированной системе, необходимо иметь доступ к привилегированной конечной точке (PEP). Ниже приведен пример скрипта, который можно выполнить с использованием привилегированной конечной точки для сбора журналов. Если вы отменяете выполняющуюся коллекцию журналов, чтобы начать новую, подождите 5 минут перед запуском новой коллекции журналов и введите Remove-PSSession -Session $session.

$ipAddress = "<IP ADDRESS OF THE PEP VM>" # You can also use the machine name instead of IP here.

$password = ConvertTo-SecureString "<CLOUD ADMIN PASSWORD>" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential ("<DOMAIN NAME>\CloudAdmin", $password)

$shareCred = Get-Credential

$session = New-PSSession -ComputerName $ipAddress -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)

$fromDate = (Get-Date).AddHours(-8)
$toDate = (Get-Date).AddHours(-2) # Provide the time that includes the period for your issue

Invoke-Command -Session $session { Get-AzureStackLog -OutputSharePath "<EXTERNAL SHARE ADDRESS>" -OutputShareCredential $using:shareCred -FilterByRole Storage -FromDate $using:fromDate -ToDate $using:toDate}

if ($session) {
    Remove-PSSession -Session $session
}

Примеры

  • Соберите все журналы для всех ролей:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred
    
  • Соберите журналы из ролей VirtualMachines и BareMetal:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal
    
  • Соберите журналы из ролей VirtualMachines и BareMetal с фильтром по дате для файлов журнала за последние 8 часов:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8)
    
  • Соберите журналы из ролей VirtualMachines и BareMetal с фильтром по дате для файлов журнала за период времени между последними 8 и 2 часами:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8) -ToDate (Get-Date).AddHours(-2)
    
  • Соберите журналы из развертываний клиентов, в которых выполняются самостоятельно управляемые кластеры Kubernetes (обработчик AKS) в Azure Stack. Журналы Kubernetes должны храниться в учетной записи хранения клиента в формате, который позволяет применять к ним диапазон времени сбора.

    Get-AzureStackLog -OutputPath <Path> -InputSasUri "<Blob Service Sas URI>" -FromDate "<Beginning of the time range>" -ToDate "<End of the time range>"
    

    Например:

    Get-AzureStackLog -OutputPath C:\KubernetesLogs -InputSasUri "https://<storageAccountName>.blob.core.windows.net/<ContainerName><SAS token>" -FromDate (Get-Date).AddHours(-8) -ToDate (Get-Date).AddHours(-2) 
    
  • Соберите журналы для поставщиков дополнительных ресурсов. Далее приводится общий синтаксис ограничений.

    Get-AzureStackLog -FilterByResourceProvider <<value-add RP name>>
    

    Сбор журналов для поставщика ресурсов SQL:

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    Сбор журналов для поставщика ресурсов MySQL:

    Get-AzureStackLog -FilterByResourceProvider MySQLAdapter
    

    Сбор журналов для Центров событий:

    Get-AzureStackLog -FilterByResourceProvider eventhub
    

    Чтобы собрать журналы для Azure Stack Edge, выполните приведенные далее действия.

    Get-AzureStackLog -FilterByResourceProvide databoxedge
    
  • Соберите журналы и сохраните их в указанном контейнере больших двоичных объектов хранилища Azure. Ниже приведен общий синтаксис данной операции.

    Get-AzureStackLog -OutputSasUri "<Blob service SAS Uri>"
    

    Например:

    Get-AzureStackLog -OutputSasUri "https://<storageAccountName>.blob.core.windows.net/<ContainerName><SAS token>"
    

    Примечание

    Эта процедура удобна для передачи журналов. Даже если общий ресурс SMB недоступен и нет подключения к Интернету, вы можете создать учетную запись хранения больших двоичных объектов в Azure Stack Hub, чтобы передать в нее журналы, а затем извлечь их с помощью клиента.

    Чтобы создать маркер SAS учетной записи хранения, требуются следующие разрешения:

    • доступ к службе хранилища BLOB-объектов;
    • доступ к типу ресурса контейнера.

    Чтобы создать значение универсального кода ресурса SAS, которое будет использоваться для параметра -OutputSasUri, выполните следующие шаги.

    1. Создайте учетную запись хранения, выполните шаги из этой статьи.
    2. Откройте экземпляр Обозревателя службы хранилища Azure.
    3. Подключитесь к учетной записи хранения, созданной во время выполнения шага 1.
    4. Перейдите в Контейнеры больших двоичных объектов в службе хранилища.
    5. Выберите Создать контейнер.
    6. Щелкните правой кнопкой мыши новый контейнер, а затем щелкните Get Shared Access Signature (Получить подписанный URL-адрес).
    7. Выберите допустимое Время начала и Время окончания, зависящее от требований.
    8. Чтобы получить необходимые разрешения, выберите Чтение, Запись и Список.
    9. Нажмите кнопку создания.
    10. Вы получите подписанный URL-адрес. Скопируйте из него URL-адреса и внесите ее в параметр -OutputSasUri.

Рекомендации по настройке параметров

  • Параметры OutputSharePath и OutputShareCredential используются для сохранения журналов в указанном пользователем расположении.

  • Параметры FromDate и ToDate можно использовать для сбора журналов за конкретный период времени. Если эти параметры не указаны, по умолчанию журналы собираются за последние четыре часа.

  • Чтобы фильтровать журналы по имени компьютера, используйте параметр FilterByNode. Пример.

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByNode azs-xrp01
    
  • Используйте параметр FilterByLogType для фильтрации журналов по типу. Доступна фильтрация по файлу, общему ресурсу или по событию Windows. Пример.

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByLogType File
    
  • Задать время ожидания для сбора журналов можно с помощью параметра TimeOutInMinutes. По умолчанию для него задано значение 150 (2,5 часа).

  • Сбор журналов файлов дампа отключен по умолчанию. Чтобы включить его, используйте параметр-переключатель IncludeDumpFile.

  • Сейчас можно использовать параметр FilterByRole, чтобы отфильтровать сбор журналов по следующим ролям.

ACS

ACSBlob

ACSDownloadService

ACSFabric

ACSFrontEnd

ACSMetrics

ACSMigrationService

ACSMonitoringService

ACSSettingsService

ACSTableMaster

ACSTableServer

ACSWac

ADFS

ApplicationController

ASAppGateway

AzureBridge

AzureMonitor

BareMetal

BRP

CA

CacheService

Вычисления

CPI

CRP

DeploymentMachine

DiskRP

Домен

ECE

EventAdminRP

EventRP

ExternalDNS

FabricRing

FabricRingServices

FirstTierAggregationService

FRP

Шлюз

HealthMonitoring

HintingServiceV2

HRP

IBC

InfraServiceController

KeyVaultAdminResourceProvider

KeyVaultControlPlane

KeyVaultDataPlane

KeyVaultInternalControlPlane

KeyVaultInternalDataPlane

KeyVaultNamingService

MDM

MetricsAdminRP

MetricsRP

MetricsServer

MetricsStoreService

MonAdminRP

MonRP

NC

NonPrivilegedAppGateway

NRP

OboService

OEM

OnboardRP

PXE

QueryServiceCoordinator

QueryServiceWorker

SeedRing

SeedRingServices

SLB

SQL

SRP

Память

StorageController

URP

SupportBridgeController

SupportRing

SupportRingServices

SupportBridgeRP

UsageBridge

VirtualMachines

WAS

WASPUBLIC

Дополнительные замечания о журналах диагностики

  • Выполнение команды займет некоторое время в зависимости от того, по какой роли (ролям) собираются журналы. К ключевым факторам также относится промежуток времени, указанный для сбора журналов, а также количество узлов в среде Azure Stack Hub.

  • После завершения сбора журналов проверьте новую папку, созданную в расположении, которое задано в параметре OutputSharePath, указанном в команде.

  • Журналы каждой роли хранятся в отдельных ZIP-файлах. В зависимости от размера собранных журналов роли могут быть разделены на несколько ZIP-файлов. Если необходимо распаковать все файлы такой роли в одну папку, используйте инструмент, поддерживающий массовую распаковку. Выберите все ZIP-файлы для роли и щелкните extract here (Извлечь сюда). Все файлы журналов для этой роли будут распакованы в одну объединенную папку.

  • Файл Get-AzureStackLog_Output.log также создается в папке, содержащей ZIP-файлы журналов. Этот файл представляет собой журнал выходных данных команды, который можно использовать для устранения неполадок во время сбора журналов. Иногда в файле журнала содержатся записи PS>TerminatingError, которые можно безопасно игнорировать, если ожидаемые файлы журналов не отсутствуют после выполнения сбора журналов.

  • Для изучения конкретного сбоя могут понадобиться журналы из нескольких компонентов.

    • Системные журналы и журналы событий для всех виртуальных машин инфраструктуры собираются в роли VirtualMachines .
    • Системные журналы и журналы событий для всех узлов собираются в роли BareMetal .
    • Журналы событий отказоустойчивого кластера и Hyper-V собираются в роли хранилища .
    • Журналы ACS собираются в роли Storage и ACS.

Примечание

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

Invoke-AzureStackOnDemandLog

Командлет Invoke-AzureStackOnDemandLog можно использовать для создания журналов по требованию для определенных ролей (см. список в конце раздела). Журналы, созданные с помощью этого командлета, отсутствуют в комплекте журналов, который вы получаете по умолчанию при выполнении командлета Get-AzureStackLog. Мы рекомендуем собирать эти журналы только по запросу службы технической поддержки Майкрософт.

Сейчас можно использовать параметр -FilterByRole, чтобы отфильтровать сбор журналов по следующим ролям:

  • OEM
  • NC
  • SLB
  • Шлюз

Пример журналов диагностики, собираемых по требованию

$ipAddress = "<IP ADDRESS OF THE PEP VM>" # You can also use the machine name instead of IP here.

$password = ConvertTo-SecureString "<CLOUD ADMIN PASSWORD>" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential ("<DOMAIN NAME>\CloudAdmin", $password)

$shareCred = Get-Credential

$session = New-PSSession -ComputerName $ipAddress -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)

$fromDate = (Get-Date).AddHours(-8)
$toDate = (Get-Date).AddHours(-2) # Provide the time that includes the period for your issue

Invoke-Command -Session $session {
   Invoke-AzureStackOnDemandLog -Generate -FilterByRole "<on-demand role name>" # Provide the supported on-demand role name e.g. OEM, NC, SLB, Gateway
   Get-AzureStackLog -OutputSharePath "<external share address>" -OutputShareCredential $using:shareCred -FilterByRole Storage -FromDate $using:fromDate -ToDate $using:toDate
}

if ($session) {
   Remove-PSSession -Session $session
}

Как работает сбор журналов диагностики с помощью PEP

Средства диагностики Azure Stack Hub помогают сделать сбор журналов простым и эффективным. На следующей схеме показано, как работают средства диагностики.

Схема рабочего процесса средств диагностики Azure Stack Hub

Сборщик трассировки

Сборщиком трассировки включен по умолчанию и постоянно работает в фоновом режиме для сбора всех журналов трассировки событий Windows (ETW) из служб компонентов Azure Stack Hub. Журналы трассировки событий Windows хранятся в общей локальной папке в течение пяти дней. По достижении этого ограничения самые старые файлы удаляются и создаются новые. Максимальный размер файла по умолчанию составляет 200 МБ. Размер проверка происходит каждые 2 минуты, и если текущий файл равен >200 МБ, он сохраняется и создается новый файл. Кроме того, есть ограничение в 8 ГБ для общего размера файлов, создаваемых во время сеанса событий.

Get-AzureStackLog;

Командлет PowerShell Get-AzureStackLog можно использовать для сбора журналов из всех компонентов в среде Azure Stack Hub. Она сохраняет их в ZIP-файлы в расположении, определяемом пользователем. Если сотрудникам службы технической поддержки Azure Stack Hub понадобятся журналы для устранения проблемы, они могут попросить вас выполнить командлет Get-AzureStackLog.

Внимание!

Эти файлы журналов могут содержать личные сведения. Учитывайте это, прежде чем открыто публиковать какие-либо файлы журналов.

Ниже приведены несколько примеров собираемых типов журналов:

  • журналы развертывания Azure Stack Hub;
  • журналы событий Windows;
  • журналы Panther.
  • журналы кластера;
  • журналы диагностики хранилища;
  • Журналы трассировки событий Windows

Эти файлы собираются и сохраняются в файловом ресурсе сборщиком трассировки. Затем при необходимости их можно будет собрать с помощью командлета Get-AzureStackLog.