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


Устранение неполадок в SQL Insights (предварительная версия)

Применимо к: База данных SQL Azure Управляемый экземпляр SQL Azure

Внимание

СЛУЖБА SQL Insights (предварительная версия) будет прекращена 31 декабря 2024 г. Мы рекомендуем перейти на наблюдатель за базами данных для SQL Azure (предварительная версия) или другое решение для мониторинга баз данных по этой дате.

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

После 31 декабря 2024 года SQL Insights (предварительная версия) не будет поддерживаться и не будет доступен в портал Azure. Вы сохраните все существующие данные мониторинга, собранные SQL Insights в рабочей области Log Analytics.

Чтобы устранить проблемы при сборе данных в SQL Insights (предварительная версия), проверьте состояние компьютера мониторинга на вкладке Управление профилем. Доступные варианты состояния:

  • Собирание
  • Не собирается
  • Сбор ошибок

Выберите состояние, чтобы просмотреть журналы и дополнительные сведения, которые могут помочь в решении проблемы.

Снимок экрана: состояние компьютера мониторинга.

Состояние: сбор данных не выполняется

Компьютер мониторинга находится в состоянии Сбор данных не выполняется, если в InsightsMetrics для SQL отсутствуют данные за последние 10 минут.

Убедитесь, что вы пытаетесь получить данные из поддерживаемой версии SQL. Например, попытка сбора данных с допустимым профилем и строкой подключения, но из неподдерживаемой версии Базы данных SQL Azure приведет к переходу в состояние Сбор данных не выполняется.

Для получения этих сведений SQL Insights (предварительная версия) использует следующий запрос:

InsightsMetrics
    | extend Tags = todynamic(Tags) 
    | extend SqlInstance = tostring(Tags.sql_instance) 
    | where TimeGenerated > ago(10m) and isnotempty(SqlInstance) and Namespace == 'sqlserver_server_properties' and Name == 'uptime' 

Проверьте, есть ли какие-либо журналы из Telegraf, которые могут помочь в поиске первопричины проблемы. Если записи журнала есть, можно выбрать Сбор данных не выполняется и проверить журналы и сведения об устранении неполадок для распространенных проблем.

Если соответствующие записи в журналах отсутствуют, необходимо проверить журналы на виртуальной машине для мониторинга для следующих служб, установленных двумя расширениями виртуальной машины:

  • Microsoft.Azure.Monitor.AzureMonitorLinuxAgent
    • Служба: mdsd
  • Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension
    • Служба: wli
    • Служба: telegraf
    • Служба: fluent-bit
    • Журнал расширений для проверки сбоев установки: /var/log/azure/Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension/wlilogs.log

Журналы службы wli

Журналы службы: /var/log/wli.log

Чтобы просмотреть последние журналы: tail -n 100 -f /var/log/wli.log

Если отображается следующий журнал ошибок, возникла проблема со службойmdsd: 2021-01-27T06:09:28Z [Error] Failed to get config data. Error message: dial unix /var/run/mdsd/default_fluent.socket: connect: no such file or directory

Журналы службы Telegraf

Журналы службы: /var/log/telegraf/telegraf.log

Чтобы просмотреть последние журналы: tail -n 100 -f /var/log/ms-telegraf/telegraf.log

Чтобы просмотреть журналы последних ошибок и предупреждений: tail -n 1000 /var/log/ms-telegraf/telegraf.log | grep "E\!\|W!"

Конфигурация, используемая Telegraf, создается службой wli и находится в следующем каталоге: /etc/ms-telegraf/telegraf.d/wli

Если сгенерирована неправильная конфигурация, служба ms-telegraf может не запуститься. Чтобы проверить, запущена ли служба ms-telegraf, выполните следующую команду: service ms-telegraf status

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

/usr/bin/ms-telegraf --config /etc/ms-telegraf/telegraf.conf --config-directory /etc/ms-telegraf/telegraf.d/wli --test 

Журналы службы mdsd

Проверьте предварительные требования для агента Azure Monitor.

До выхода версии 1.12 агента мониторинга Azure журналы службы mdsd располагались в следующей папке:

  • /var/log/mdsd.err
  • /var/log/mdsd.warn
  • /var/log/mdsd.info

Начиная с версии 1.12, журналы службы находятся в следующей папке:

  • /var/opt/microsoft/azuremonitoragent/log/
  • /etc/opt/microsoft/azuremonitoragent/

