SQL Insights のトラブルシューティング (プレビュー)
適用対象:Azure SQL データベース Azure SQL Managed Instance
重要
SQL Insights (プレビュー) は、2024 年 12 月 31 日に廃止されます。 その日までに、Azure SQL 用の Database Watcher (プレビュー) または別のデータベース監視ソリューションに移行することをお勧めします。
Database Watcher は、データ コレクション待機時間の短縮、資産レベルの監視、クエリ レベルの詳細を含む包括的な監視データ、収集された監視データに対する高度な分析のサポートを必要とするシナリオに推奨される監視ソリューションです。 現時点では、Database Watcher で Azure SQL データベースと Azure SQL Managed Instance がサポートされています。
2024 年 12 月 31 日以降、SQL Insights (プレビュー) はサポートされず、Azure portal では使用できなくなります。 SQL Insights によって収集された既存の監視データは、Log Analytics ワークスペースに保持されます。
SQL Insights (preview) のデータ収集の問題をトラブルシューティングするには、[プロファイルの管理] タブで監視マシンの状態を確認します。以下の状態があります。
- Collecting (収集中)
- Not collecting (収集中ではない)
- Collecting with errors (収集中だが、エラーあり)
状態を選択すると、問題の解決に役立つ可能性があるログと詳細情報が表示されます。
状態: 収集中ではない
過去 10 分間、SQL の InsightsMetrics にデータがない場合、監視マシンの状態は [収集中ではない] になります。
サポートされているバージョンの SQL からデータを収集しようとしていることを確認します。 たとえば、有効なプロファイルと接続文字列を使用してデータの収集を試みても、サポートされていないバージョンの Azure SQL Database からデータの収集を試みると、 [収集中ではない] 状態となります。
SQL Insights (preview) では、次のクエリを使用してこの情報を取得します。
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 のログがあるかどうかを調べます。 ログ エントリがある場合は、 [収集中ではない] を選択し、ログと一般的な問題のトラブルシューティング情報を確認できます。
ログ エントリがない場合は、2 つの仮想マシン拡張機能によってインストールされた以下のサービスについて、監視仮想マシンのログを調べます。
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 エージェントの前提条件を確認してください。
Azure Monitoring Agent v1.12 より前のバージョンでは、mdsd サービス ログは次の場所にありました。
/var/log/mdsd.err
/var/log/mdsd.warn
/var/log/mdsd.info
v1.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/
内のファイル- File
/etc/default/mdsd
監視仮想マシンの構成が無効です
[収集中ではない] 状態の原因の 1 つは、監視仮想マシンの構成が無効であることです。 最も単純な形式の構成は次のとおりです。
{
"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 インサイトによって、Key Vault から取得した SQL 認証パスワードに置き換えられます。 Key Vault の URI は、secrets
下の telegrafPassword
構成セクションで指定します。
シークレット
シークレットは、実行時に Azure のキー コンテナーから値が取得されるトークンです。 シークレットは、キー コンテナー URI とシークレット名を含む値のペアによって定義されます。 SQL インサイトでは、実行時にこの定義からシークレットの値を取得して、ダウンストリーム構成に使用することができます。
シークレットは、複数のキー コンテナーに保存されるシークレットを含め、必要な数だけ定義できます。
"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>"
}
}
キー コンテナーにアクセスするためのアクセス許可は、監視仮想マシン上のマネージド ID に提供されます。 このマネージド ID には、監視プロファイル構成で参照されているすべての Key Vault シークレットに対する Get アクセス許可を付与する必要があります。 これは、Azure portal、PowerShell、Azure CLI、または Azure Resource Manager テンプレートから実行できます。
パラメーター
パラメーターは、JSON テンプレートを介して、プロファイル構成内で参照できるトークンです。 パラメーターには、名前と値があります。 値は、オブジェクトや配列を含む任意の JSON 型にできます。 パラメーターはプロファイル構成内で、その名前によって、.Parameters.<name>
という規則を使用して参照されます。
パラメーターでは、同じ規則を使用して、Key Vault 内のシークレットを参照できます。 たとえば sqlAzureConnections
では、$telegrafPassword
という規則を使用して、シークレット telegrafPassword
を参照します。
実行時には、すべてのパラメーターとシークレットが解決され、プロファイル構成とマージされて、マシンで使用される実際の構成が作成されます。
注意
パラメーター名 sqlAzureConnections
、sqlVmConnections
、sqlManagedInstanceConnections
はすべて、このうちの一部に対して接続文字を指定しない場合でも構成に必要です。
状態: 収集中だが、エラーあり
少なくとも 1 つの最近の 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 portal の SQL Insights 内から、 [プロファイルの管理]>[プロファイルの編集]>[監視プロファイルの更新] と選択します。
一般的なケースの場合、トラブルシューティングのヒントはログ ビューで提供されます。
既知の問題
SQL インサイトのプレビュー中、以下に示す既知の問題が発生する場合があります。
サーバーまたはデータベースへの接続中の "ログイン失敗" エラー
監視 VM 構成または Key Vault に保存した SQL 認証パスワードに特定の特殊文字が使用されていると、監視 VM が SQL サーバーまたはデータベースに接続できない場合があります。 該当する文字には、かっこ、角かっこ、中かっこ、ドル記号、スラッシュ、円記号、ドット (
[ { ( ) } ] $ \ / .
) などがあります。データベース接続文字列属性内のスペースは特殊文字に置き換えられ、データベース接続エラーが発生する可能性があります。 たとえば、
User Id
属性内のスペースが特殊文字に置き換えられた場合、ユーザー" エラーのログインに失敗して接続が失敗します。 解決するには、監視プロファイル構成を編集し、スペースの代わりに表示されるすべての特殊文字を削除します。 一部の特殊文字はスペースと区別できない場合があるため、すべてのスペース文字を削除し、もう一度入力し、構成を保存することができます。監視 VM の OS コンピューター名が監視 VM 名と異なる場合、データ コレクションと視覚化が機能しないことがあります。
"このマシンの WLI 拡張機能の推奨バージョン [...] を下回っています" というメッセージが、WLI の拡張機能が最新の状態であっても不正に表示されることがあります。
SQL Server がインストールされている VM の OS コンピューター名が SQL Server メタデータ内のサーバー名と一致しない場合、データ コレクションと視覚化が機能しない可能性があります。 詳細については、「SQL Server のスタンドアロン インスタンスをホストするコンピューターの名前変更」を参照してください。
ベスト プラクティス
監視 VM から Key Vault にアクセスできることを確認します。 Key Vault を使用して SQL 認証パスワードを保存する場合 (強く推奨)、監視 VM から Key Vault にアクセスできるよう、ネットワークとセキュリティの構成を確認する必要があります。 詳細については、「ファイアウォールの内側にある Azure Key Vault にアクセスする」および「Azure Key Vault のネットワーク設定を構成する」を参照してください。 監視 VM から Key Vault にアクセスできることは、VM に接続した 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]"
監視 VM でソフトウェアを更新します。 監視 VM で、オペレーティング システムと拡張機能を定期的に更新することを強くお勧めします。 拡張機能で自動アップグレードがサポートされている場合は、そのオプションを有効にしてください。
以前の構成を保存します。 監視プロファイルまたは監視 VM 構成に変更を加える場合は、正常に機能している構成データのコピーを保存してから行うことをお勧めします。 Azure portal の [SQL インサイト] ページから [プロファイルの管理]>[プロファイルの編集] を選択し、 [現在の監視プロファイル構成] のテキストをファイルにコピーします。 同様に、監視 VM の [プロファイルの管理]>[構成] を選択し、 [現在の監視構成] のテキストをファイルにコピーします。 構成変更後にデータ収集エラーが発生した場合、テキスト差分ツールを使用して新しい構成を既知の正常な構成と比較し、収集に影響を及ぼした可能性がある変更を特定することができます。
関連するコンテンツ
- SQL Insights (プレビュー) の有効化に関するページで詳細情報を取得します。