2018年5月26日土曜日

RealtekのNICドライバーを組み込んだESXi 6.7のカスタムイメージを作成する


2018年4月17にVMwareよりvSphere 6.7が発表された。vSphere 6.5の次期バージョンとなり、7ではなく6.7というバージョンで登場した。

私は自宅の検証環境として、ESXi 6.0を無償ライセンスにて利用している。ESXi 6.7が登場したので、これを機にバージョンアップをすることにした。自宅検証環境は、Realtek 8168のNICが搭載されており、そのままではESXiが認識しないため、NICドライバーを組み込んだカスタムイメージを作成する必要がある。

↓★前回のカスタムイメージ作成の記事
https://tech-mmmm.blogspot.jp/2016/03/shuttle-ds81esxi-60-esxi-custom-image.html

しかし、前回と同様の手順にてRealtekのNICのドライバーを組み込んだカスタムイメージを作成しようとしたが、以下の警告メッセージが表示されてしまった。

------------------------------
警告: The image profile fails validation.  The ISO / Offline Bundle will still be generated but may contain errors and may not boot or be functional.  Errors:
警告:   VIB VFrontDe_bootbank_net51-drivers_1.0.0-1vft.510.0.0.799733 requires vmkapi_2_1_0_0, but the requirement cannot be satisfied within the ImageProfile. However, additional VIB(s) VMware_bootbank_esx-base_5.5.0-0.14.1598313,
VMware_bootbank_esx-base_5.1.0-3.52.2575044, VMware_bootbank_esx-base_6.0.0-2.37.3825889,
VMware_bootbank_esx-base_5.1.0-0.5.838463, VMware_bootbank_esx-base_6.0.0-3.57.5050593,

~(中略)~

VMware_bootbank_esx-base_5.1.0-1.12.1065491 from depot can satisfy this requirement.
------------------------------

警告メッセージが出力されるものの、カスタムイメージ自体は作成されたため、インストールできることを期待したのだが、「Operation failed」と表示されインストールに失敗してしまった。


本記事ではこのエラーを解消することを目的として、正常にRealtekのNICドライバーを組み込んだESXi 6.7のカスタムイメージ作成方法について記載する。

ESXi 6.7に対応したドライバーを入手する

RealtekのESXi用ドライバーは、実は以下サイトからダウンロードできる。

List of currently available ESXi packages
https://vibsdepot.v-front.de/wiki/index.php/List_of_currently_available_ESXi_packages

ESXi 6.7に対応したRealtek 8168のドライバーは以下URLからダウンロードができる。「Direct Download links」より、VIBファイルをダウンロードする。

・ファイル名:net55-r8168-8.045a-napi.x86_64.vib

【注意】
以下は旧バージョンとなり、ESXi 6.7では利用できないので注意。前述した警告メッセージは、このドライバーを組み込もうとしたことが原因となる。
https://vibsdepot.v-front.de/wiki/index.php/Net51-drivers
・ファイル名:net51-drivers-1.1.0-1vft.510.0.0.799733.x86_64.vib

ESXi-Customizer-PSとPowerCLIを入手する

ESXiのカスタムイメージを作成するため、以下2つのツールを入手しておく。

ESXi-Customizer-PS 2.6
https://www.v-front.de/p/esxi-customizer-ps.html
・ファイル名:ESXi-Customizer-PS-v2.6.0.ps1

PowerCLI 6.5
https://my.vmware.com/jp/group/vmware/details?downloadGroup=PCLI650R1&productId=614
・ファイル名:VMware-PowerCLI-6.5.0-4624819.exe

PowerCLIは、インターネットに接続可能なPC等にあらかじめインストールをしておくこと。ダウンロードしたファイルは、以下フォルダを作成し配置しておこう。

・フォルダ:C:\ESXi-Customizer
 - ファイル名:ESXi-Customizer-PS-v2.6.0.ps1
 - ファイル名:net55-r8168-8.045a-napi.x86_64.vib

カスタムイメージを作成する