Чтобы просмотреть последние ошибки: tail -n 100 -f /var/log/mdsd.err

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

  • Журналы в /var/log/azure/Microsoft.Azure.Monitor.AzureMonitorLinuxAgent/
  • Журнал в /var/log/waagent.log
  • Журналы в /var/log/mdsd* либо журналы в /var/opt/microsoft/azuremonitoragent/log/ и /etc/opt/microsoft/azuremonitoragent/.
  • Файлы в /etc/mdsd.d/
  • Файл /etc/default/mdsd

Недопустимая конфигурация виртуальной машины для мониторинга

Одной из причин состояния Сбор данных не выполняется является недопустимая конфигурация виртуальной машины мониторинга. Вот простейшая форма конфигурации:

{
    "version": 1,
    "secrets": {
        "telegrafPassword": {
            "keyvault": "https://mykeyvault.vault.azure.net/",
            "name": "sqlPassword"
        }
    },
    "parameters": {
        "sqlAzureConnections": [
            "Server=mysqlserver.database.windows.net;Port=1433;Database=mydatabase;User Id=telegraf;Password=$telegrafPassword;"
        ],
        "sqlVmConnections": [
        ],
        "sqlManagedInstanceConnections": [
        ]
    }
}

Эта конфигурация определяет маркеры замены, которые будут использоваться в конфигурации профиля виртуальной машины для мониторинга. Она также позволяет ссылаться на секреты из Azure Key Vault, что позволяет не хранить значения секрета в какой-либо конфигурации (настоятельно рекомендуется).

В этой конфигурации строка подключения к базе данных содержит маркер замены $telegrafPassword. SQL Insights заменяет маркер паролем проверки подлинности SQL, полученным из Key Vault. URI Key Vault задается в разделе telegrafPassword конфигурации в подразделе secrets.

Секреты

Секреты — это маркеры, значения которых извлекаются во время выполнения из хранилища ключей Azure Key Vault. Секрет определяется парой значений, включающей URI-адрес хранилища ключей и имя секрета. Это позволяет SQL Insights получить значение секрета во время выполнения и использовать его в нижестоящей конфигурации.

Вы можете задать нужное количество секретов, в том числе секреты, хранящиеся в разных хранилищах ключей.

   "secrets": {
        "<secret-token-name-1>": {
            "keyvault": "<key-vault-uri>",
            "name": "<key-vault-secret-name>"
        },
        "<secret-token-name-2>": {
            "keyvault": "<key-vault-uri-2>",
            "name": "<key-vault-secret-name-2>"
        }
    }

Разрешения на доступ к хранилищу ключей предоставляются управляемому удостоверению на виртуальной машине для мониторинга. Этому управляемому удостоверению должно быть предоставлено разрешение Get для всех секретов Key Vault, указанных в конфигурации профиля мониторинга. Их можно создать с помощью портала Azure, PowerShell, Azure CLI или шаблона Azure Resource Manager.

Параметры

Параметры — это маркеры, на которые можно ссылаться в конфигурации профиля с помощью шаблонов JSON. Параметры имеют имя и значение. Значениями может быть любой тип JSON, в том числе объекты и массивы. На параметр в конфигурации профиля указывает ссылка с использованием его имени в этом соглашении .Parameters.<name>.

Параметры могут ссылаться на секреты в Key Vault, используя то же соглашение. Например, sqlAzureConnections ссылается на секрет telegrafPassword, используя соглашение $telegrafPassword.

Во время выполнения все параметры и секреты будут разрешены и объединены с конфигурацией профиля для создания фактической конфигурации, которая будет использоваться на компьютере.

Примечание.

Имена параметров sqlAzureConnections, sqlVmConnections и sqlManagedInstanceConnections являются обязательными в конфигурации, даже если для некоторых из них не указаны строки подключения.

Состояние: сбор данных выполняется с ошибками

Компьютер мониторинга будет иметь состояние сбора с ошибками , если есть по крайней мере один недавний журнал InsightsMetrics , но в Operation таблице также есть ошибки.

Для получения этих сведений SQL Insights использует следующие запросы:

InsightsMetrics 
    | extend Tags = todynamic(Tags) 
    | extend SqlInstance = tostring(Tags.sql_instance) 
    | where TimeGenerated > ago(240m) and isnotempty(SqlInstance) and Namespace == 'sqlserver_server_properties' and Name == 'uptime' 
WorkloadDiagnosticLogs
| summarize Errors = countif(Status == 'Error')

