Поделиться через


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

Чтобы запустить Get-AzureStackLog в интегрированной системе, необходимо иметь доступ к привилегированной конечной точке (PEP). Ниже приведен пример скрипта, который можно запустить с помощью 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 RP:

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    Чтобы собрать журналы для MySQL RP, выполните следующую команду:

    Get-AzureStackLog -FilterByResourceProvider MySQLAdapter
    

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

    Get-AzureStackLog -FilterByResourceProvider eventhub
    

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

    Get-AzureStackLog -FilterByResourceProvide databoxedge
    
  • Соберите журналы и сохраните их в указанном контейнере файлов BLOB в службе хранения Azure. Общий синтаксис для этой операции выглядит следующим образом:

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

    Например:

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

    Заметка

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

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

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

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

    1. Создайте учетную запись хранения, следуя шагам в этой статье.
    2. Откройте экземпляр Azure Storage Explorer.
    3. Подключитесь к учетной записи хранения, созданной на шаге 1.
    4. Перейдите к контейнерам BLOB в службах хранения .
    5. Выберите Создать новый контейнер.
    6. Нажмите правой кнопкой мыши на новый контейнер, затем выберите Получить общую подпись для доступа.
    7. Выберите допустимое время начала и время окончанияв зависимости от ваших требований.
    8. Для необходимых разрешений выберите чтение, записьи список.
    9. Выберите Создать.
    10. Вы получите сигнал для общей подписи доступа. Скопируйте часть URL-адреса и предоставьте ее параметру -OutputSasUri.

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

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

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

  • Используйте параметр FilterByNode для фильтрации журналов по имени компьютера. Например:

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

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

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

  • В настоящее время можно использовать параметр FilterByRole для фильтрации коллекции журналов по следующим ролям:

ACS

ACSBlob

ACSDownloadService

ACSFabric

ACSFrontEnd

ACSMetrics

ACSMigrationService

ACSMonitoringService

Служба настроек ACS

ACSTableMaster

ACSTableServer

ACSWac

ADFS

ApplicationController

ASAppGateway

AzureBridge

AzureMonitor

BareMetal

BRP

Центр сертификации

CacheService

Вычислять

CPI

СРБ

DeploymentMachine

DiskRP

Домен

ECE

EventAdminRP

EventRP

ExternalDNS

ФабрикРинг

FabricRingServices

Служба агрегации первого уровня

FRP

Шлюз

Мониторинг здоровья

HintingServiceV2

HRP

IBC

InfraServiceController

KeyVaultAdminResourceProvider

KeyVaultControlPlane

KeyVaultDataPlane

KeyVaultInternalControlPlane

KeyVaultInternalDataPlane

KeyVaultNamingService

MDM

MetricsAdminRP

Метрики

MetricsServer

MetricsStoreService

MonAdminRP

MonRP

NC

ШлюзПриложенияБезПривилегий

NRP

OboService

OEM

OnboardRP

PXE

QueryServiceCoordinator

QueryServiceWorker

SeedRing

SeedRingServices

SLB

SQL

SRP

Хранение

Контроллер Хранилища

URP

Контроллер поддержки моста

SupportRing

SupportRingServices

SupportBridgeRP

UsageBridge

Виртуальные машины

БЫЛ

WASPUBLIC

Дополнительные рекомендации по журналам диагностики

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

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

  • Каждая роль содержит свои журналы внутри отдельных ZIP-файлов. В зависимости от размера собранных журналов роль может разделить журналы на несколько ZIP-файлов. Если вы хотите распаковать все файлы журнала в одну папку, используйте инструмент, который может распаковываться пакетно. Выберите все zip-файлы для задачи и выберите извлечь здесь. Все файлы журналов для этой роли будут распакованы в единую папку.

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

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

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

Заметка

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

Invoke-AzureStackOnDemandLog

Вы можете использовать командлет Invoke-AzureStackOnDemandLog для создания журналов по запросу для определенных ролей (см. список в конце этого раздела). Журналы, которые создаёт этот cmdlet, по умолчанию отсутствуют в пакете журналов, который вы получаете при выполнении cmdlet 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. Журналы ETW хранятся в общей локальной папке с пятидневным сроком хранения. После достижения этого ограничения старые файлы удаляются по мере создания новых файлов. Максимальный размер по умолчанию для каждого файла составляет 200 МБ. Проверка размера выполняется каждые 2 минуты, и если текущий файл >= 200 МБ, он сохраняется и создается новый файл. Существует также ограничение на 8 ГБ общего размера файла, созданного на сеансе событий.

Get-AzureStackLog

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

Осторожность

Эти файлы журнала могут содержать персональные данные (PII). Учитывайте это перед публикацией всех файлов журналов публично.

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

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

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