Orgad Kimchi著
2013年9月公開
この記事では、Oracle Solaris 11のツールの機能を示すために、3つのユースケースを確認していきます。最初のユースケースでは、2つのシステム間のネットワーク帯域幅を測定する方法を説明します。2つ目のユースケースでは、特定のTCPポート上のネットワーク統計を観測する方法を説明します。さらに、最後のユースケースでは、特定の期間におけるネットワーク・リソース使用統計の履歴を収集し表示する方法について、例を使用して説明します。
|
これらのツールを使用するメリットは次のとおりです。
この記事で示す例では、すべての構成要素は、Oracle Solaris Zones、ZFS、ネットワーク仮想化テクノロジーを使用してインストールされます。そのアーキテクチャを図1に示します。
図1
最初のユースケースでは、2つの環境間のネットワーク帯域幅を測定します。
注:この記事で紹介するツールや手順は、物理システム間にも仮想システム(例:Oracle Solaris Zones)間にも使用できます。
パフォーマンス・ベンチマークの実行時には、ネットワーク帯域幅を測定することが望まれます。この測定は、その後のネットワーク・スケーラビリティの測定に役立ちます。また、ネットワークの処理能力をテストすることで、特定環境における制限要因となるネットワークを除去できます。
この種のタスクに役立つツールは、iperf
(1)ツールです。このツールでは、ネットワークのパフォーマンスを測定できます。また、TCPまたはUDPのスループットを観測し、リアルタイム統計を取得できます。このツールを、2つのOracle Solaris Zones間の最大ネットワーク帯域幅を測定するために使用します。
Oracle Solaris 11のネットワーク仮想化機能を使用すれば、VNIC、仮想スイッチ(vSwitch)、高度なネットワーク・コンポーネント(例:ロードバランサ、ルーター、ファイアウォール)などのあらゆる物理的なネットワーク・トポロジをOracle Solarisオペレーティング・システム内部に構築できます(図2を参照)。
このテクノロジーを使用するメリットとして、過剰なネットワーク機器への投資が不要になるため、インフラストラクチャ・コストが削減されます。また、すべてのネットワーク構成要素がハードウェアではなくソフトウェアに基づいたものになるため、インフラストラクチャの導入にかかる時間が大幅に短縮されます。
図2
このユースケースでは、物理ネットワーク・カードの上層にVNICを作成する機能を利用します。
まずは、VNICを作成しましょう(後の手順で、作成したVNICをOracle Solaris Zonesに関連付けます)。
root@global_zone:~# dladm create-vnic vnic0 -l net0 root@global_zone:~# dladm create-vnic vnic1 -l net0
dladm show-vnic
コマンドを使用して、VNICが作成されたことを確認します。
root@global_zone:~# dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE VID vnic0 net0 1000 2:8:20:c0:c:d0 random 0 vnic1 net0 1000 2:8:20:7c:9:c6 random 0
vnic0
とvnic1
という2つのVNICが作成されたことを確認できます。また、それらのMACアドレスと関連付けられた物理リンク(net0
)も表示されます。
source_zone
)の作成Oracle Solaris Zonesは、Oracle Solarisで利用できる組込みの仮想化テクノロジーです。この最初のユースケースでは、Oracle Solaris Zonesにテスト環境を格納します。
source_zone
ゾーンとtarget_zone
ゾーン用のファイル・システムをまだ作成していない場合は、次のコマンドを実行します。
root@global_zone:~# zfs create -o mountpoint=/zones rpool/zones
zonecfg
コマンドは、第1ゾーンsource_zone
を作成するために使用できます。ゾーンを作成するために必要となる最小限の情報は、名前とゾーンパスです。さらに、前項で作成したvnic0
というVNICを追加します。
root@global_zone:~# zonecfg -z source_zone Use 'create' to begin configuring a new zone. zonecfg:source_zone> create create:Using system default template 'SYSdefault' zonecfg:source_zone> set zonepath=/zones/source_zone zonecfg:source_zone> add net zonecfg:source_zone:net> set physical=vnic0 zonecfg:source_zone:net> end zonecfg:source_zone> verify zonecfg:source_zone> commit zonecfg:source_zone> exit
次に、ゾーンをインストールします。
root@global_zone:~# zoneadm -z source_zone install
この後、ゾーンを起動する必要があります。
root@global_zone:~# zoneadm -z source_zone boot
source_zone
にログインします。システム構成ツールを使用して、ゾーンのシステム構成を行います。
root@global_zone:~# zlogin -C source_zone
システム構成ツールの対話型画面で、次の情報を指定します。
さらに、rootパスワードを指定します。
構成が終了したら、ゾーンの起動に関するメッセージが表示されます。ゾーン・コンソールのloginプロンプトで、root
としてゾーンにログインします。
source_zone console login:root Password:
ゾーンへのログイン後、ipadm
コマンドを使用してネットワーク構成を確認します。
root@source_zone:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 vnic0/v4 static ok 10.0.0.1/24 lo0/v6 static ok ::1/128 vnic0/v6 addrconf ok fe80::8:20ff:fec0:cd0/10
この結果から分かるように、vnic0
のIPアドレスは10.0.0.1です。
次に、リスト1のコマンドを使用して、source_zone
内にiperf
ツールをインストールします。
root@source_zone:~# pkg install iperf Packages to install:1 Create boot environment:No Create backup boot environment:No DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 1/1 6/6 0.0/0.0 942k/s PHASE ITEMS Installing new actions 20/20 Updating package state database Done Updating image state Done Creating fast lookup database Done
リスト1
"~.
"エスケープ・シーケンスを使用して、ゾーン・コンソールを終了します。
source_zone:~# ~. [Connection to zone 'source_zone' console closed]
target_zone
)の作成次に、zonecfg
コマンドを使用して、大域ゾーンからターゲット・ゾーンを設定します。
ゾーン構成時に、ゾーン名、ゾーンパス、VNIC名(vnic1
)を入力します。
root@global_zone:~# zonecfg -z target_zone Use 'create' to begin configuring a new zone. zonecfg:target_zone> create create:Using system default template 'SYSdefault' zonecfg:target_zone> set zonepath=/zones/target_zone zonecfg:target_zone> add net zonecfg:target_zone:net> set physical=vnic1 zonecfg:target_zone:net> end zonecfg:target_zone> verify zonecfg:target_zone> commit zonecfg:target_zone> exit
次に、ゾーンをインストールします。
root@global_zone:~# zoneadm -z target_zone install
その後、ゾーンを起動します。
root@global_zone:~# zoneadm -z target_zone boot
作成したゾーンのステータスを確認します。
root@global_zone:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 1 source_zone running /zones/source_zone solaris excl 2 target_zone running /zones/target_zone solaris excl
target_zone
とsource_zone
のステータスがrunning
になっています。
target_zone
にログインします。
root@global_zone:~# zlogin -C target_zone
システム構成ツールの対話型画面で、次の情報を指定します。
さらに、rootパスワードを指定します。
ゾーン構成の終了後、ゾーン・コンソールのloginプロンプトで、root
ユーザーとしてゾーンにログインします。
target_zone console login:root Password:
ipadm
コマンドを使用して、ネットワーク構成を確認します。
root@target_zone# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 vnic1/v4 static ok 10.0.0.2/24 lo0/v6 static ok ::1/128 vnic1/v6 addrconf ok fe80::8:20ff:fe7c:9c6/10
この結果から分かるように、vnic1
のIPアドレスは10.0.0.2です。
次に、target_zone
から、source_zone
にpingできることを確認します。
root@target_zone:~# ping 10.0.0.1 10.0.0.1 is alive
注:環境によっては、Oracle Solaris 11のファイアウォールによりネットワーク・トラフィックがブロックされることがあります。セキュリティ・ポリシー上の問題がなければ、ファイアウォール・サービスを無効化できます。そのためには、svcadm disable ipfilter
コマンドを使用するか、2つの環境間のネットワーク・トラフィックを有効化するためのファイアウォール・ルールを追加します。Oracle Solarisのファイアウォールの例については、Securing the Network in Oracle Solaris 11.1を参照してください。
次のコマンドを使用して、iperf
ツールをインストールします。
root@target_zone:~# pkg install iperf
iperf
の測定を実行するには、ネットワーク・トラフィックを生成するサーバーとクライアントの両方を構築する必要があります。
そのため、ターゲット・ゾーンで、次のコマンドを使用してiperf
コマンドをサーバー・モードで実行します。引数の意味は次のとおりです。
-s
:サーバー・モードを指定する。-l
:読取り/書込みバッファ長(128K)を設定する。root@target_zone:~# iperf -s -l 128k
iperf
コマンドの実行後、ターミナルに次のメッセージが表示されます。
------------------------------------------------------------ Server listening on TCP port 5001 TCP window size:125 KByte (default) ------------------------------------------------------------
次に、ソース・ゾーンでiperf
クライアントを実行します。
別のターミナル・ウィンドウからソース・ゾーンにログインします。
global_zone# zlogin source_zone
ソース・ゾーンで、次のiperf
コマンドをクライアント(つまりローダー)モードで実行します。引数の意味は次のとおりです。
-c
:クライアント・モードでのコマンドを指定する。-l
:読取り/書込みバッファ長(128K)を指定する。-P
:クライアント・スレッドの並行実行数(4)を指定する。-i n
:周期的な帯域幅レポートの表示間隔(n秒、このケースでは1秒)。-t
:秒単位のデータ転送時間(180秒)を指定する。root@source_zone:~# iperf -c 10.0.0.2 -l 128k -P 4 -i 1 -t 180
注:10.0.0.2はtarget_zone
のIPアドレスです。
iperf
コマンドの実行後、実行時統計の表示が開始されます。
------------------------------------------------------------ Client connecting to 10.0.0.2, TCP port 5001 TCP window size:48.0 KByte (default) ------------------------------------------------------------ [ 6] local 10.0.0.1 port 54972 connected with 10.0.0.2 port 5001 [ 4] local 10.0.0.1 port 64738 connected with 10.0.0.2 port 5001 [ 5] local 10.0.0.1 port 60614 connected with 10.0.0.2 port 5001 [ 3] local 10.0.0.1 port 57875 connected with 10.0.0.2 port 5001 [ ID] Interval Transfer Bandwidth [ 5] 0.0- 1.0 sec 316 MBytes 2.65 Gbits/sec
target_zone
で、vnic1
ネットワーク・インタフェースのネットワーク統計を表示するために、dlstat
(1m)コマンドを使用します。dlstat
(1m)コマンドは、物理データリンクまたは仮想データリンク(例:VNIC)に関する実行時のネットワーク使用統計をレポートします。
別のターミナルを開き、target_zone
にログインします。
次のコマンドは、vnic1
の統計を1秒間隔で表示します。
root@target_zone:~# dlstat -i 1 vnic1 LINK IPKTS RBYTES OPKTS OBYTES vnic1 144.51M 217.32G 18.69M 1.23G vnic1 806.08K 1.21G 100.83K 6.66M vnic1 813.68K 1.22G 101.72K 6.71M vnic1 846.54K 1.27G 105.89K 6.99M vnic1 868.58K 1.31G 108.63K 7.17M ^C
注:dlstat
コマンドを停止するには、[Ctrl]キーを押しながら[c]キーを押します。
この結果から分かるように、dlstat
コマンドにより次の情報が表示されます。
IPKTS
)RBYTES
)OPKTS
)OBYTES
)多数のOracle Solaris Zonesがさまざまなネットワーク・ワークロードを実行するマルチテナント・クラウド環境において、おもな課題の1つは、過負荷のシステム・リソースを見つけることです。
Oracle Solaris 11の監視ツールを使用すれば、ボトルネックを見つけるために、特定のゾーンおよび特定のVNICを指定してネットワーク測定を実行できます。例として、ある特定のゾーンと関連付けられたネットワーク・カードのネットワーク統計を表示しましょう。
観測を開始する前に、iperf
ネットワーク・ワークロードをsource_zone
から再実行する必要があります。
root@source_zone:~# iperf -c 10.0.0.2 -l 128k -P 4 -i 1 -t 180
target_zone
とsource_zone
のネットワーク統計を表示するには、大域ゾーンから次のコマンドを実行します。
root@global_zone:~# dlstat -i 1 -z target_zone,source_zone LINK IPKTS RBYTES OPKTS OBYTES source_zone/vnic0 16.07M 1.06G 4.62M 177.86G target_zone/vnic1 123.48M 185.71G 16.06M 1.06G ^C
注:dlstat
コマンドを停止するには、[Ctrl]キーを押しながら[c]キーを押します。
この結果から分かるように、両方のゾーンとそのVNICを同時に監視できました。
各ゾーンおよび関連付けられたVNICの送信済みバイト数(OBYTES
)や受信済みバイト数(RBYTES
)を観測できます。
マルチテナント・クラウド環境でネットワークを監視するために使用できる便利なコマンドには、他にもzonestat
(1)コマンドがあります。
たとえば、ゾーンごとのネットワーク統計を、CPUやメモリの使用状況とともに監視できます。
root@global_zone:~# zonestat -z source_zone -z target_zone 1 Collecting data for first interval... Interval:1, Duration:0:00:01 SUMMARY Cpus/Online:4/4 PhysMem:15.9G VirtMem:17.9G ---CPU---- --PhysMem-- --VirtMem-- --PhysNet-- ZONE USED %PART USED %USED USED %USED PBYTE %PUSE [total] 3.15 78.9% 1838M 11.2% 3857M 20.9% 484K 0.04% [system] 1.86 46.6% 1224M 7.47% 3430M 18.6% - - source_zone 0.59 14.7% 62.1M 0.37% 51.3M 0.27% 483K 0.04% target_zone 0.47 11.9% 62.4M 0.38% 51.5M 0.27% 132 0.00% ^C
注:zonestat
コマンドを停止するには、[Ctrl]キーを押しながら[c]キーを押します。
source_zone
ゾーンとtarget_zone
ゾーンのCPU、メモリ、ネットワークに関するユーティリティ・レポートを表示できます。各ゾーンの使用状況は、システム・リソースおよびゾーンの構成済み上限値に対する割合(%)としてレポートされます。
特定のリソース(例:ネットワーク)の詳細を出力するために、-r
オプションを使用できます。また、-x
オプションを使用すれば、リスト2のような詳細情報を含む拡張ビューを表示できます。
root@global_zone:~# zonestat -z source_zone -z target_zone -r network -x 1 Collecting data for first interval... Interval:1, Duration:0:00:01 NETWORK-DEVICE SPEED STATE TYPE net0 1000mbps up phys ZONE LINK TOBYTE MAXBW %MAXBW PRBYTE %PRBYTE POBYTE %POBYTE [total] net0 926M - - 300 0.00% 144K 0.11% global net0 1368 - - 300 0.00% 888 0.00% target_zone vnic1 463M - - 0 0.00% 0 0.00% source_zone vnic0 463M - - 0 0.00% 143K 0.11% source_zone source_zone/net0 120 - - 0 0.00% 0 0.00% target_zone target_zone/net0 120 - - 0 0.00% 0 0.00%
リスト2
注:zonestat
コマンドを停止するには、[Ctrl]キーを押しながら[c]キーを押します。
リスト2の出力には次の情報が含まれています。
LINK
)TOBYTE
)MAXBW
)%MAXBW
)PRBYTE
)PRBYTE
の受信に使用された帯域幅の割合(%)(%PRBYE
)POBYTE
)POBYTE
の送信に使用された帯域幅の割合(%)(%POBYE
)iperf
ベンチマーク結果のサマリーを作成しましょう。
ネットワーク・ロードの完了後、iperf
によってベンチマーク結果のサマリーが出力されます。
target_zone
では、次のようなベンチマーク結果のサマリーが表示されます。
... ... [ ID] Interval Transfer Bandwidth [SUM] 0.0-180.0 sec 32.2 GBytes 9.21 Gbits/sec
このiperf
ベンチマーク結果から分かるように、2つのOracle Solaris Zones間の最大ネットワーク帯域幅は9.21ギガビット/秒です。
その他の興味深い点として、この値は、複数のアプリケーションを異なるシステムにインストールするのではなく、1台のシステム上のOracle Solaris Zonesにインストールすることで大きなメリットが得られることを表しています。Oracle Solaris Zonesを使用する場合、ネットワーク・トラフィックをシステム外部のネットワークに送信する必要がありません。そのため、たとえば複数のシステムが1ギガビットの物理ネットワークで接続された環境と比較して、非常に短い待機時間で非常に高いスループットを達成できます。その他の例については、How to Control Your Application's Network Bandwidthを参照してください。
注:ネットワーク・ベンチマークの結果は、サーバー・モデル、ネットワーク・カード、ネットワーク・インフラストラクチャ機器によって変動する可能性があります。
2つ目のユースケースでは、特定のTCPまたはUDPネットワーク・ポートにおける2つのシステム間(物理システムでも仮想システムでも可能)のネットワーク・トラフィックを測定します。
dlstat
(1M)コマンドとzonestat
(1)コマンドは帯域幅の測定に便利ですが、特定のネットワーク・ポート上のネットワーク・トラフィックを監視する機能はありません。
特定のTCPまたはUDPポートを監視する機能は、同じアプリケーションを実行する2つのシステム間(例:Webサーバーが2つのデータセンター間でレプリケーションされた環境)のパフォーマンス問題を分析する必要がある場合に便利です。
このユースケースでは、2つのOracle Solaris Zones間のTCPポート443におけるネットワーク帯域幅を測定します(図3を参照)。まず、測定するネットワーク・カード上のフローを設定します。
フローとは、Oracle Solaris 11の新しいネットワーク仮想化アーキテクチャに組み込まれた、洗練されたサービス品質メカニズムです。フローを使用すれば、特定のネットワーク・インタフェース上の特定のネットワーク・ポートについて、ネットワーク帯域幅の測定や上限設定を行うことができます。
さらに、フローの作成、変更、削除は、大域ゾーンでも非大域ゾーンでも実行できます。
図3
次の例では、vnic1
ネットワーク・インタフェース上のTCP 443ネットワーク・ポートに関連付けられるフローを設定します。
target_zone
で、フローを有効化します。
root@target_zone:~# flowadm add-flow -l vnic1 -a transport=TCP,local_port=443 https-flow
注:フローを有効化または無効化するために、ゾーンを再起動する必要はありません。これは、本番システムでネットワークのパフォーマンス問題をデバッグする必要がある場合に非常に便利です。
フローが作成されたことを確認します。
root@target_zone:~# flowadm show-flow FLOW LINK IPADDR PROTO LPORT RPORT DSFLD https-flow vnic1 -- tcp 443 -- --
関連付けられているVNIC(vnic1
)とTCPポート番号(443
)に対してhttps-flow
フローが作成されています。
target_zone
で、[Ctrl]キーを押しながら[c]キーを押してiperf
サーバーを停止します。
target_zone
で、再度iperf
サーバーを起動します。引数の意味は次のとおりです。
-s
:サーバー・モードを指定する。-l
:読取り/書込みバッファ長(128K)を設定する。-p
:ネットワーク・ポート番号(443)を指定する。root@target_zone:~# iperf -s -l 128k -p 443 ------------------------------------------------------------ Server listening on TCP port 443 TCP window size:125 KByte (default) ------------------------------------------------------------
今回は、サーバーがTCPポート番号443でリスニングしていることを確認できます。
ローダーを開始するには、source_zone
でiperf
コマンドを実行します。引数の意味は次のとおりです。
-c
:クライアント・モードを指定する。-l
:読取り/書込みバッファ長(128K)を設定する。-P
:クライアント・スレッドの並行実行数(4)を指定する。-i n
:周期的な帯域幅レポートの表示間隔(n秒、このケースでは1秒)。-t
:秒単位のデータ転送時間(180秒)を指定する。-p
:ポート番号(443)を指定する。source_zone:~# iperf -c 10.0.0.2 -l 128k -P 4 -i 1 -t 180 -p 443
target_zone
では、flowstat
(1M)コマンドを使用できます。このコマンドは、ユーザー定義のフローに関する実行時統計をレポートします。受信側の統計のみ、または送信側の統計のみをレポートすることもできます。さらに、指定したリンク上のすべてのフローに関する統計や、特定のフローに関する統計を表示することもできます。
次のコマンドで、TCPポート443を監視しているhttps-flow
フロー上の帯域幅のレポートを表示します。
root@target_zone:~# flowstat -i 1 FLOW IPKTS RBYTES IDROPS OPKTS OBYTES ODROPS https-flow 24.72M 37.17G 0 3.09M 204.08M 0 https-flow 749.28K 1.13G 0 93.73K 6.19M 0 https-flow 783.68K 1.18G 0 98.03K 6.47M 0 https-flow 668.83K 1.01G 0 83.66K 5.52M 0 https-flow 783.87K 1.18G 0 98.07K 6.47M 0 https-flow 775.34K 1.17G 0 96.98K 6.40M 0 https-flow 777.15K 1.17G 0 97.21K 6.42M 0 ^C
注:flowstat
コマンドを停止するには、[Ctrl]キーを押しながら[c]キーを押します。
この結果から分かるように、このflowstat
コマンドにより、TCPポート443のネットワーク統計が表示されます。また、vnic1
ネットワーク・インタフェース上でフローを有効化しても、ネットワークのパフォーマンスは低下していません。
source_zone
上のロードが終了するまで数分間待機すると、終了時にiperf
ツールのメッセージ出力が停止します。
ネットワーク統計は大域ゾーンから観測することもできます。この方法は、複数のフローを定義し、中央のロケーションから監視する場合に便利です。
次に、source_zone
内に別のネットワーク・フローを定義します。TCPポート443を使用して、vnic0
上にフローを定義します。
root@source_zone # flowadm add-flow -l vnic0 -a transport=TCP,local_port=443 https-flow
大域ゾーンから、前の手順で作成したフローを確認します。
root@global_zone # flowadm show-flow FLOW LINK IPADDR PROTO LPORT RPORT DSFLD source_zone/https-flow vnic0 -- tcp 443 -- -- target_zone/https-flow vnic1 -- tcp 443 -- --
source_zone
上で、再度iperf
ベンチマークを開始します。
root@source_zone:~# iperf -c 10.0.0.2 -l 128k -P 4 -i 1 -t 180 -p 443
大域ゾーンから、ネットワーク・フローの観察を開始します。
root@global_zone:~# flowstat -i 1 FLOW IPKTS RBYTES IDROPS OPKTS OBYTES ODROPS source_zone/https-flow 0 0 0 0 0 0 target_zone/https-flow 132.33M 198.97G 0 17.31M 1.14G 0 source_zone/https-flow 0 0 0 0 0 0 target_zone/https-flow 848.25K 1.28G 0 109.92K 7.25M 0 source_zone/https-flow 0 0 0 0 0 0 target_zone/https-flow 848.26K 1.28G 0 110.05K 7.26M 0 ^C
注:flowstat
コマンドを停止するには、[Ctrl]キーを押しながら[c]キーを押します。
前の手順で作成した2つのフロー(source_zone/https-flow
、target_zone/https-flow
)のネットワーク統計を表示できます。そのため、両方のゾーンとそれらに関連付けられたフローを監視できます。
オプション:ネットワーク測定の終了後、フローを削除できます。
root@target_zone:~# flowadm remove-flow https-flow
フローが削除されたことを確認します。
root@target_zone:~# flowadm show-flow
注:フローを削除するためにゾーンを再起動する必要はありません。これは、本番システムで非常に便利です。
最後のユースケースでは、Oracle Solaris 11のネットワーク統計データの履歴保存機能を使用します。この機能は、長期間ベンチマークを実行してネットワークの傾向を確認する場合に便利です。ネットワーク使用統計は、Oracle Solarisの拡張アカウンティング機能を使用して保存できます。詳細はacctadm
(1M)を参照してください。
また、ネットワーク・パフォーマンスが低下している疑いがある場合に、現在のネットワーク統計をネットワーク統計の履歴と比較できます。
拡張アカウンティング機能を使用すれば、週単位、月単位、年単位のような長期のパフォーマンス分析を実行するために、さまざまなオペレーティング・システム統計(例:タスク、プロセス、フローの統計)を収集して保存できます。
注:Oracle Solarisの拡張アカウンティング機能は、大域ゾーンでも非大域ゾーンでも有効化できます。
このユースケースでは、拡張アカウンティング機能を使用して、ネットワーク統計を収集します。
大域ゾーンから、拡張アカウンティング機能を有効化します。
root@global_zone:~# acctadm -e extended -f /var/log/net.log net
拡張アカウンティング機能がアクティブになっていることを確認します。
root@global_zone:~# acctadm net Net accounting: active Net accounting file:/var/log/net.log Tracked net resources: extended Untracked net resources: none
この時点から、ネットワーク使用統計の履歴が/var/log/net.log
ファイルに保存されます。
次に、vnic0
データリンク上のネットワーク・トラフィックおよびリソース使用に関する統計の履歴の例を示します。
root@global_zone:~# dlstat show-link -h -f /var/log/net.log vnic0 LINK START END RBYTES OBYTES BANDWIDTH vnic0 10:45:52 10:46:12 1502 0 0 Mbps vnic0 10:46:12 10:46:32 1918 0 0 Mbps vnic0 10:46:32 10:46:52 2676218 4668466 1878.091 Mbp vnic0 10:46:52 10:47:12 1313205 2057617 8282.997 Mbp
この機能を使用して長期のネットワーク統計を収集した場合、ネットワーク統計の履歴を表示できます。
特定の期間(例:2013年1月1日~2013年6月24日)におけるvnic0
上のトラフィックによるリソース使用統計の履歴を表示するには、リスト3に示すコマンドを実行します。
root@global_zone:~# dlstat show-link -h -s 01/01/2013,00:00:00 -e 06/24/2013,10:50:00 -f /var/log/net.log vnic0 LINK START END RBYTES OBYTES BANDWIDTH vnic0 10:45:52 10:46:12 1502 0 0 Mbps vnic0 10:46:12 10:46:32 1918 0 0 Mbps vnic0 10:46:32 10:46:52 2676218 4668466 1878.091 Mbp vnic0 10:46:52 10:47:12 1313205 2057617 8282.997 Mbp vnic0 10:47:12 10:47:32 3790824 5786125 2329.613 Mbp vnic0 10:47:32 10:47:52 860 126 0 Mbps vnic0 10:47:52 10:48:12 890 0 0 Mbps vnic0 10:48:12 10:48:32 330 0 0 Mbps vnic0 10:48:32 10:48:52 212 0 0 Mbps vnic0 10:48:52 10:49:12 243 0 0 Mbps vnic0 10:49:12 10:49:32 0 0 0 Mbps vnic0 10:49:32 10:49:52 274 126 0 Mbps
リスト3
ネットワーク統計の出力結果は、gnuplot
形式で整形できます。gnuplotは、コマンド駆動の対話型関数プロット・ツールです。後で、パフォーマンス・グラフを生成するために、このツールを使用します。詳細はgnuplot
(1)を参照してください。
特定の期間(例:2013年6月24日~2013年6月25日)におけるvnic0
上のトラフィックによるリソース使用統計の履歴を、gnuplot
形式で表示しましょう。
root@global_zone:~# dlstat show-link -h -s 06/24/2013 -e 06/25/2013 -F gnuplot -f /var/log/net.log vnic0 > /var/tmp/netplot.dat
次に、可読性を上げるために、この出力ファイルを整形します(帯域幅の測定値を10GBの幅に変換します)。
root@global_zone:~# cat /var/tmp/netplot.dat | awk '{print $1,$2/1000}' > /var/tmp/netplot_format.dat
この後、gnuplot
を使用してグラフを生成します。
gnuplot
ツールを使用するには、Oracle Solarisのデスクトップ・パッケージをインストールする必要があります。以下の1つ目のコマンドは、gnuplot
をインストールします。その次のコマンドは、Oracle Solarisデスクトップ・パッケージをインストールします。
root@global_zone:~# pkg install gnuplot root@global_zone:~# pkg install solaris-desktop
次に、プロットのプロパティを設定するために、プロット・ファイルを準備する必要があります(後でこのファイルをgnuplot
ツールに読み込みます)。
このプロット・ファイルをお好みのエディタでリスト4のように編集します。
root@global_zone:~# vi /var/tmp/plot_file set autoscale unset log unset label set xtic auto set ytic auto set title "Network statistics" set xlabel "Time" set ylabel "Bandwidth (Mb/sec)" set xdata time set timefmt "%H:%M:%S" plot "/var/tmp/netplot_format.dat" using 1:2 title "Bandwidth (Mb/sec)" with lines
リスト4
GUIデスクトップを使用してシステムにアクセスするには、次のように、VNCサーバーを起動する必要があります。
root@global_zone:~# vncserver :1 You will require a password to access your desktops. Password: Verify: New 'global_zone:1 (root)' desktop is global_zone:1
注:このパスワードは覚えておいてください。後でVNCサーバーに接続するために必要になります。その他のVNCサーバーの設定例については、Oracle Solaris 11.1 Desktop Administrator's Guideを参照してください。
これで、VNCビューアまたはクライアント・ソフトウェア(フリーウェアのTightVNCビューアなど)を使用してリモートで接続できるようになりました。
注:desktop is: message
に表示されたアドレスに接続する必要があります。
$ vncviewer global_zone:1
VNCビューアまたはクライアント・ソフトウェアを使用してログインした後に、デスクトップの背景を右クリックし、ポップアップ・メニューで「Open Terminal」を選択して、ターミナル・ウィンドウを開きます(図4を参照)。
図4
ターミナル・ウィンドウで、gnuplot
ツールを実行します。
root@global_zone:~# gnuplot
gnuplot
プロンプトからプロット・ファイルを読み込みます(図5を参照)。
gnuplot> load '/var/tmp/plot_file'
図5
収集したネットワーク統計に基づいて、gnuplot
によりグラフが表示されます(図6を参照)。
図6
11:00、11:50、12:45にネットワーク・トラフィックのスパイクが発生していることが分かります。
gnuplot
を使用したOracle Solarisパフォーマンス・グラフのその他の例については、Graphing Solaris Performance Stats with gnuplot
を参照してください。
オプション:次のコマンドを使用して、ネットワーク拡張アカウンティング機能を無効化できます。
root@global_zone:~# acctadm -D net
ネットワーク拡張アカウンティング機能がアクティブでないことを確認します。
root@global_zone:~# acctadm net Net accounting: inactive Net accounting file:/var/log/net.log Tracked net resources: none Untracked net resources: extended
この記事では、Oracle Solaris 11の組込みコマンドのiperf
、dlstat
、flowadm
、flowstat
を利用してネットワーク統計を観測および収集する方法について説明しました。
また、著者による次の記事も参照してください。
その他のOracle Solaris 11のリソース:
Orgad Kimchiはオラクル(以前のSun Microsystems)のISV Engineeringチームに所属するPrincipal Software Engineerです。仮想化テクノロジーとクラウド・コンピューティング・テクノロジーの専門家として6年間従事しています。
リビジョン1.0、2013/09/09 |