Hatena::ブログ(Diary)

ablog このページをアンテナに追加 RSSフィード

2018-09-09

VPCフローログのサイズがどの程度になるか

別々のVPCEC2インスタンスを作成して iperf で1時間ネットワーク転送をして VPC フローログのサイズがどの程度になるか検証してみた。


検証手順

VPC フローログの設定

以下を2つのVPCで設定する

EC2インスタンス作成
iperf をインストールする
$ sudo yum -y install git gcc
$ git clone https://github.com/esnet/iperf
$ cd iperf
$ ./configure
$ sudo make
$ sudo make install
$ sudo ldconfig

検証実施

$ iperf -s
$ iperf3 -c ec2-**-***-191-213.ap-northeast-1.compute.amazonaws.com -t 3600 -P 10
  • CloudWatch

f:id:yohei-a:20180909231936p:image:w360

f:id:yohei-a:20180909231934p:image:w360


サイズの確認

$ aws s3 cp --recursive s3://aws-vpcflowlog-100000000000-ap-noartheast-1 ./
$ cd AWSLogs/100000000000/vpcflowlogs/ap-northeast-1/2018/09/09/
$ du -hs
376K	.
$ gunzip *.gz
$ du -hs
728K	.
$ head -3 100000000000_vpcflowlogs_ap-northeast-1_fl-002b091daf0edd6fb_20180909T1230Z_9e961a12.log
version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 100000000000 eni-*****560e2bc271ee ***.**.9.121 **.***.225.139 50194 443 6 9 2689 1536496135 1536496191 ACCEPT OK
2 100000000000 eni-*****560e2bc271ee ***.**.9.121 **.***.225.139 50198 443 6 9 2689 1536496135 1536496191 ACCEPT OK
$ aws s3 cp --recursive s3://aws-vpcflowlog-200000000000-ap-northeast-1 ./
$ cd AWSLogs/200000000000/vpcflowlogs/ap-northeast-1/2018/09/09/
$ du -hs 
280K	.
$ gunzip *.gz
$ du -hs
456K	.
$ head -3 200000000000_vpcflowlogs_ap-northeast-1_fl-05d4eb0a8aaa6cc41_20180909T1235Z_4ab5b1df.log
version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 200000000000 eni-*****a0032216167f **.***.225.173 **.***.45.65 443 37290 6 4 559 1536496227 1536496286 ACCEPT OK
2 200000000000 eni-*****a0032216167f **.***.225.173 **.***.45.65 443 37294 6 20 6720 1536496227 1536496286 ACCEPT OK

フローログレコードの構文

フローログレコードはスペース区切りの文字列で、以下の形式です。

<version> <account-id> <interface-id> <srcaddr> <dstaddr> <srcport> <dstport> <protocol> <packets> <bytes> <start> <end> <action> <log-status>

次の表は、フローログレコードのフィールドについて説明しています。

フィールド説明
versionVPC フローログバージョン。
account-idフローログの AWS アカウント ID。
interface-idトラフィックが記録されるネットワークインターフェイスの ID。
srcaddr送信元の IPv4 または IPv6 アドレス。ネットワークインターフェイスIPv4 アドレスは常にそのプライベート IPv4 アドレスです。
dstaddr送信先IPv4 または IPv6 アドレス。ネットワークインターフェイスIPv4 アドレスは常にそのプライベート IPv4 アドレスです。
srcportトラフィック送信元ポート。
dstportトラフィック送信先ポート。
protocolトラフィックの IANA プロトコル番号。詳細については、「割り当てられたインターネットプロトコル番号」を参照してください。
packetsキャプチャウィンドウ中に転送されたパケットの数。
bytesキャプチャウィンドウ中に転送されたバイト数。
startキャプチャウィンドウの開始時刻 (Unix 時間)。
endキャプチャウィンドウの終了時刻 (Unix 時間)。
actionトラフィックに関連付けられたアクション:ACCEPT: 記録されたトラフィックは、セキュリティグループまたはネットワーク ACL で許可されています。
REJECT: 記録されたトラフィックは、セキュリティグループまたはネットワーク ACL で許可されていません。
log-statusフローログのロギングステータス。
OK: データは選択された送信先に正常に記録されます。
NODATA: キャプチャウィンドウ中にネットワークインターフェイスとの間で行き来するネットワークトラフィックはありませんでした。
SKIPDATA: 一部のフローログレコードはキャプチャウィンドウ中にスキップされました。これは、内部的なキャパシティー制限、または内部エラーが原因である可能性があります。
VPC フローログ - Amazon Virtual Private Cloud

packets が「キャプチャウィンドウ中に転送されたパケットの数」とあるので、複数のパケットで1レコードとなる。1レコードあたりはざっくり115バイト程度。


関連


参考

2018-06-07

PPS を計測する

インストール

$ yum -y install sysstat htop

計測

サーバ
  • iperf で listen する
for i in {5201..5204}
do
	iperf3 -s -p $i &
done

クライアント
  • 負荷をかける
iperf3 -c 172.31.**.*** -P 10 -t 60 -p 5201
iperf3 -c 172.31.**.*** -P 10 -t 60 -p 5201