ESXi-Customizer-PSはPowerCLIのスクリプトとなっているが、PowerShellの実行ポリシーを変更しなければ実行できないため、PowerShellにて実行ポリシーの変更を行う。

PS C:\> Set-ExecutionPolicy Unrestricted
------------------------------
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policiesのヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y   ←★"Y"を入力
------------------------------

これで準備が整った。それでは、カスタムイメージを作成するために、PowerCLIを開き、ESXi-Customizer-PSを実行してみよう。

PowerCLI C:\> cd C:\ESXi-Customizer
PowerCLI C:\ESXi-Customizer> .\ESXi-Customizer-PS-v2.6.0.ps1 -v67 -pkgDir C:\ESXi-Customizer\
------------------------------
セキュリティ警告
信頼するスクリプトのみを実行してください。インターネットから入手したスクリプトは便利ですが、コンピューターに危害を及ぼす可能性があります。このスクリプトを信頼する場合は、この警告メッセージが表示されないように、Unblock-Fileコマンドレットを使用して、スクリプトの実行を許可してください。C:\ESXi-Customizer\ESXi-Customizer-PS-v2.6.0.ps1を実行しますか?
[D] 実行しない(D)  [R] 一度だけ実行する(R)  [S] 中断(S)  [?] ヘルプ (既定値は "D"): R   ←★"R"を入力

