診断ログが出力されなくなる

こんにちは。

SharePoint サポートチームの伊沼です。

タイトルにある「診断ログ (別名: ULS (Unified Logging Service) ログ)」ですが、おもに SharePoint 上で何らかのトラブルが起きた際、現象の解析を行うために使われるテキスト ベースのログ ファイルです。

既定では SharePoint サーバー上の以下の場所に保存されています。

 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\LOGS

今回はこの診断ログにまつわる現象の一つとして、診断ログが記録されなくなる現象についてご紹介します。診断ログは、SharePoint で障害が発生したとき、トラブルシュートを行うために非常に有効な情報であり、サポートにお問い合わせいただく際には、現象の解析のために必ずと言っていいほど必要になる代物ですので、タイトルを見て「ログについての記事か、、、つまらなそうだから読み飛ばそ。 」なんて思う気持ちを是非押さえていただいて、最後までお付き合いいただければ幸いです。

具体的な現象について

診断ログが出力されない現象は、細かく分類すると 2 つの現象があります。2 つの現象では、実際の影響度が大きく異なりますが、どちらにも共通して言えるのは、診断ログに以下のようなログが記録されることです。

Tracing Service lost trace events. Current value 3.

この記録は、本来診断ログに記録されるべき何らかの情報が記録できなかったことを示しています。

この記録がされる現象の 2 つのうち 1 つめは、サーバーの負荷状況などにより、上記のログがまれに記録されるが、その後また正常に記録が開始される場合です。この記録は MOSS, WSS の通常運用中でもよく見られるログですが、一時的なものですので、これによる影響はさほど大きくありません。

2 つめは、上記の Lost Tarce Events のログが記録された以降、本来出力されるべきログが一切記録されなくなる現象が発生する場合があります。具体的には、以下のような記録が延々と記録されます。

XX/XX/XXXX XX:XX:XX.XX wsstracing.exe (0x0560) 0x0160 ULS Logging Unified Logging Service uls1 Monitorable Tracing Service lost trace events. Current value 3.

XX/XX/XXXX XX:XX:XX.XX wsstracing.exe (0x0560) 0x0160 ULS Logging Unified Logging Service uls1 Monitorable Tracing Service lost trace events. Current value 6.

XX/XX/XXXX XX:XX:XX.XX wsstracing.exe (0x0560) 0x0160 ULS Logging Unified Logging Service uls1 Monitorable Tracing Service lost trace events. Current value 2.

・・・・

この状態になると、上記の Tracing Service lost trace events が記録されるだけで、どれだけ待ってもまともなログが記録されない状況になります。こんな状態では何か問題があった時にログから原因調査ができなくなってしまいますね。以降ではこの 2 つ目の現象について詳細をご紹介したいとおもいます。

現象が発生する条件について

まず初めにお断りしておかなければならないのは、診断ログが記録されなくなる現象が発生する明確な条件はありません。つまり、ある対策を事前に実施しておけばこの現象を防げる、、というような明確な対処方法はありません。しかし、以下にあげる項目に多く該当する場合には、この現象が発生する可能性が高くなることが確認されています。

・クロールなどの大量のログが出力されるような処理が行われている

・診断ログが大量に出力されるように設定が変更されている

・サーバーのスペックが弱い

未然の抑制方法について

上述から、この現象をできるだけ未然に抑制するためには、以下の対処方法が有効です。

・クロールやプロファイルのインポートなどのスケジュールを見直す (処理が重複しないようにうまい具合にスケジューリングする)

・診断ログの出力レベルを適切に設定する (具体的な方法は https://technet.microsoft.com/ja-jp/library/cc288649.aspx 参照)

・サーバー スペックをパワーアップする

ただし、これらを実施した場合にも、状況によっては現象が起きる可能性はあります。 診断ログが記録されなくなった現象が起こったことはイベントログにも記録されないため、何か他のトラブルが起きたタイミングで診断ログを見たときに、「あり?何も記録されてない!!」という事態にならないように、診断ログがちゃんと出力されているかどうかを定期的にチェックすることをお勧めします。この現象が起きたときには診断ログのファイル サイズが極端に小さくなるので、診断ログのファイルの中身をいちいち確認するのが面倒な方は、ファイルサイズからでもある程度の判断はできます。

現象発生後の対処方法について

じゃあ実際に診断ログが出力されなくなってしまったらどうしたらいいの? と思われたかた、ご安心ください。診断ログは、Windows SharePoint Services Tracing (SPTrace) サービスという独立したサービスで出力処理が行われており、このサービスを再起動することで対処することができます。

<手順>

1. MOSS サーバー上でコマンド プロンプトを起動します。

2. net stop SPTrace と入力して Enter キーを押します。

3. net start SPTrace と入力して Enter キーを押します。

これで SPTrace が再起動されます (※補足) ので、正常にログが記録され始めるはずです。

補足

診断ログの出力処理が行われている最中に SPTrace サービスを停止すると、停止のタイミングにより、サービスが停止が正常にできずにハングしてしまう現象が報告されています。この現象が発生した場合には、サーバーの再起動を行っていただくことで対処することができますが、SPTrace サービス停止前に SharePoint 関連のサービスを以下の手順で停止することで診断ログの書き込み処理が行われなくなるため、SPTrace 停止時にハングは起きません。ただし、この手順では W3SVC (World Wide Web Publishing Service) サービスを停止するため、SharePoint サイトへのアクセスができなくなるので注意が必要です。

net stop DCLoadBalancer /y

net stop DCLauncher /y

net stop SPTimerV3 /y

net stop OSearch /y

net stop SPSearch /y

net stop W3SVC /y

net stop IISAdmin /y

net stop SPWriter /y

net stop SPTrace /y

net stop SPAdmin /y

詳細については以下のサポート技術情報をご覧ください。

Windows Server 2003 stops responding (hangs) during a shutdown if SharePoint Services Tracing is enabled

https://support.microsoft.com/kb/971067