性能測定する
$ sar -n DEV 5
Linux 4.14.33-51.37.amzn1.x86_64 (ip-172-31-**-***) 	06/07/2018 	_x86_64_	(64 CPU)

02:11:55 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
02:12:00 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:12:00 PM      eth0 345469.08  96451.41 3041362.50   6413.93      0.00      0.00      0.00

02:12:00 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
02:12:05 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:12:05 PM      eth0 344750.50  96154.31 3035024.22   6392.70      0.00      0.00      0.00

02:12:05 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
02:12:10 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:12:10 PM      eth0 345448.39  95719.28 3041171.64   6373.29      0.00      0.00      0.00

02:12:10 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
02:12:15 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:12:15 PM      eth0 345441.16  95467.47 3041113.27   6349.58      0.00      0.00      0.00

02:12:15 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
02:12:20 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:12:20 PM      eth0 344753.51  95941.88 3035055.92   6384.97      0.00      0.00      0.00

02:12:20 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
02:12:25 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:12:25 PM      eth0 345439.76  95952.81 3041095.64   6388.09      0.00      0.00      0.00
$ htop

2018-03-24

EC2 にログインしようとすると "Permission denied (publickey,gssapi-with-mic) " と怒られる

事象

EC2 にログインしようとすると以下のエラーで怒られる。

% ssh -i ~/mykey.pem ec2-user@ec2-**-***-***-**.ap-northeast-1.compute.amazonaws.com
Permission denied (publickey,gssapi-with-mic).

原因

  • ユーザー名が間違っている。

SSH を使用してインスタンスに接続し、Host key not found in [directory]、Permission denied (publickey)、または Authentication failed, permission denied のいずれかのエラーが発生した場合は、AMI 用の適切なユーザー名で接続していて、なおかつインスタンス用の適切なプライベートキー (.pem)) ファイルを指定していることを確認します。MindTerm クライアントについては、[Connect To Your Instance] ウィンドウの [User name] ボックスにユーザー名を入力します。

適切なユーザー名は以下のとおりです。

  • Amazon Linux AMI の場合は、ユーザー名は ec2-user です。
  • Centos AMI の場合、ユーザー名は centos です。
  • Debian AMI の場合は、ユーザー名は admin または root です。
  • Fedora AMI の場合、ユーザー名は ec2-user です。
  • RHEL AMI の場合は、ユーザー名は ec2-user または root のどちらかです。
  • SUSE AMI の場合は、ユーザー名は ec2-user または root のどちらかです。
  • Ubuntu AMI の場合、ユーザー名は ubuntu または root. です。

それ以外の場合で、ec2-user および root が機能しない場合は、AMI プロバイダーに確認してください

インスタンスへの接続に関するトラブルシューティング - Amazon Elastic Compute Cloud

補足

  • EC2 ではなく ssh の話だが、AMI によってユーザー名が異なるので、思い込みで間違っていてこのエラーになることがあるのでメモ。

2018-03-03

MySQL クライアントのプロンプトを設定する

  • ~/my.cnf
[mysql]
prompt='\\v \\u: [\\d] \\R:\\m> '
  • 接続してみる
azekyohe% mysql -h aurora01.*********.ap-northeast-1.rds.amazonaws.com -u awsuser -p
Enter password:

(中略)

5.6.10-log awsuser: [(none)] 04:39> use mydb;
5.6.10-log awsuser: [mydb] 04:39>

参考

2018-02-14

Amazon Linux で iperf を使ってみる

EC2インスタンスを2つ作成して両方に iperf をインストールし、片方でiperf をサーバとして起動し、もう片方から iperf をクライアントとして実行してベンチマークを取る。


インストール

$ sudo yum -y install git gcc
$ git clone https://github.com/esnet/iperf
$ cd iperf
$ ./configure
$ sudo make
$ sudo make install
$ sudo ldconfig

計測

サーバ
$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
クライアント
$ iperf3 -c 172.31.30.119 -P 10
Connecting to host 172.31.30.119, port 5201
[  5] local 172.31.31.185 port 23094 connected to 172.31.30.119 port 5201
[  7] local 172.31.31.185 port 23096 connected to 172.31.30.119 port 5201
[  9] local 172.31.31.185 port 23098 connected to 172.31.30.119 port 5201
[ 11] local 172.31.31.185 port 23100 connected to 172.31.30.119 port 5201
[ 13] local 172.31.31.185 port 23102 connected to 172.31.30.119 port 5201
[ 15] local 172.31.31.185 port 23104 connected to 172.31.30.119 port 5201
[ 17] local 172.31.31.185 port 23106 connected to 172.31.30.119 port 5201
[ 19] local 172.31.31.185 port 23108 connected to 172.31.30.119 port 5201
[ 21] local 172.31.31.185 port 23110 connected to 172.31.30.119 port 5201
[ 23] local 172.31.31.185 port 23112 connected to 172.31.30.119 port 5201

(中略)

[SUM]   0.00-10.00  sec  24.5 GBytes  21.0 Gbits/sec   28             sender
[SUM]   0.00-10.03  sec  24.4 GBytes  20.9 Gbits/sec                  receiver

iperf Done.

参考