This is ESXi-Customizer-PS Version 2.6.0 (visit https://ESXi-Customizer-PS.v-front.de for more information!)
(Call with -help for instructions)

Logging to C:\Users\admin\AppData\Local\Temp\2\ESXi-Customizer-PS-1900.log ...

Running with PowerShell version 5.1 and VMware PowerCLI version 6.5.0.2604913

Connecting the VMware ESXi Online depot ... [OK]

Getting Imageprofiles, please wait ... [OK]

Using Imageprofile ESXi-6.7.0-8169922-standard ...
(dated 04/03/2018 22:07:05, AcceptanceLevel: PartnerSupported,
The general availability release of VMware ESXi Server 6.7.0 brings whole new levels of virtualization performance to datacenters and enterprises.)

Loading Offline bundles and VIB files from C:\ESXi-Customizer\ ...
   Loading C:\ESXi-Customizer\net55-r8168-8.045a-napi.x86_64.vib ... [OK]
      Add VIB net55-r8168 8.045a-napi [New AcceptanceLevel: CommunitySupported] [OK, added]   ←★ドライバーが追加された

Exporting the Imageprofile to 'C:\ESXi-Customizer\ESXi-6.7.0-8169922-standard-customized.iso'. Please be patient ...


All done.   ←★途中にエラー等なく「All done.」が表示されればOK。
------------------------------

これで、同一フォルダ内に「ESXi-6.7.0-<ビルド番号>-standard-customized.iso」というカスタムイメージのISOファイルが作成されるはずである。

実際にESXiをインストールして確認してみる

インストール手順の詳細は割愛するが、実際にESXi 6.7をインストールした際のNIC認識状況は以下の通り。



ドライバーが組み込まれ、Realtek 8168のNICが正常に認識できていることが確認できた。

2018年5月21日月曜日

for文やwhile文を使うとLinux操作が捗る話


LinuxはCUIでの操作が基本となり、GUIでは簡単にはできない繰り返し処理をfor文やwhile文を使うことで、容易に実現できる。

for文やwhile文はシェルスクリプトで使うものと思われがちだが、構文を覚えておけば、ちょっとした繰り返し処理を行う際に、いちいちシェルスクリプトを作らなくても、ターミナルから直接繰り返し処理を実行できるため、効率よく作業ができる。

今回はそんなfor文とwhile文の使い方について記載する。

一定回数繰り返す系

この使い方は、vmstatやiostat等の、繰り返し実行の機能のない性能情報取得コマンドを定期間隔で実行することができるので、パフォーマンス分析を行う際に便利である。

構文は以下の通り。

------------------------------
for i in {1..<繰り返し回数>} ; do <実行コマンド> ; sleep <繰り返し間隔(秒)> ; done

※実行コマンドに日時情報が含まれない場合は、以下の通りdateコマンドを合わせて実行するとよい。
for i in {1..<繰り返し回数>} ; do date ; <実行コマンド> ; sleep <繰り返し間隔(秒)> ; done
------------------------------

以下に、vmstatとiostatを5秒間隔で120回実行した際の実行例を記載する。なお、vmstatはバージョンによっては-tオプションが使えないようなので、その場合はdateを挟んで時刻を表示させるようにすること。

# for i in {1..120} ; do vmstat -t ; sleep 5 ; done
------------------------------
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st                 JST
 3  0      0 1372548   1260 392356    0    0     0     0    4    6  0  0 100  0  0 2018-04-30 14:43:38
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st                 JST
 3  0      0 1372672   1260 392356    0    0     0     0    4    6  0  0 100  0  0 2018-04-30 14:43:43

~(以下略)~
------------------------------

# for i in {1..120} ; do iostat -t -d -x ; sleep 5 ; done
------------------------------
Linux 3.10.0-327.el7.x86_64 (t1110rh72)         2018年04月30日  _x86_64_        (1 CPU)

2018年04月30日 14時44分56秒
Device:  rrqm/s  wrqm/s    r/s    w/s   rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
fd0        0.00    0.00   0.00   0.00    0.00     0.00     8.00     0.00   62.00   62.00    0.00  62.00   0.00
sda        0.00    0.01   0.00   0.06    0.04     0.32    10.96     0.00    0.25    0.38    0.25   0.05   0.00
dm-0       0.00    0.00   0.00   0.07    0.03     0.32     9.68     0.00    0.27    0.44    0.27   0.04   0.00
dm-1       0.00    0.00   0.00   0.00    0.00     0.00    17.99     0.00    0.16    0.16    0.00   0.13   0.00

Linux 3.10.0-327.el7.x86_64 (t1110rh72)         2018年04月30日  _x86_64_        (1 CPU)

2018年04月30日 14時45分01秒
Device:  rrqm/s  wrqm/s    r/s    w/s   rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
fd0        0.00    0.00   0.00   0.00    0.00     0.00     8.00     0.00   62.00   62.00    0.00  62.00   0.00
sda        0.00    0.01   0.00   0.06    0.04     0.32    10.96     0.00    0.25    0.38    0.25   0.05   0.00
dm-0       0.00    0.00   0.00   0.07    0.03     0.32     9.68     0.00    0.27    0.44    0.27   0.04   0.00
dm-1       0.00    0.00   0.00   0.00    0.00     0.00    17.99     0.00    0.16    0.16    0.00   0.13   0.00

~(以下略)~
------------------------------

なお、watchコマンドを使えば、もっと簡単にコマンドの繰り返し実行ができる。ただし、watchコマンドでは、Tera Term等のターミナルソフトのログに実行結果の情報が残らないというデメリットがあるので、きちんとログを残したい場合はfor文で実行する方がよいだろう。

一覧に対してコマンドを実行する系

一覧出力コマンドの結果を引数として、詳細な情報を表示させる際に利用する。たとえば、chageコマンドで各ユーザーのパスワード期限を見る、ethtoolコマンドで各インターフェースの詳細情報を確認する、といった使い方ができる。

構文は以下の通り。

------------------------------
for i in `<一覧出力コマンド>` ; do <実行コマンド> $i ; done
------------------------------

以下にfor文を使って、ユーザーごとにchageコマンドを実行し、パスワード期限設定の一覧を出力させてみる。

# for i in `cat /etc/passwd | cut -d":" -f 1` ; do echo $i ; chage -l $i ; done
------------------------------
root
最終パスワード変更日                         :なし
パスワード期限:                             : なし
パスワード無効化中                           : なし
アカウント期限切れ                           : なし
パスワードが変更できるまでの最短日数         : 0
パスワードを変更しなくてよい最長日数         : 99999
パスワード期限が切れる前に警告される日数         : 7
bin
最終パスワード変更日                         : 5月 24, 2015
パスワード期限:                              : なし
パスワード無効化中                            : なし
アカウント期限切れ                            : なし
パスワードが変更できるまでの最短日数         : 0
パスワードを変更しなくてよい最長日数         : 99999
パスワード期限が切れる前に警告される日数          : 7

~(以下略)~
------------------------------

以下は、ethtoolで同様にインターフェースごとの詳細設定を出力させる構文となる。for文の変数に代入する値は、grepやcutコマンドを使って、必要な箇所(今回でいえばインターフェース名)を取り出すことが重要となる。

# for i in `ifconfig -a | grep "mtu" | cut -d":" -f 1` ; do ethtool $i ; done
------------------------------
Settings for eno16780032:
        Supported ports: [ TP ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: No
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Speed: 10000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: off
        MDI-X: Unknown
        Supports Wake-on: uag
        Wake-on: d
        Link detected: yes
Settings for lo:
        Link detected: yes

~(以下略)~
------------------------------

負荷をかける系

性能試験などで負荷をかける際にも利用できる。

構文は以下の通り。sleepを入れずに最短でコマンド実行を繰り返すようにする。

------------------------------
for i in {1..<繰り返し回数>} ; do <実行コマンド> ; done

※無限に繰り返したい場合はwhile文を使う。
while : ; do <実行コマンド> ; done
------------------------------

たとえば、メールサーバーの性能を確認するため、一気にメールを1000通送りたい場合は、以下のように実行する。

# for i in {1..1000} ; do echo "テスト" | mail -s "test subject" -r ex-1@example.com ex-2@example.com ; done

2018年5月15日火曜日

各社のオールフラッシュ (All Flash) ストレージのIOPSまとめ


近年は、HDDに代わり性能面、容量面でSSDの方が上回る時代となっている。たとえば、以下URLにあるように、1本で15.36TBの容量を持ち32,000IOPSを発揮できるSSDがすでに市場に投入されている。

Samsung Introduces World’s Largest Capacity (15.36TB) SSD for Enterprise Storage Systems
https://news.samsung.com/global/samsung-now-introducing-worlds-largest-capacity-15-36tb-ssd-for-enterprise-storage-systems

一方、エンタープライズ向けに利用されるSASのHDDは、1本で高々1TB程度の容量しかなく、性能も150IOPS程度にとどまるのが現状だ。

このようなSSDとHDDの性能差は今後も広がることが想定されるため、SSDは通常利用用途、HDDはNL SASやSATAの大容量HDDを利用したバックアップ・ログ等の安価なデータ保管用途といった棲み分けが進むと考えている。

さて、本題に入ろう。

上記のような状況もあるので、私個人としても最近はもAll Flashのストレージを提案するという案件が増加している。そこで、一度各メーカーが販売しているAll Flashストレージの性能比較をしてみたいと思い、インターネットを検索して情報をまとめてみることにした。

All FlashストレージのIOPSまとめ

以下がまとめた表となる。原則Read/Write混在の計測データを載せるようにしたかったが、なかなかそのような情報を見つけることが困難なストレージ製品もあり、そのような場合はReadのみの計測データを記載している。

したがって、計測方法に差もあることから、単純にこれだけでストレージ製品の性能比較をすることはできないので注意すること。

Noメーカー製品名IOPS計測条件参考URL
1IBMV5030
(※参考)
85,020300GB 15krpm HDD x 240 RAID10
SPC-1 IOPS
リンク
2HPEMSA 2040 SSD29,000200 GB SSD x 4 RAID5
Random 60%/40%RW
リンク
3HPE3PAR StoreServ 8200140,656400GB SSD x 8 Raid5 (7+1)
80/20RW
リンク
4HPE3PAR StoreServ 8400140,656400GB SSD x 8 Raid5 (7+1)
80/20RW
リンク
5HPE3PAR StoreServ 8450141,504400GB SSD x 8 Raid5 (7+1)
80/20RW
リンク
6HPE3PAR StoreServ 8440 4N545,164400GB SSD x 32 Mirroring
SPC-1 IOPS
リンク
7HPE3PAR StoreServ 8450 4N545,164400GB SSD x 32 Mirroring
SPC-1 IOPS
リンク
8IBMV5030F145,000Maximum IOPS 4 KB cached off
Random 70%/30%RW
リンク
9IBMV7000F162,000Maximum IOPS 4 KB cached off
Random 70%/30%RW
リンク
10IBMA9000500,000Random 70%/30%RWリンク
11DELL EMCVMAX250F1,000,0008K 100% readリンク
12DELL EMCVMAX950F6,700,0008K 100% readリンク
13DELL EMCUnity 350F130,0008K 100% readリンク
14DELL EMCUnity 450F305,0008K 100% readリンク
15DELL EMCUnity 550F395,0008K 100% readリンク
16DELL EMCUnity 650F440,0008K 100% readリンク
17NetAppAFF A700s2,400,059145GB SSD x 24 RAID-DP
SPC-1 IOPS
リンク
18Pure StorageFlashArray //m20150,00032K 100% readリンク
19Pure StorageFlashArray //m50220,00032K 100% readリンク
20Pure StorageFlashArray //m70300,00032K 100% readリンク

考察

HDDを利用したストレージについて(参考値として記載)

No1に記載しているIBM V5030はAll Flashストレージではなく、昔ながらのHDDを使ったストレージとなり、比較用の参考値として記載した。HDDの場合は、数万IOPSの性能を出すためには、ディスクの本数を240本も導入しなければならないことがわかる。

HPEのストレージについて

No2はHPEのエントリークラスのストレージであり、SSDを利用しても性能が低い。そもそもSSDを使うなら、SSDの性能を発揮できるストレージを選ぶことが重要ということがわかる。

No3~7はHPEのミッドレンジクラスのストレージとなる。計測条件の違いもあるとは思うが、同じストレージでも性能にバラつきがある。HDDを利用した際と同様に、ディスク本数が多く、RAID1相当の構成の方が性能が高い傾向にあるようだ。

なお、3PARについては、実際に私個人でも性能計測したことがあり、SSD x 40本、RAID5の構成で、15万~20万IOPSの性能となった。

IBMのストレージについて

No8、9はIBMのミッドレンジクラスのストレージとなる。HPEの3PARと同程度の性能であることを考えると、ミッドレンジクラスのAll FlashストレージのRead/WriteのIO性能は、10~20万IOPSとして見込んでおくとよさそうだ。

DELL EMCのストレージについて

No11、12はDELL EMCのハイエンドクラスのストレージとなり、桁違いに速い。No13~16はミッドレンジクラスのストレージとなり、Readのみで数十万IOPSの性能となっていることから、Read、Writeが混在した環境においては、他メーカーと大きな性能差はないものと想定される。

NetAppのストレージについて

No17のNetAppは、NASを得意とするメーカーだけあって、FCだけでなくNFS、CIFSに対応したAll Flashストレージとなっている。ストレージのOSについても、NetAppのNASで培われてきたONTAPを利用する。

Pure Storageのストレージについて

No18~20は新興メーカーのPure StorageのAll Flashストレージ製品となる。なお、Pure StorageはAll Flashのみを販売するストレージメーカーとなる。他メーカーでは通常4Kや8Kなどの小さなブロックサイズでのスループット計測とするところを、Pure Storageでは32KのブロックサイズのIOPSを計測しており、そのような状況においても15万~30万IOPSの性能を発揮できることが売りとのこと。

2018年5月8日火曜日

Linuxのpingコマンドを使って、簡単にネットワーク帯域を計測する


ネットワーク帯域を計測する際にpingコマンドを使うことで計測することができる。詳細は以下サイトの記事にある。

pingでネットワークの速度を調査する
http://www.atmarkit.co.jp/ait/articles/0511/26/news012.html

上記記事を参考に、帯域計測用のコマンドを作ってみた。

ちなみに、Windowsでも同様の計測方法を試そうとしたが、Windowsのpingコマンドや、PowerShellのTest-Connectionは、1ms以下の精度でPing応答を表示することができないため、計測するには誤差が大きすぎて使えないので、今回はLinuxで計測手順のみ記載する。

事前準備

計測には電卓で計算でもよいのだが、Linuxには数式計算ができるbcコマンドがあるため、それを使う。bcコマンドがインストールされていない場合は、yum等を利用してインストールしておこう。

# yum install bc

今回pingコマンドで利用するオプションは以下の通り。
  • -c:試行回数。今回は10回に設定する
  • -s:データサイズ。今回は、上限の65507バイトで設定する。65507バイトにIPヘッダ20バイトとICMPヘッダ8バイトが加わって、合計65535バイトのパケットが送信がされる。
実際にpingを飛ばすと以下のような結果となる。最後に応答時間(RTT :
Round-Trip Time)の平均値が表示されるので、その値を用いて帯域の計算を行う。

# ping -c 10 -s 65507 192.168.11.112
------------------------------
PING 192.168.11.112 (192.168.11.112) 65507(65535) bytes of data.
65515 bytes from 192.168.11.112: icmp_seq=1 ttl=64 time=0.354 ms
65515 bytes from 192.168.11.112: icmp_seq=2 ttl=64 time=0.333 ms
65515 bytes from 192.168.11.112: icmp_seq=3 ttl=64 time=0.443 ms
65515 bytes from 192.168.11.112: icmp_seq=4 ttl=64 time=0.360 ms
65515 bytes from 192.168.11.112: icmp_seq=5 ttl=64 time=0.416 ms
65515 bytes from 192.168.11.112: icmp_seq=6 ttl=64 time=0.266 ms
65515 bytes from 192.168.11.112: icmp_seq=7 ttl=64 time=0.331 ms
65515 bytes from 192.168.11.112: icmp_seq=8 ttl=64 time=0.406 ms
65515 bytes from 192.168.11.112: icmp_seq=9 ttl=64 time=0.288 ms
65515 bytes from 192.168.11.112: icmp_seq=10 ttl=64 time=0.284 ms

--- 192.168.11.112 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9000ms
rtt min/avg/max/mdev = 0.266/0.348/0.443/0.057 ms
------------------------------

計算式は以下の通りとなる。

 送受信データ量 (bit) = 65536 * 8 * 2 ・・・①
 ① / RTT (ms) / 1000 = 帯域 (Mbps)

実際に計測してみる

それでは実際に計測をしてみよう。簡単に計測するために、以下3行のコマンドを作成した。1行目の変数の中身だけ変更して他はそのまま実行すれば、帯域計測が実施できる。

------------------------------
# dst=<送信先IPアドレス / ホスト名>
# rtt=`ping -q -c 10 -s 65507 ${dst} | grep avg | cut -d"/" -f 5` ; echo "${rtt} ms"
# speed=`echo "scale=2; (65535 * 8 * 2) / $rtt / 1000" | bc` ; echo "${speed} Mbps"
------------------------------

①同一ESXiサーバー内の仮想マシン間の帯域を計測

同じvSwitchに接続されている仮想マシン同士で帯域を計測してみる。

# rtt=`ping -q -c 10 -s 65507 ${dst} | grep avg | cut -d"/" -f 5` ; echo "${rtt} ms"
------------------------------
0.385 ms
------------------------------
# speed=`echo "scale=2; (65535 * 8 * 2) / $rtt / 1000" | bc` ; echo "${speed} Mbps"
------------------------------
2723.53 Mbps
------------------------------

以下の過去記事に記載した通り、仮想マシンは1Gbps以上の帯域で通信が可能となる。pingによる計測においても確認することができた。

ESXiの仮想ネットワークアダプタ「E1000」は、1Gbps以上の速度が出る


②1000BASE-Tで接続されたNASとの帯域を計測

物理的にUTPケーブルを使った1000BASE-Tで接続されているNASに対して、帯域計測を行う。

# rtt=`ping -q -c 10 -s 65507 ${dst} | grep avg | cut -d"/" -f 5` ; echo "${rtt} ms"
------------------------------
1.772 ms
------------------------------

# speed=`echo "scale=2; (65535 * 8 * 2) / $rtt / 1000" | bc` ; echo "${speed} Mbps"
------------------------------
591.73 Mbps
------------------------------

1Gbpsといっても、実際は6割程度の帯域となることが確認できた。

③インターネット回線の帯域を計測

ping応答を返してくれる適当なドメインを指定して計測を行う。www.yahoo.co.jpが応答を返してくれるので、今回はそちら宛てにpingを飛ばして速度計測を行う。

# rtt=`ping -q -c 10 -s 65507 ${dst} | grep avg | cut -d"/" -f 5` ; echo "${rtt} ms"
------------------------------
18.309 ms
------------------------------

# speed=`echo "scale=2; (65535 * 8 * 2) / $rtt / 1000" | bc` ; echo "${speed} Mbps"
------------------------------
57.27 Mbps
------------------------------

なお、上記計測結果はかなりのムラがあり、速い時では170Mbps程度のこともあったので、数回計測することをお勧めする。

まとめ

OS標準のpingコマンドを使うことで、簡単に帯域を計測することができた。帯域計測用にツール等を導入する必要がないため、ざっくりと帯域を計測したい場合は非常に便利である。

2018年5月1日火曜日

Zabbixで「Advapi」のログイン失敗イベントを無視する設定

以前、Windows Server 2016で定期的に発生するログイン失敗イベントの件を以下記事にて記載した。

★関連記事はこちら↓

Windows Server 2016で定期的にAdvapiがログイン失敗 (イベントID 4625)する問題
https://tech-mmmm.blogspot.jp/2018/01/windows-server-2016-id-4625.html

結論としては、技術的な回避策はなく、運用にて回避するしかないという結論となった。ということで、運用回避策として、以下監視設定を実装することにした。
  • 通常のログイン失敗(イベントID 4625)は検知
  • 「Advapi」に関するログイン失敗(イベントID 4625)は検知しない

作業前提

対象のWindows Server 2016には、Zabbix Agentがインストールされており、セキュリティイベントログのアイテムが作成されていることが前提の手順となる。アイテムの作成手順については、以下別記事を参照すること。

Zabbixを使ってWindowsとLinuxのログイン失敗を監視する
https://tech-mmmm.blogspot.jp/2017/06/zabbixwindowslinux.html

設定方法

1. Zabbixの画面にて、「設定」→「ホスト」を選択し、監視設定を行うホストの「トリガー」を選択する。


2. 右上の「トリガーの作成」を選択する。


3. 以下の通りトリガーを作成する。

------------------------------
・名前:Login Failuer for WinServ2016
・条件式:{t1082w216:eventlog[Security,,,,4625,,skip].regexp(".*ログオン プロセス.*Advapi.*")}=0
・障害イベントを継続して設定:チェック
・深刻度:軽度の障害
------------------------------


トリガーの条件式の補足説明

今回設定するトリガーの条件式の動作について補足説明しておこう。

------------------------------
{t1082w216:eventlog[Security,,,,4625,,skip].regexp(".*ログオン プロセス.*Advapi.*")}=0
------------------------------

eventlog[Security,,,,4625,,skip]

これは「イベントログがSecurityでかつイベントIDが4625」のアイテムを示している。skipが指定されているが、これはZabbixが監視を開始した時点からの該当アイテムを取得する設定であり、skipを指定しない場合は、ログを最初から検索する動作が発生する。

regexp(".*ログオン プロセス.*Advapi.*")

regexpは、アイテムの中に指定された正規表現に該当する文字列が存在するかどうかを調べる関数となる。取得したログイン失敗のイベントログの中に、「ログオンプロセス Advapi」の文字列が存在するかどうかを調べ、存在する場合は"1"、存在しない場合は"0"を返す。

=0

今回の監視対象は、「ログオンプロセス Advapi」が存在しない場合となるので、関数の結果が0であることを条件とする。

以上にて、「セキュリティイベントログのIDが4625で、かつ、"ログオンプロセス Advapi"の文字列が存在しない場合」、障害検知される設定となり、不要なログイン失敗の検知を防止することができるようになる。

人気の投稿