この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
オンプレミスから AWS へのリクエストがタイムアウトとなる事象が発生し、アプリのログを確認しましたが、原因は判明しませんでした。再発に備えて、より詳細な調査ができるようにネットワーク監視を検討していますが、良い AWS サービス等はありませんか。
AWSサポートにも連携したいので、推奨されるデータ、取得方法だと嬉しいです。
どう対応すればいいの?
AWSSupport-SetupIPMonitoringFromVPCをお試しください。
AWSSupport-SetupIPMonitoringFromVPCは、Systems Manager Automation の Runbook で、パケットロスやレイテンシー等のネットワーク統計を継続的に収集するソリューションを構築します。
具体的には、指定したサブネットに構築した測定用の EC2 インスタンスから、指定したIPアドレスに対して ping や MTR、traceroute を継続的に実行し、その結果を CloudWatch に保管します。結果はログとして CloudWatch Logs に保管されるほか、CloudWatch メトリクスとして可視化され、画像のような CloudWatch ダッシュボードも作成されます。
収集した結果は、AWSサポートに提供するデータとしても利用できます。
AWSSupport-SetupIPMonitoringFromVPC - AWS Systems Manager Automation runbook reference
The data can also be used when opening a case with AWS Support, to help isolate an issue quickly and reduce time to resolution when investigating a network issue.
ただし、エラーとなったリクエストと必ず同じ通信経路を使用するわけではなく、絶対的な証拠とはならないため、AWSSupport-SetupIPMonitoringFromVPCに依存しない別の手段を併用し評価することを推奨します。
やってみた
事前準備としてサブネットを1つ用意します。
オンプレミス(インターネット)に対して実行する場合は、パブリックサブネットなどネットワーク経路があることを確認します。
AWS Systems Manager コンソール を開き、サイドバーから「自動化」を選択します。その後、「オートメーションの実行」をクリックします。
オートメーションドキュメントからAWSSupport-SetupIPMonitoringFromVPC
を検索します。
AWSSupport-SetupIPMonitoringFromVPC
を選択し「次へ」をクリックします。
準備したサブネットID、対象のIPアドレス※を指定し「実行」をクリックします。
※複数のIPアドレスを指定する場合は、カンマ(,
)で区切ります。
自動的にリソースが作成されるため、しばらく待ちます。
全体的なステータスが「成功」になったことを確認します。
実際の表示
「createCloudWatchDashboard.Output」のURLからダッシュボードにアクセスします。
CloudWatch ダッシュボードが表示され、パケットロスやレンテイシーが確認できます。
CloudWatch Logs
ping や MTRの結果は種類毎に CloudWatch Logs に保管されます。
各ログのサンプル
MTR
HOST: ip-10-0-10-174.ap-northeast Loss% Snt Last Avg Best Wrst StDev
1.|-- ??? 0.0% 30 5.1 10.4 0.8 44.6 12.2
2.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
3.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
4.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
5.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
6.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.0
7.|-- 100.65.13.161 0.0% 30 0.8 1.9 0.3 15.7 3.3
8.|-- 15.230.154.174 0.0% 30 2.6 3.9 2.6 11.2 2.0
9.|-- 15.230.129.20 13.3% 30 7.2 3.7 2.7 7.2 1.0
10.|-- 52.95.31.60 0.0% 30 2.5 3.9 2.5 15.6 3.0
11.|-- 100.91.149.6 0.0% 30 11.7 5.1 3.7 16.8 2.8
12.|-- 100.91.3.217 0.0% 30 3.6 4.6 3.5 17.1 2.6
13.|-- 100.91.147.129 0.0% 30 7.4 4.5 3.4 17.6 2.7
14.|-- 150.222.90.6 53.3% 30 3.2 3.6 3.0 6.3 1.1
15.|-- 52.93.251.240 0.0% 30 5.2 6.2 2.3 43.8 8.8
16.|-- 99.83.91.91 0.0% 30 13.4 5.3 3.0 17.0 4.0
17.|-- 172.70.120.2 0.0% 30 54.6 14.0 2.6 70.8 19.9
18.|-- 1.1.1.1 0.0% 30 2.6 2.6 2.5 2.9 0.1
ping
--- 1.1.1.1 ping statistics ---
30 packets transmitted, 30 received, 0 packet loss, time 28988ms
rtt min avg max mdev = 2.570 2.673 2.967 0.108 ms
tracepath
?: [LOCALHOST] pmtu 9001
1: 10.0.10.1 5.765ms pmtu 1500
1: no reply
2: no reply
3: no reply
4: no reply
5: no reply
6: no reply
7: 100.65.12.193 5.366ms asymm 8
8: 15.230.154.186 2.570ms asymm 14
9: 15.230.129.20 3.364ms asymm 14
10: 52.95.31.64 2.538ms asymm 13
11: 100.91.137.134 3.309ms asymm 18
12: 150.222.241.93 9.903ms asymm 17
13: 100.91.135.163 4.698ms asymm 16
14: 150.222.90.66 5.837ms asymm 19
15: 52.93.251.244 6.503ms asymm 18
16: no reply
17: no reply
18: no reply
19: no reply
20: no reply
21: no reply
22: no reply
23: no reply
24: no reply
25: no reply
26: no reply
27: no reply
28: no reply
29: no reply
30: no reply
Resume: pmtu 1500
traceroute
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 * *
2 * *
3 * *
4 * *
5 * *
6 * *
7 100.65.12.33 [*] 1.211 ms 1.222 ms
8 15.230.154.184 [AS2588/AS25886/AS15695/AS25951/AS33383/AS7545/AS24130] 1.268 ms 15.230.154.170 [AS2588/AS25886/AS15695/AS25951/AS33383/AS7545/AS24130] 4.648 ms
9 15.230.129.26 [AS2588/AS25886/AS15695/AS25951/AS33383/AS7545/AS24130] 3.043 ms 3.167 ms
10 15.230.160.44 [AS2588/AS25886/AS15695/AS25951/AS33383/AS7545/AS24130] 2.648 ms 52.93.72.114 [AS16509] 0.425 ms
11 100.91.137.118 [*] 5.324 ms 100.91.137.198 [*] 9.731 ms
12 150.222.240.239 [AS16509] 7.914 ms 150.222.242.0 [AS16509] 5.714 ms
13 100.91.147.35 [*] 4.318 ms 100.91.135.177 [*] 2.139 ms
14 52.93.66.60 [AS16509] 1.548 ms 52.95.30.53 [AS14618/AS16509] 16.777 ms
15 150.222.77.134 [AS16509] 2.491 ms 52.93.251.244 [AS16509] 2.733 ms
16 99.83.91.91 [*] 3.098 ms 99.83.91.103 [*] 3.201 ms
17 172.68.116.4 [AS13335] 2.938 ms 103.22.201.36 [AS13335] 3.659 ms
18 1.1.1.1 [AS13335] 2.543 ms 2.629 ms
リソースの削除
不要になった場合は、CloudWatch ダッシュボードの「Terminate test」からAWSSupport-TerminateIPMonitoringFromVPC Runbook を実行します。
※EC2 インスタンス等は削除されますが CloudWatch Logs に保管されたログは保存期間(デフォルト7日)までは保持されます。
「実行」をクリックします。
自動的にリソースが作成され、全体的なステータスが「成功」になったことを確認します。
参考資料
- インターネットゲートウェイを介した VPC とオンプレミスホストの間のネットワークの問題のトラブルシューティング
- Debugging tool for network connectivity from Amazon VPC | Networking & Content Delivery
- AWSSupport-SetupIPMonitoringFromVPC - AWS Systems Manager Automation runbook reference
- AWSSupport-SetupIPMonitoringFromVPCを利用してVPC内の特定ネットワーク状況を把握する | DevelopersIO