障害調査に備えてオンプレミスと AWS 間のネットワーク監視を行う方法を教えてください
困っていた内容
オンプレミスから 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 に保管されます。
各ログのサンプル
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
--- 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
?: [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 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