SQL Server のトラブル解析に Bing AI (Bing チャット) / ChatGTP を活用することはできるのかが気になったので簡単にではありますが試してみました。
プロンプトの組み方によってはもっと精度を上げることもできるのかとは思いますが、今回はシンプルな自然言語の入力で試しています。
想定シナリオとエラーの原因
想定シナリオ
今回発生している問題としては次のシナリオを想定したものとなります。
- WSFC 構成の SQL Server (フェールオーバークラスターインスタンス)
- SQL Server のサービス (MSSQLSERVER) が通常運用中に予期せぬ再起動が発生
- この問題に対してどのように解析すればよいかの情報を収集したい
各 AI チャットには、次の質問
WSFC 構成の SQL Server で、通常運用中に MSSQLSERVER サービスの予期せぬ再起動が発生しました。 MSSQLSERVER サービスの再起動が発生した原因を解析して下さい。
を起点としてエラーの解析を開始します。
最終的に各 AI チャットで使用した質問は次の内容になります。
- WSFC 構成の SQL Server で、通常運用中に MSSQLSERVER サービスの予期せぬ再起動が発生しました。 MSSQLSERVER サービスの再起動が発生した原因を解析して下さい。
- 問題を解決するために確認が必要となる、ログファイル / ログファイルの取得方法 / ログファイルのファイルパスを教えてください。
- WSFC のログを確認する必要はないでしょうか?確認する必要がある場合、ログファイルの取得方法を教えてください
- エラーの原因を特定するために、ログファイルからどのような内容を確認すればよいですか?
-
SFC のログには次の出力がありました。
~ Cluster.log のメッセージの内容 ~
このメッセージから考えらえるエラーの原因を教えてください。 -
エラーログの内容を確認 (エラー部のみ抜粋して入力として使用)
-
エラーログの内容を確認 (通常 / エラー部を混ぜて入力として使用)
問題解決のために確認が必要となる情報
WSFC の SQL Server で発生しているエラーに対して、一般的に確認が必要となる情報としては、次のような内容があります。
回答にはこれらの情報の確認が含まれていることが望ましいです。
- OS のイベントログ
- SQL Server のエラーログ (ERRORLOG)
- SQL Server の拡張イベント
- system_health
- SQLDIAG (sp_server_diagnostics session)
- クラスターログ
- Failover Clustering のイベントログ
- Get-ClusterLog により出力されたログ
- パフォーマンスモニター
- クラッシュダンプ
エラー原因の分析結果に含まれてほしい情報
クラスターの SQL Server については、System Health によりリソースの稼働状況の監視が行われています。今回はこの稼働状況の監視で使用しているクエリでタイムアウトを発生させることで、障害を意図的に起こしています。
そのため、エラーにつながった要因としては次の内容となります。
- System Health で使用しているエラー検知用のクエリが 30 秒の Health Check Timeout の時間で応答を返さなかった
本シナリオで得たい回答としては、
- WSFC の Cluster.log から、クエリタイムアウトのエラーメッセージを取得し、クエリタイムアウトにつながる要因の回答を得たい
となるのですが、これに対してどのようなアプローチが行われ、回答されるかを確認してみます。
根本原因の解決ではないですが、暫定的なエラーの回避としては、次のような内容が考えられるかと思います。
- System Health の Health Check Timeout を延ばす
- System Health のクエリが Health Check Timeout の期間応答を返さずにタイムアウトした原因を調査するための方法を検討
最終的な回答としてこれらの情報が含まれている / これより詳細な情報, 手法が含まれているとベストです。
結果
最初に結果を書いておくと、次のような結果になったのかと思います。
所感
- 一般的なエラーの解析方法について提示してもらうことは可能
- 発生している問題に対して、必ずしも適用できるかはわからないが、一般的な問題解決の流れとファーストステップとして必要となる情報の全体像を把握することができる
- 具体的な原因の特定に至る情報は提供してもらえなかったという認識
- 特定のエラーメッセージについての考察を得ることはできるかもしれない
- 単一のエラーとしてどのようなエラーが発生したかは確認できる可能性があるが、複合要因による多面的な障害発生の解析は難しい
- 必要となるすべての情報を最初の質問の回答で得ることはできず、必要と考えらえる情報があれば追加で質問で渡すことで確認観点を増やしていく
- WSFC 構成を想定した質問であったが、シングルインスタンスについての内容となっている回答が目立った
- 可用性環境の場合、別途可用性環境向けの質問を追加で行うことで、必要となる情報が追加される傾向はある
- エラーログを連携することでログからエラーを抜粋し、各エラー行に対して参考となる考察を得ることはできる
- 入力できる文字数に制限があるため、ログは切り出して回答を得る必要は出てくるようである
- ログをアップロードして URL 指定をして解析を依頼してみても現状は対応できなさそうであった
「最初のステップとして必要となる考え方 / 情報」については集めることはできそうです。しかし、質問の仕方や必要となる情報については、質問者が意識してプロンプトを生成する必要があったため、発生している問題に対して、単純な質問を行えばベストな回答を得られるということはありませんでした。
また、トラブル分析は多角的に分析を行う必要があります。
その観点での回答を得るためには、トラブル解析のノウハウを活用しながら質問者自体が意識的に情報に加える必要があるため「ひとつ質問をすればベストな回答を得ることができる」ということは難しそうです。(これはプロンプトの生成のノウハウによると思いますが)
回答に対しての正確性
大前提として、質問の回答に対して、AI は 100% 正しい回答をするわけではありません。間違った可能性は 0 にはなりません。
回答の妥当性については情報を受け取った側が判断をする必要があります。
今回確認したシナリオでは次のような傾向があったのかなと思います。
- Bing AI : 回答はシンプルな傾向があるが、元になった情報の URL も提示されるため、詳細 / 事実確認がしやすい
- ChatGPT: 詳細な回答が得られる質問もある。もとになった情報の URL が提示されないため、妥当性の確認が必要となった場合は別途検索して調査が必要となる
発生している問題に対してのノウハウがない場合の初期ステップとして、AI チャットを利用した調査方法の情報収集は有益だと思います。
回答内容の精度
具体的なエラーメッセージ / エラーコードの提示ではなく、ざっくりとした質問から回答を得ようとする、今回のシナリオと質問の粒度では、根本原因の分析には至らないかなと感じました。
WSFC のような高可用性環境固有の問題の場合は、具体的なメッセージを提示しても、WSFC の障害発生個所ではなく、汎用的な情報 (シングルインスタンスでの動作) として回答が多いようにも思えました。
ひとつの力で多面的な内容を含む / 多面的な質問と判断できる内容を出せるとよいのかもしれませんが、そのようなプロンプトを構成するのは中々難しいかもしれませんね。
ノウハウのない分野での初期解析方法をつかむ / 一人で解析をしていると息詰まるので、それを緩和させる目的でチャットで対話しながら考えを整理するという用途で使っていくことはできるのかなと。
以下は、実際に得ることができた回答の内容です。最初は各 Step にコメントを書いていたのですが、途中で力尽きて雑になっています…。
Bing AI 編
最初に Bing AI で確認をしてみます。
Step 1: 単純な内容で質問をしてみる
WSFC 構成の SQL Server で、通常運用中に MSSQLSERVER サービスの予期せぬ再起動が発生しました。 MSSQLSERVER サービスの再起動が発生した原因を解析して下さい。
SQL Server のエラーログ (ERRORLOG) を確認する必要があるということですね。
Step 2: 確認が必要となるログについて聞いてみる
ログファイルがあることは分かりましたので、どのようなログをどのように確認すればよいのかも聞いてみます。
問題を解決するために確認が必要となる、ログファイル / ログファイルの取得方法 / ログファイルのファイルパスを教えてください。
ログファイルは通常、インストールディレクトリに存在しており、SSMS を使用したログファイルの確認方法について回答を得ることができました。
Step 3: WSFC 構成であるということを含めて確認が必要となるログを聞いてみる
今回は「WSFC 構成」ということを記載していたのですが、WSFC を意識した回答にはなっていないようですので、WSFC のログの確認の必要性についても確認してみます。
WSFC のログを確認する必要はないでしょうか?確認する必要がある場合、ログファイルの取得方法を教えてください
WSFC のログは「Get-ClusterLog」 で「Cluster.log」を取得する必要があるのですが、それについての回答にはなっていません。SQL Server のログ (ERRORLOG) の確認にとどまってしまっていますね。
Step 4: ログで確認すべき内容を聞いてみる
ひとまず、ここまで得られた情報でログファイルのどのような内容を確認すればよいかを聞いてみます。
エラーの原因を特定するために、ログファイルからどのような内容を確認すればよいですか?
ざっくりとした回答になっていますね。そして自分のブログが参考 URL として紹介されていますが、知りたいのはそれ以外の内容ということもあったり、なかったり。
Step 5: ログのエラーの内容を分析することができるか
とりあえず、エラーの内容を直接連携してみたいと思います。
「Get-ClusterLog」で出力したログから、エラーを抽出し、そのメッセージの解析を依頼してみます。
Get-Content -Path C:\Windows\Cluster\Reports\Cluster.log | Select-String " ERR "
WSFC のログには次の出力がありました。
~ Cluster.log のメッセージの内容 ~このメッセージから考えらえるエラーの原因を教えてください。
各エラーについて補足情報をつけた形で回答を得られていますね。
Step 6: 正常系のメッセージもログに含真れている状態でエラーを抽出することができるか
先ほどはエラーメッセージのみを貼り付けましたが、通常のメッセージ (INFO) も含めて回答してもらいたいと思います。
入力可能な文字は「2000 文字」までとなっているので、質問者がポイントのみを切り出して回答を確認する必要がありますが、エラーと考えらえる行の抽出と各行のコメントは記載されていますね。
Step 7: 単一のエラーメッセージを指定した場合の回答内容
エラーメッセージをピンポイントで確認してみます。
WSFC の SQL Server で次のエラーが発生しました。エラーとなった原因と回避策を教えてください。
[sqsrvres] ODBC Error: [HYT00] [Microsoft][SQL Server Native Client 11.0]クエリ タイムアウトが時間切れになりました (0)
具体性を持った回答を得ることができましたが、WSFC 向けというよりは一般的なクエリタイムアウトについての回答ですかね。
ChatGPT 編
それでは続いて同じことを ChatGPT を使って実施してみます。ChatGPT については、https://chat.openai.com/chat を使っていますが、、Azure OpenAI Service の ChatGPT プレイグラウンドを使用して見てもよいのかなと。
Step 1: 単純な内容で質問をしてみる
質問を始めてみます。
WSFC 構成の SQL Server で、通常運用中に MSSQLSERVER サービスの予期せぬ再起動が発生しました。 MSSQLSERVER サービスの再起動が発生した原因を解析して下さい。
確認の観点については、いくつかの選択肢を提示してくれていますね。問題が解決できない場合のサポートへの連絡についても回答に含まれています。
Step 2: 確認が必要となるログについて聞いてみる
先ほどの回答でログの種類を把握することができましたがどのように各ログを確認するかの情報は得られていませんので確認します。
問題を解決するために確認が必要となる、ログファイル / ログファイルの取得方法 / ログファイルのファイルパスを教えてください。
SSMS を使用した ERRORLOG の確認方法の回答を得ることができました。Bing チャットと同様に WSFC のログについての記載はありませんね。
Step 3: WSFC 構成であるということを含めて確認が必要となるログを聞いてみる
WSFC のログ確認の必要性を聞いてみます。
WSFC のログを確認する必要はないでしょうか?確認する必要がある場合、ログファイルの取得方法を教えてください
WSFC のログについても確認したほうが良いという回答と確認方法を得ることができました。
Step 4: ログで確認すべき内容を聞いてみる
確認が必要なログが把握できましたので確認の観点を聞いてみます。
エラーの原因を特定するために、ログファイルからどのような内容を確認すればよいですか?
ログの確認観点についての情報を得ることができました。
Step 5: ログのエラーの内容を分析することができるか
最後に具体的なメッセージを提示するとどうなるかを確認してみます。
一般的なクエリタイムアウトが原因ではないかという回答を得ることができましたね。
Step 6: 正常系のメッセージもログに含真れている状態でエラーを抽出することができるか
ChatGPT のほうが長いメッセージを入力できますので、Bing AI では入力できなかったログも含めることができました。
エラー部分のみが抜粋されていますね。
Step 7: 単一のエラーメッセージを指定した場合の回答内容
エラーメッセージをピンポイントで確認してみます。
WSFC の SQL Server で次のエラーが発生しました。エラーとなった原因と回避策を教えてください。
[sqsrvres] ODBC Error: [HYT00] [Microsoft][SQL Server Native Client 11.0]クエリ タイムアウトが時間切れになりました (0)
WSFC のクラスターリソースの Health Check ではなく、一般的なクエリの問題についての回答ですね。
Bing AI / ChatGPT ともに単純に聞いただけだと WSFC の Health Check と関連付けた回答までは届かず、一般的な内容での回答だったかなと感じました。