Azure Monitor Private Link Scope (AMPLS) を使ってAzure Monitor(Log Analytics)に閉域接続を行う Part2

はじめに

一年以上前にAMPLSがGAしたときに一度検証しましたが、その時はAzure VNET内でLog AnalyticsにプライベートIPによる接続設定を行いました。

過去の記事は「こちら

今回は、オンプレミス上にある非Azure VMに対して、閉域ネットワーク経由でLog Analyticsに各種メトリックを送信したいと思います。

閉域ネットワーク構成

基本的にAzureと閉域接続できる環境であれば、なんでも大丈夫でしょう。

お金のかかる順で

ExpressRoute > VPN Site to Site > Open VPN or Wireguard

などから好きな接続方法を選ぶがいいでしょう。

私はお金がないので、以前ポストしたWireguardによるAzureとオンプレとの閉域接続の環境を流用します。

過去の記事は「こちら

接続構成図

オンプレミスとのWireguardによる接続までは既に済んでいます。

Azure VNETが192.168.2.0/24で、オンプレミスは192.168.1.0/24で相互にルーティングが正常に行える状態となっています。

こちらに、AMPLSのエンドポイントを準備して、オンプレミスから閉域接続でLog Analyticsにログを送り込みます。

とりあえずAMPLSやLog Analyticsを作る前のリソース一覧は以下の通り。

Log Analyticsワークスペースの作成

とりあえず今回の検証専用のLog Analyticsワークスペースを作成します。

リージョンはとりあえずVNETと同じ東日本を選択。名前は適当で。

価格レベルもデフォルトでいいでしょう。

「確認及び作成」を押してしばらく待つと作成完了です。

AMPLSの作成

Azureポータルの検索テキストフィールドに「azure moni」あたりまで打ち込むと「Azure Monitor Private Link スコープ」が一覧に現れるので、そちらを選択します。

「Azure Monitor Private Link スコープの作成」を選択します。

リソースを作成する場所は、VNETやLog Analyticdと同じリソースグループを選択します。名前は適当で良いです。

作成完了しました。

AMPLSにLog Analyticsを紐づけ

AMPLSのメニューから「Azure Monitorリソース」を選択後、「+追加」を押します。

一覧から先ほど作成したLog Analyticsワークスペースを選択して、適用します。

一覧に無事追加されました。

AMPLSのプライベートエンドポイントを作成

AMPLSのメニューから「プライベートエンドポイント接続」を選択後「+プライベートエンドポイント」を押します。

インスタンスの名前は適当で、リージョンはVNETと同じ東日本を選択します。

リソースの種類は「Microsoft.Insights/privateLinkScopes」を選択、リソースから該当リソース(先に作成したAMPLSの名称)、対象サブリソースには「azuremonitor」を選択します。

仮想ネットワークとサブネットを選択します。「プライベートDNS統合」は今回の検証では統合していますが、こちらは「いいえ」でもよいです。

こちらの設定を行うと、Private DNS Zoneリソースが作成されて、Azure VNET内からはAMPLSの(プライベートな)エンドポイントにアクセスするための名前解決が行えるようになるのですが、オンプレミスからはこちらのPrivate DNS Zoneに対して名前解決させることが出来ないため意味がありません。

このAMPLSをAzure VNET内からも利用する場合には無論意味のある設定ですので、実際の環境に合わせて設定しましょう。

最後、作成が完了するとプライベートエンドポイントのリソースも出来上がります。

DNSレコードの確認とオンプレミスへの設定

プライベートエンドポイントの「DNSの構成」メニューを開くと、NICに対して複数のプライベートアドレスとそれに対応したFQDNの一覧が確認できます。

これをすべて、オンプレミス側ネットワークのDNSサーバに登録する必要があるのですが、今回はオンプレミス側のサーバが1台のみであることと、検証目的であることからUbuntu Serverの /etc/hosts に直接書くことにしました。

念のためオンプレミスのUbuntu Serverから「api.monitor.azure.com」にアクセスして、ちゃんとプライベートIPアドレス経由で接続されることを確認しました。

Log Analyticsのネットワーク分離設定

AMPLSの設定でLog Analyticsを追加すると、Log Analyticsのメニューに「ネットワーク分離」が追加されます。

こちらの「プライベート リンク スコープを通じて接続されていないパブリック ネットワークからのデータ インジェストを受け入れる」を「いいえ」にしておくと、AMPLS経由ではないデータ送信を拒否できるため、今回の設定が正しいか確認するために指定しておきます。


オンプレサーバにエージェント追加

今回の記事ではLog Analyticsエージェントだけをインストールします。Azure VMであればポータルからぽちぽちしてエージェントの追加が行えるのですが、オンプレミスサーバの場合はLog Analyticsのメニューから「エージェント管理」「Linuxサーバー」を選択後に表示されるインストールコマンド部分をコピペして、直接Ubuntu Server上で実行します。

しばらく待つと、最後にexiting with code 0と表示されるので問題なくインストールされたと思われます。

ハートビートログの確認

先のLog Analyticsエージェントのインストールが終わった直後はまだデータが溜まっていないため、10分くらいは待ったあと、Heartbeatログにレコードが追加されていることを確認します。

パフォーマンスデータの収集設定

Log Analyticsの「エージェント構成」から、「Linuxパフォーマンスカウンタ」を選択後「推奨されるカウンターの追加」をとりあえず押します。

推奨設定のカウンターが自動的に追加されるので「適用」を押します。

その後はしばらく待つと、Log AnalyticsのPerfテーブルにもデータが上がってくるのでAzureポータルからも確認できるようになります。

Ubuntuサーバ上でnetstatで見ても、外部通信はグローバルIPアドレスに対して行われているものはなく、192.168.2.xに対してなんとなく通信しているっぽいのが確認できますね(適当)

おわりに

今回はLog Analyticsエージェントのみをオンプレミス上のサーバにインストールして、AMPLSを使った閉域接続を確認しました。

VM Insights(Dependency Agent)を使うには、さらにAzure Arc for Serversに対応させる必要があったり、それを閉域接続させるためにAzure Arc Private Link Scope(AAPLS? まだPreview)が必要だったりと、手間が多そうなので別途検証したいと思います。