昨日、研修用のデモマシンで突然 SharePoint サイトにアクセス出来なくなるトラブルに遭遇したため、備忘録として、その経緯を記載しておきます。トラブルシューティング方法の流れを確認するには参考になるのではないかと思います。
※とはいえ、これは滅多にないと思いますが。ちょうど先週はサーバー内部のファイル構造などを説明する研修を行っていたので(SharePoint Server 2013 周辺技術の基礎コース) このときデモしながら、なんか、やってしまったかも。
現象と調査過程
サーバー全体管理サイトをはじめ、すべてのSharePointサイトにアクセスできなくなる。しかも、アクセスすると 404 エラーで、サーバーにはアクセスできたが、指定したファイルがないという。
そこで、何が起きたのか確認しようとまずイベントログを見るが特に問題は上がっていない。そこで、早速問題の切り分けを試みた。
- ネットワーク設定は正常か
- IISは正常に稼働しているか
- SharePoint の DB 側は正常に稼働しているか
ネットワーク設定に問題がない。IISについては、新規に単純なIISサイトを作ってアクセス出来るか確認すると問題がない。アプリケーション プールも正常稼働している。アプリケーション プール IDも変更はない。ということは、SharePoint Web アプリケーションが使っている仮想ディレクトリにはアクセスできるということか? たとえば、<サイトURL>/_layouts/15/Images/spcommon.png などを試すと、アクセスできる。ということはサイトの設定ページにはアクセスできるということ。 <サイトURL>/_layouts/15/settings.aspx などはOK。
では、念のためDB側はどうか。アプリケーション プールIDに対して各SharePoint DBが持つべき権限を確認する。他ファームの正常なサーバーと設定比較しても、これも問題ない。次に、PowerShell から、サイトコレクションやサイトのオブジェクトを取得してみる。これも問題ない。サイトの設定変更など試みる。これも問題なくできる。ということは、SharePoint サーバーのIIS 経由でのアクセスがだめなだけで、SharePoint の本体であるDB側は問題ないよう。念のため、手持ちのSharePoint Server Side Object Model を使って作っているアプリで、サイト内のアイテムなども取得出来るか確認するがこれも問題ない。
イベントビューアにもSharePointに関するクリティカルなエラーは出ていないため、となると、やはり IIS 側が怪しい。IISに関わるローカルグループの設定も確認する。ローカルの IIS_IUSRSグループメンバー、WSS_WPGグループメンバーなど設定は既定のままだ。そこで再び、サイトの設定ページにアクセスする。サイトの権限設定ページをクリックすると、エラーとなった。
ここで関連付けIDを得られたので、当該する日付のSharePoint の URL ログを確認してみる。先ほど得た 関連付けID を元に一致する Correlation ID を持つログを確認する。どうやら seattle.master を探しに行って見つからなかったといっているようだ(ついでに、SharePoint 2013 だけでなく、過去のサーバーエディションのフォルダーも想定して探しに行っていることがわかって驚いた。15は SharePoint 2013 だが、14は SharePoint 2010 、12は SharePoint 2007, 60は SharePoint Portal Server 2003用のディレクトリ) 。
このファイルが存在しているか、確認してみたほうがよさそうだ。ということで、 SharePoint ルートディレクトリをたどっていくと、Global フォルダーごとごっそりなくなっていた。これが原因か? ゴースト化されたマスターページが参照出来なかったので、404 エラーとなっていたといこうとでつじつまも合う。
解決
他の正常稼働しているSharePoint ファームのサーバーから Global フォルダーをコピーし、デモ用マシンに再配置。これで、問題なく、どのサイトにもアクセスできるようになった。
ちなみに、今回のトラブルシューティングに関わるような内容を学べるのが、弊社オリジナルの "Microsoft SharePoint Server 2013 と周辺技術の基礎" コースです(ついでに宣伝です)。
コメント