SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Windows の OMS Agent 導入時のトラブルシューティングで利用可能な内容について

leave a comment

基本的なインストール方法については次のドキュメントで解説されています。

OMS のワークスペースからエージェントをダウンロードして、ワークスペース ID とキーを設定することでインストールをすることができます。
インストール自体はトラブルが起こることはないと思うのですが、私の環境では「エージェントを導入しても OMS ワークスペースに接続できない」という端末が一部ありました。
この問題について問い合わせを行い、その際に教えていただいた内容が汎用的に使用できそうですので、同様の問題が出た際の参考としてまとめておきたいと思います。

OMS エージェントがワークスペースに接続できているかですが、最初に「コントロールパネル」の「システムとセキュリティ」にある「Microsoft Monitoring Agent」を起動して確認をします。
image
この中には「Azure Log Analytics」というタブがあり、そこからワークスペースに接続できているかを確認することができます。
正常に接続ができている場合には、下図の「状態」のように、チェックがついている画像が表示されます。
image
接続ができていない場合には、下図のように警告のアイコンとなります。
image
最初の確認のポイントですが、OMS のエージェントは「Microsoft Monitoring Agent」(HealthService) として、サービスで起動していますので、このサービスの稼働状況を確認します。
(上記の画像は、サービスを停止した際のエラーとなります)
image
このサービスが起動していれば、OMS エージェントのプロセスとしては起動している状態になっています。
次の確認ですが「TestCloudConnection.exe」を使用した接続確認を実施てみるとよいかと。
これは Validating Connectivity with Azure Security Center でも紹介されているツールとなります。
最新の OMS Agent であれば「C:\Program Files\Microsoft Monitoring Agent\Agent」に格納されていますので、そこから起動できます。
(ちなみに、OMS Agent のレジストリは「HKLM:SOFTWARE\Microsoft\Microsoft Operations Manager」になります)
このツールは単体で実行することができ、ワークスペースへの通信が行うことができるかを確認することができます。
正常に接続ができる場合は、次のようにテスト成功の表示が行われます。
image
このツールで接続ができないようでしたら、ネットワーク的な疎通に問題がある可能性が高いため、ネットワークの経路の確認をした方がよいかと。
ツールで接続ができているが、OMS ワークスペースに接続ができていない場合は、さらに情報の取得が必要となります。
 

■ログの取得

今回、私が遭遇したケースは、ツールでは接続の確認ができているが、ワークスペースに接続できないという事象でした。
最初の確認としては、イベントログの「アプリケーションとサービス ログ」の「Operations Manager」の内容を確認します。
(OMS Gateway としてインストールしている場合は「OMS Gateway Log」も併せて確認するとよいかと)
このログが OMS Agent のイベントログとなりますので、この中にエラーがないかを確認します。
image
私の環境では、次のようなエラーが発生していました。
image

HTTP 操作中にエラー "パラメーターが間違っています。" (87L) が発生しました。クエリは後で再試行されます。接続に関する問題の詳しいトラブルシューティング情報については、サポート技術情報の記事 KB3126513 をご覧ください。

ここまでは分かったのですが、「何のパラメーターが間違っているのか?」がわからず、問い合わせを出したところ、の調査のための情報を取得するために、 OMS Agent の ETW トレースのログ取得手順を教えていただきました。

  1. 管理者権限でコマンド プロンプトを起動し、以下のフォルダに移動します。
    C:\Program Files\Microsoft Monitoring Agent\Agent\Tools
  2. 以下のコマンドを実行します。
    StopTracing.cmd
  3. 以下のコマンドを実行します。
    FormatTracing.cmd
  4. 手順 3 の実施後「C:\WINDOWS\Logs\OpsMgrTrace」内のファイルを確認

これで、詳細なログを確認することができます。
今回私が遭遇した現象では、上記の ETW トレースの「TracingGuidsNative.log」に次のようなエラーが出力されていました。

