Wi-Fiが遅い!?AirMac ExtremeやAirMac Expressの通信ログをMacのコンソールから確認してみよう
突然Wi-Fiが遅くなった、Wi-Fiからたびたび切断される、iPhoneがWi-Fiに接続できなくなった、などWi-Fi関連のトラブルに見舞われた場合には、あなたの使用しているネットワーク機器が原因かもしれない。
ここでは、AirMacワイヤレス装置(Express、Extremeなど)を例に、いざというときのために通信ログを確認する手法を身につけておこう。
旧バージョンのAirMacユーティリティをインストールする
AirMacワイヤレス装置のログは、AirMacユーティリティ5.6.1で確認できる。ただし、同バージョンのユーティリティは、OS X Lion以降のOSに対応していないため、インストール方法がやや特殊だ。
AirMacユーティリティ5.6.1をMountain Lionにインストールする方法は、AirMacユーティリティ5.6.1をMountain Lionにインストールし、ログと統計情報を参照する方法を参照してほしい。OS X Lionでも同様だ。
AirMacユーティリティで、AirMacワイヤレス装置の通信ログを確認することで、Wi-Fiから頻繁に切断されてしまう、といった症状があらわれたとき、原因を解析するために使用することができる。
AirMacユーティリティで通信ログを確認するためには、同ユーティリティの「詳細」メニューから「ログと統計情報」タブを選択し、「ログと統計情報」ボタンをクリックすればよい。
しかし、ログを確認するために、わざわざAirMacユーティリティを起動するのは少々手間がかかる。ここでは「Syslog」を利用して、Macのコンソールから簡単にAirMacワイヤレス装置の通信ログを確認する方法をご紹介しよう。
「Syslog」とは何か
「Syslog」とは、ログをネットワーク上の機器に送信し、送信先でログを一括で管理するための仕組み(プロトコル)である。「Syslog」は、送信元(クライアント)と送信先(サーバ)から構成される、クライアント・サーバ型のプロトコルだ。
「Syslog」を使用するためには、送信元、送信先の各々がSyslogプロトコルに対応している必要がある。AirMacワイヤレス装置にはSyslogを送信する仕組みが、OS Xには標準でSyslogを受信する仕組み(syslogd)が用意されている。
AirMacワイヤレス装置のSyslogの送信先をMacに設定する
AirMacユーティリティ5.6.1を起動し、「ログと統計情報」を表示する。「Syslog書き込み先アドレス」にSyslog送信先のMacのIPアドレスを、「Syslogレベル」に「5 – 通知」を設定しよう。これで、「Syslogレベル」が「通知」以上のメッセージが、Syslogの受信元であるMacに記録される。
「Syslogレベル」は、ログメッセージの重大度である。重大度とは、開発者向けのデバッグメッセージから、ネットワーク機器の故障に繋がりかねない致命的な(Fatal)メッセージを分類するための、「種類」のことだ。一般的にネットワーク機器の通信ログを監視するためには「5 – 通知」で十分だ。より詳細な解析が必要になった場合には、重大度のレベルを下げればよい。
DHCPによりSyslogサーバであるMacのIPアドレスが変更されてしまうとSyslogが受信できなくなってしまう。そのため、MacのIPアドレスはあらかじめ固定しておくことが望ましい。「システム環境設定」の「ネットワーク」から、IPアドレスをあらかじめ固定にしておこう。
また、DHCPにより、固定したMacのIPアドレスが他のネットワーク機器に割り振られないように、あらかじめ「DHCPの予約」をしておこう。AirMacユーティリティでは、「インターネット」メニューの「DHCP」タブから設定を行う。
MacのSyslogデーモンでAirMacワイヤレス装置のSyslogを受信する
今度は、Syslogの受信側となるMacで、AirMacワイヤレス装置のSyslogを受信するための準備を進めよう。
Syslogの保存先のログファイルを指定する
まずは、AirMacワイヤレス装置から受信したSyslogを、Macのログファイルに書き込むための設定を行おう。OSの設定ファイルを変更することになるので、事前に必ずバックアップをとろう。準備が整ったら、ターミナルを開いて、以下のコマンドを実行しよう。
$ sudo nano /etc/syslog.conf
ここでは私が愛してやまないnanoエディタを使用しているが、viでも何でもお気に入りのエディタで編集を行えばよい。ファイルを開いたら、最終行に以下の値を追加しよう。
local0.* /var/log/airport.log
「local0」はSyslogの「ファシリティ」を表す。「ファシリティ」とは、Syslogの分類を示すもので、アプリケーションによって固有に決まる。AirMacワイヤレス装置のファシリティは「local0」だ。
「local0.*」とは、ファシリティが「local0」のSyslogに関して、すべて(*)受信しなさい、という意味だ。「*」には、代わりにログメッセージの重大度(fatal、error、noticeなど)を設定することもできる。ここでは、AirMacワイヤレス装置側で送信するログメッセージの重大度を制御(5に固定)しているため、「*」とした。
「local0」というファシリティを持つアプリケーションからのメッセージを、全て「/var/log/airport.log」に記録しなさいという意味になる。ログファイルの名前は「airport.log」としたが、「hoge.log」でもなんでも構わない。
以上で、AirMacワイヤレス装置からのメッセージを受信した場合に記録するログファイルの設定は完了だ。
SyslogデーモンでAirMacワイヤレス装置のSyslogを受信する
最後に、実際にSyslogデーモン(syslogd)で、AirMacワイヤレス装置のメッセージを受信する設定を行おう。ここでもあらかじめ設定ファイルのバックアップを取得することをおすすめしたい。
Syslogデーモンの設定ファイル(plist)の修正を行う必要があるが、plist(プロパティリスト)はバイナリファイルのため、そのままではテキストエディタ(nanoエディタなど)で編集ができない。まずは、バイナリファイルをテキストファイル(xmlファイル)に変換してから、修正を行う必要がある。
ターミナルを開いて、以下のコマンドを実行しよう。
$ sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist $ sudo nano /System/Library/LaunchDaemons/com.apple.syslogd.plist
「com.apple.syslogd.plist」ファイルをお気に入りのテキストエディタ(例えば、nanoエディタ)で開いたら、以下の行を「AppleSystemLogger」や「BSDSystemLogger」と同じ階層に追加しよう。
<key>NetworkListener</key> <dict> <key>SockServiceName</key> <string>syslog</string> <key>SockType</key> <string>dgram</string> </dict>
完成形は以下のようになるはずだ。(一部省略)
<key>Sockets</key> <dict> <key>AppleSystemLogger</key> </dict><dict> <key>SockPathMode</key> <integer>438</integer> <key>SockPathName</key> <string>/var/run/asl_input</string> </dict> <key>BSDSystemLogger</key> <dict> <key>SockPathMode</key> <integer>438</integer> <key>SockPathName</key> <string>/var/run/syslog</string> <key>SockType</key> <string>dgram</string> </dict> <key>NetworkListener</key> <dict> <key>SockServiceName</key> <string>syslog</string> <key>SockType</key> <string>dgram</string> </dict>
修正が完了したら、plistファイルを元の状態(バイナリファイル)に戻そう。xmlファイルをバイナリファイルに変換するためには、ターミナルで以下のコマンドを実行する。
$ sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist
Syslogデーモンを再起動する
修正した設定ファイルをSyslogデーモンに読み込ませるために、Syslogデーモンを再起動しよう。Syslogデーモンを再起動するためには、「launchctl」コマンドを利用する。具体的には、ターミナルで以下のコマンドを実行すればよい。
$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist $ sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
コンソールでSyslogの受信を確認する
Syslogデーモンの再起動まで完了したら、「コンソール」でSyslogが正常に受信できているかどうかを確認しよう。「コンソール」は、アプリケーションフォルダのユーティリティの下にある。
まとめ
ネットワーク機器に関するトラブルは、インターネットに接続している限り免れられない運命にある。いつでもどこでもトラブルシューティングできる体制を整えておきたい。身構える必要は全くないが、普段から準備万全にしておくと、いざというときに慌てる必要がなくなる。
今回は、AirMacワイヤレス装置を例に、全てのログファイルをMacに集約する方法をご紹介した。
SyslogをMacに収集することで、コンソールのインタフェースをそのまま利用してAirMacワイヤレス装置のログを確認することができる。文字列検索など、AirMacユーティリティにはない機能をコンソールは備えているので、AirMacワイヤレス装置を監視したい場合には、こちらの方法をおすすめしたい。