Network Synthetic MonitorでグローバルIPに対するモニタリングをする方法と料金について
こんにちは、まるとです。
最近、Network Synthetic Monitorを触る機会があり、かつモニタリングの対象がグローバルIPの場合、ちょっとした操作が必要となるためメモします。
先に結論
- Network Synthetic Monitorで作成されるENIにはパブリックIPが割り当てられない
- 以下のどちらかの方法で対応する
- NAT Gatewayを配置し、プローブをプライベートサブネットに置く
- ENIにパブリックIPを割り当てる
- 以下のどちらかの方法で対応する
- 一方で料金はそこそこ良い値段がするので、うまく使い分けよう
Network Synthetic Monitorとは
簡単にまとめると、一定間隔ごとにICMPかTCP SYNパケットを送信して死活監視をしてくれるサービスです。
パケットの損失割合やRTTを表示してくれます。
用途としては、AWSとオンプレミス間で専用線やVPNを接続している場合、AWSリソースからオンプレミスリソースへの疎通確認や死活監視を目的として使用します。
このサービスを利用することで、独自で死活監視の仕組みを組んだりエージェントのインストールをすることなく、AWSマネージドで監視+CloudWatch アラームで通知まで行うことができます。
簡単な仕組み
Network Synthetic Monitorの設定値としては主に、パケット送信元サブネット、送信先IPアドレス、プロトコルの3つとなります。
モニタリングを作成すると、指定したサブネットにネットワークインターフェイス(以下、ENI)が作成されます。
これにより、作成されたENIから死活監視用パケットが送信され、モニタリングが行われます。
監視できるIPアドレスについて
グローバルIPアドレスを対象にしてみる
先ほど記載したURLのAWSドキュメントを読んでみると、オンプレミスIPアドレスやハイブリッドネットワークという表現が多く利用されています。
また、AWSマネジメントコンソールでモニタリングを作成する際に指定するIPアドレスの例として、10.0.0.0とプライベートIPアドレスが記載されています。
では、ここでグローバルIPアドレスを入力した場合はどうなるのか?
EC2を構築して、以下構成図の赤線を期待して設定します。
実際にモニタリングを設定すると...接続ができません。
なぜエラー?
作成されたENIを見てみます。
EC2コンソールのサイドバー「ネットワークインターフェイス」からNetwork Synthetic Monitorにより作成されたENIの実態を確認できます。
説明が「Created By Amazon CloudWatch Network Synthetic Monitor for monitor on <サブネットID>」となっているものが対応するENIとなります。
作成されたENIを確認すると、パブリックIPアドレスが割り当てられておらず、プライベートIPアドレスのみが付与されている状態です。
※なお、今回の検証に使用したサブネットはパブリックIPアドレスの割り当てが有効化されています。
パブリックIPアドレスがないため、インターネットゲートウェイから直接通信ができず、エラーとなっていたことがわかりました。
グローバルIPアドレスもモニタリングできるようにする/料金の話
前章から、パブリックIPアドレスを付与するか、NAT越えによりインターネットと通信を行う必要があることがわかりました。
比較的簡単にできる手段としては以下の2つが挙げられます。
- 配置サブネットをプライベートサブネットにし、NAT Gateway経由で通信させる
- パブリックサブネットに配置し、Elastic IPアドレスを割り当てる
前者の場合は以下の構成図となります。
NAT Gatewayを介してNAT越えを行うことでグローバルIPアドレスを対象に通信を可能にします。
1ヶ月あたりの料金面ではEC2を除き、東京リージョンで計算すると
- NAT Gateway: 0.062 USD/h
- NAT Gateway用ELastic IP: 0.005 USD/h
- Network Synthetic Monitor(1プローブ): 0.11 USD/h
(0.062 + 0.005 + 0.11) x 24 (時間) x 30 (日) = 127.44 USD/月(通信料金除く)
パブリックサブネットに配置し、Elastic IPアドレスを割り当てる方式の場合は以下となります。
- Network Synthetic Monitor(1プローブ): 0.11 USD/h
- ENIに割り当てるElastic IP(1プローブ、2個のENIが作成される): 0.005 USD/h x 2
(0.11 + 0.005 x 2) x 24 (時間) x 30 (日) = 86.4 USD/月
Network Synthetic Monitor(1プローブ)が料金のほとんどを占めています。(79.2 USD/月)
ここからは私見
1プローブあたりの料金がそこそこ大きいので、ここだけは絶対に停止せず継続して監視しておきたい!というのを定めて、他は小さめのEC2インスタンスを構築し、自前でスクリプトを組み監視するとコスト効率が良いのではと考えています。
AWSとオンプレミスのハイブリッドネットワーク構成を前提としたサービスのため、VPN接続などが切断され業務システムが停止するなど影響が大きいネットワーク間の監視には、マネージドサービスであるNetwork Synthetic Monitorを利用することで、高い可用性と信頼性を確保できます。
そのため、使い分けとしては以下を一つの基準にできるのではと考えています。
- Network Synthetic Monitorを利用するケース
- 本番環境の重要なネットワーク経路(AWS/オンプレミス間など)
- SLA要件が厳しく、監視システム自体の可用性が重要なサービス
- EC2など自前実装を利用するケース
- 開発・ステージング環境
- 社内向けサービスで一時的な監視停止が許容できる場合
終わりに
グローバルIPアドレスを対象としたモニタリングの実施方法と、Network Synthetic Monitorを見てみました。
グローバルIPアドレスを対象とする場合はENI自体がプライベートIPアドレスしか持っていないため、いくつかコツが必要なことがわかりました。
また、Network Synthetic Monitorはマネージドサービスというのもあり高い信頼性を持っている一方で、料金面ではそこそこ良い金額になることがわかりました。
そのため、用途や要件に応じて使い分けが重要となるため、長期的な運用コストも含めて検討が必要となります。
ハイブリッドクラウド環境における重要なネットワーク監視には、マネージドサービスの恩恵を最大限活用し、その他の監視については自前実装との組み合わせで、コスト効率の良い監視体制を構築する必要性を改めて実感しました。
今回の記事は以上となります。お読みいただきありがとうございました!