[3]3336.6628::06/20/2018-10:20:07.549 [HealthServiceCommon] [] [Error] :CHttpClientBase::CHttpRequest::AddHeader{httpclientbase_cpp1549}WinHttpAddRequestHeaders(x-ms-OmsCloudId: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) for URL "https://xxxxxxxxx.oms.opinsights.azure.com/AgentService.svc/AgentTopologyRequest" failed with code 87(ERROR_INVALID_PARAMETER)
[3]3336.6628::06/20/2018-10:20:07.549 [HealthServiceCommon] [] [Error] :CHttpClientBase::CHttpRequest::AddCloudHeaders{httpclientbase_cpp1458}AddHeader name:(x-ms-OmsCloudId: ) value:(yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) failed with code 87(ERROR_INVALID_PARAMETER).
[3]3336.6628::06/20/2018-10:20:07.549 [HealthServiceCommon] [] [Error] :CHttpClientBase::CHttpRequest::BeginHttpRequest{httpclientbase_cpp961}AddCloudHeaders for URL "https://xxxxxxxxx.oms.opinsights.azure.com/AgentService.svc/AgentTopologyRequest" failed with code 87(ERROR_INVALID_PARAMETER)
[3]3336.6628::06/20/2018-10:20:07.549 [HealthServiceCommon] [] [Error] :CHttpClientBase::BeginHttpRequest{httpclientbase_cpp246}BeginHttpRequest for URL "https://xxxxxxxxx.oms.opinsights.azure.com/AgentService.svc/AgentTopologyRequest" failed with code 87(ERROR_INVALID_PARAMETER).
[3]3336.6628::06/20/2018-10:20:07.549 [HealthServiceCommon] [] [Error] :CHttpClientBase::BeginHttpRequest{httpclientbase_cpp395}BeginHttpRequest to URL "https://xxxxxxxxx.oms.opinsights.azure.com/AgentService.svc/AgentTopologyRequest" failed with code 87(ERROR_INVALID_PARAMETER)
[3]3336.6628::06/20/2018-10:20:07.549 [ServiceConnector] [] [Error] :CHttpClient::BeginRestHttpRequest{httpclient_cpp320}BeginHttpRequest to URL "https://xxxxxxxxx.oms.opinsights.azure.com/AgentService.svc/AgentTopologyRequest" failed with code 87(ERROR_INVALID_PARAMETER)
[3]3336.6628::06/20/2018-10:20:07.549 [ServiceConnector] [] [Error] :CBackgroundRestRequester::BeginRequest{backgroundrequester_cpp735}BeginRestHttpRequest for URL "https://xxxxxxxxx.oms.opinsights.azure.com/AgentService.svc/AgentTopologyRequest" failed with code 87(ERROR_INVALID_PARAMETER).
[3]3336.6628::06/20/2018-10:20:07.549 [ServiceConnector] [] [Error] :CBackgroundRequester::OnTimerCallback{backgroundrequester_cpp678}Background request for URL "https://xxxxxxxxx.oms.opinsights.azure.com/AgentService.svc/AgentTopologyRequest" failed with code 87(ERROR_INVALID_PARAMETER), will try again next interval.

 
「x-ms-OmsCloudId: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy」が今回不正なパラメータに該当していたもののようです。

(yyyy の部分は文字をマスクしているのではなく、実際のログ上も、このような表示となっていました)
調査の一環の中で「msinfo32」の情報取得も依頼されていたので、その情報も併せて確認してみたところ、次のような情報が出力されていました。

システム製造元	yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
システムモデル	yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

 
システム製造元の情報等に異常な値が設定されていますね…。
今回の環境ですが、Intel の NUC (NUC5i5MYHE) を使っていたのですが、他の環境ではこれらの情報はブランクが設定されており、上記のような異常値ではなかったのですよね。

(異常値でない NUC は正常に OMS のワークスペースに接続ができていました)
BIOS のバージョンに差があることは確認できた (異常値の方法は BIOS のバージョンが古い) ので、異常値が設定されている NUC の BIOS をアップデートしたところ、上記の異常値が解消され、OMS ワークスペースに正常に接続できるようになりました。
システム製造元の情報なども、OMS ワークスペースに連携されているようで、これらの値に異常値が設定されていることが、エージェントから接続できない (正確には、情報を送信しようとしてエラーになる) 原因となっているようでした。
BIOS 情報はレジストリの「HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS 」「HKEY_LOCAL_MACHINE\SYSTEM\HardwareConfig」あたりに、設定はあるのですが、これを直接変更しても効果は無いようで、再起動すると元の値に戻っていました。
異常値が設定されていると OMS ワークスペースにデータを連携できないので、回避策としては BIOS を更新して正常値になるように補正するぐらいですかね…。
BIOS の更新をして正常な状態に戻ってしまったので、これ以上の検証ができないのですが、ログの取得方法が分かったので、今後同様な問題が発生した場合の切り分けはできそうです。

Share

Written by Masayuki.Ozawa

6月 22nd, 2018 at 10:45 pm

Posted in Microsoft Azure

Tagged with ,

Leave a Reply