Примечание.

Если вы не видите никаких данных в WorkloadDiagnosticLogs, возможно, требуется обновить профиль мониторинга. На портале Azure в разделе SQL Insights выберите Управление профилем>Изменить профиль>Обновить профиль мониторинга.

В общих случаях мы предоставляем набор знаний по устранению неполадок в нашем представлении журналов:

Снимок экрана: страница Azure Monitor для устранения неполадок журналов SQL в портал Azure.

Известные проблемы

В период доступа к SQL Insights в режиме предварительной версии могут возникать перечисленные ниже известные проблемы.

  • Ошибка при подключении к серверу или базе данных при входе в систему

    Использование в паролях проверки подлинности SQL, сохраненных в конфигурации мониторинга виртуальной машины или в Key Vault, определенных специальных символов может препятствовать подключению виртуальной машины мониторинга к серверу SQL или базе данных. Этот набор символов включает круглые, квадратные и фигурные скобки, знак доллара, прямую и обратную косую черту и точку ([ { ( ) } ] $ \ / .).

  • Пробелы в атрибутах строки подключения к базе данных могут быть заменены специальными знаками, что приводит к сбоям при подключении к базе данных. Например, если пробел в атрибуте User Id заменить специальным знаком, подключение будет завершаться ошибкой Ошибка входа пользователя ''. Чтобы устранить проблему, измените конфигурацию профиля мониторинга и удалите все специальные знаки, отображаемые вместо пробела. Некоторые специальные знаки могут выглядеть неотличимыми от пробела, поэтому вы можете удалить каждый пробел, ввести его заново и сохранить конфигурацию.

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

  • Сообщение "Расширение WLI на этом компьютере ниже рекомендуемой версии [...]" может появиться неправильно, даже если расширение WLI обновлено.

  • Сбор и визуализация данных могут не работать, если имя компьютера ОС виртуальной машины, на которой установлен SQL Server, не соответствует имени сервера в метаданных SQL Server. Дополнительные сведения см. в разделе "Переименование компьютера", на котором размещен автономный экземпляр SQL Server.

Рекомендации

  • Обеспечьте доступ к Key Vault из виртуальной машины мониторинга. Если вы используете Key Vault для хранения паролей проверки подлинности SQL (настоятельно рекомендуется), необходимо убедиться, что конфигурация сети и безопасности позволяет виртуальной машине мониторинга беспрепятственно обращаться к Key Vault. Дополнительные сведения см. в разделах Доступ к Azure Key Vault из-за брандмауэра и Настройка сетевых параметров Azure Key Vault. Чтобы убедиться, что виртуальная машина мониторинга может обращаться к Key Vault, выполните указанные ниже команды из сеанса подключения SSH к виртуальной машине. Вы должны успешно получить маркер доступа и секрет. Замените [YOUR-KEY-VAULT-URL], [YOUR-KEY-VAULT-SECRET] и [YOUR-KEY-VAULT-ACCESS-TOKEN] соответствующими значениями.

    # Get an access token for accessing Key Vault secrets
    curl 'http://[YOUR-KEY-VAULT-URL]/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true
    
    # Get Key Vault secret
    curl 'https://[YOUR-KEY-VAULT-URL]/secrets/[YOUR-KEY-VAULT-SECRET]?api-version=2016-10-01' -H "Authorization: Bearer [YOUR-KEY-VAULT-ACCESS-TOKEN]"
    
  • Обновите программного обеспечения на виртуальной машине мониторинга Мы настоятельно рекомендуем периодически обновлять операционную систему и расширения на виртуальной машине мониторинга. Если расширение поддерживает автоматическое обновление, включите его.

  • Сохраняйте предыдущие конфигурации. Если вы хотите внести изменения в профиль мониторинга или конфигурацию виртуальной машины мониторинга, рекомендуется сначала сохранить рабочую копию данных конфигурации. На странице SQL Insights на портале Azure выберите Управление профилем>Изменить профиль и скопируйте текст текущей конфигурации профиля мониторинга в файл. Аналогичным образом выберите Управление профилем>Настроить для виртуальной машины мониторинга и скопируйте текст из текущей конфигурации мониторинга в файл. Если ошибки сбора данных возникают после изменения конфигурации, сравните новую конфигурацию с известной рабочей конфигурацией с помощью инструмента сравнения текста, который поможет найти изменения, повлиявшие на сбор данных.