7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Azure】Azure Arcを用いてNginx(EC2)のアクセスログを確認する。

Posted at

1. はじめに

1-1 ご挨拶

初めまして、井村と申します。
クラウドサービスを触り始めて約3年になりました。最近考えることはマルチクラウド、ハイブリットクラウドの需要が増えるのかなと。その為、Azure Arcを触ってみました。

1-2 対象読者

  • Azureに興味がある

1-3 Azure Arcとは?

Azure Arc の概要より、マルチクラウドとオンプレミスで一貫した管理プラットフォームを提供し、ガバナンスと管理を簡素化するサービス。
管理するリソースとして仮想マシン、Kubernetes クラスター、データベースとなります。
ガバナンス、セキュリティ、コンプライアンスに該当する各Azureリソースを利用して管理、運用できるのが強みだと思います。

1-4 システム構成と検証の流れ

AzureArc_02.JPG

上記がシステム構成図となります。
AWS上にはhttpサーバであるEC2を作成します。httpサービスはNginxです。
Azure上ではEC2を管理するAzure Arc、EC2のsyslogを格納するLog Analytiscワークスペースを作成します。
検証としては、
access.logに記述されるNginxへアクセスしたクライアントIPアドレスを取得することです。
取得方法はLog Analytiscワークスペースへ格納されたログにクエリします。

2. 構築

2-1 EC2の作成

構築手順は割愛。以下に注意事項を記載します。

  • AMIは「Amazon Linux 2023 AMI」ではなく、「Amazon Linux 2 AMI」で作成。
    → 2023/06/26現在、syslogをLog Analytiscワークスペースへ転送するにはAzure Monitor Agentのインストールが必要ですが、「Amazon Linux 2023 AMI」が対象外である。詳細は公式ドキュメントを参照。

  • Security GroupはEC2にアクセスするためのssh、Nginxへアクセスするためのhttp、Azure ArcとAzure Arcエージェントの通信するためのhttpsを許可。

2-2 Nginxのインストール

以下コマンドを実行してEC2にNginxをインストールします。私はTera TermからEC2にログインしています。

bash
# Nginxのインストール
sudo amazon-linux-extras install nginx1

# Nginxの自動起動
sudo systemctl enable nginx

# Nginxの起動
sudo systemctl start nginx

自端末のWEBブラウザからEC2のパブリックIPアドレスへアクセスしてNginxのウエルカム画面が出力されればokです。

2-3 ログ出力先変更

参考に各バージョンの確認です。

bash
# カーネルのバージョン確認
cat /proc/version
↓
Linux version 5.10.179-171.711.amzn2.x86_64 (mockbuild@ip-10-0-57-205) (gcc10-gcc (GCC) 10.4.1 20221124 (Red Hat 10.4.0-1), GNU ld version 2.35.2-9.amzn2.0.1) #1 SMP Tue Jun 6 01:59:18 UTC 2023

# Nginxのバージョン確認
nginx -v
↓
nginx version: nginx/1.22.1

Nginxのメイン設定ファイルである「/etc/nginx/nginx.conf」からaccess.logのパスである「/var/log/nginx/access.log」をコメントアウトし、syslogへパス変更します。

bash
# メイン設定ファイルの変更
sudo vi /etc/nginx/nginx.conf

### ↓↓↓ファイルの修正
# before 
access_log  /var/log/nginx/access.log  main;

# after
# access_log  /var/log/nginx/access.log  main;
access_log syslog:server=unix:/dev/log;

### ↑↑↑ファイルの修正

# Nginxの再起動
sudo systemctl restart nginx

再度、自端末のWEBブラウザからEC2のパブリックIPアドレスへアクセスしてNginxのウエルカム画面が出力しsyslogを確認する。

bash
# syslogの確認
sudo tail /var/log/messages
↓
un 25 16:13:06 ip-10-0-0-6 journal: ip-10-0-0-6.ap-northeast-1.compute.internal nginx: XXX.XXX.XXX.XXX - - [25/Jun/2023:16:13:06 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.58"

XXX.XXX.XXX.XXXに自端末のIPアドレスが表示されればokです。

2-4 Log Analytiscワークスペースの作成

構築手順は割愛。公式ドキュメントを参照。

2-5 Azure Arcエージェントのインストール

EC2にAzure Arcエージェントをインストールします。インストールするとAzure ArcからEC2を管理することができます。公式ドキュメントに沿ってインストールを実行します。
Azureの検索窓から「Azure Arc」と検索。
Azure Arcの左ペインから「サーバー」を選び、「+追加」ボタンを押下。

単一サーバの「スクリプトの生成」を押下。

「リソースの詳細地域」タブではLog Analyticsと同じ場所、OSはLinuxを選択します。

「スクリプトのダウンロードと実行」タブではAzure Arcエージェントのインストールシェルスクリプトをローカルにダウンロードできます。ダウンロード後、シェルスクリプトである「OnboardingScript.sh」をEC2へアップロードし、シェルを実行します。

bash
# OnboardingScript.shの確認
ls
↓
OnboardingScript.sh

# OnboardingScript.shの実行
bash OnboardingScript.sh

途中で認証を求められます。ワンタイムパスワードを入力し、ユーザアカウントを入力し、処理を進めてください。

正常終了すると、Azure上で状態が接続済みになります。また、Azure上の「名前」とAWS上の「Instance ID」が同じであることが確認できます。

AzureArc_12.JPG

AzureArc_13.JPG

2-6 Azure Connected Machine エージェントのインストール

Log Analyticsワークスペースにsyslogを転送するためには、Azure Monitor Agentを仮想マシンにインストールする必要があります。その前に、公式ドキュメントの前提条件を確認すると以下の通り。

  • Azure 以外: Azure の "外部" (つまり、オンプレミス) または他のクラウドでホストされている物理サーバーと仮想マシンにエージェントをインストールするには、最初に Azure Arc Connected Machine エージェントをインストールする必要があります (追加コストなし)。

Azure Connected Machine エージェントのインストールシェルスクリプトは公式ドキュメントに「Install_linux_azcmagent.sh」としてあります。「OnboardingScript.sh」と同様にEC2条でシェルスクリプトを実行します。

bash
# Install_linux_azcmagent.shの確認
ls
↓
Install_linux_azcmagent.sh

# Install_linux_azcmagent.shの実行
bash Install_linux_azcmagent.sh

正常終了後、EC2を再起動します。再起動後、各デーモンが起動されていることを確認します。

bash
# himdsd.serviceの確認
systemctl status himdsd.service

# gcad.serviceの確認
systemctl status gcad.service

# extd.serviceの確認
systemctl status extd.service

AzureArc_14.JPG

2-7 Azure Monitor Agentのインストール

最後の構築となります。
syslogをLog Analyticsワークスペースへ転送するためにEC2へAzure Monitor Agentをインストールします。Azure Monitor Agentのインストール方法は何パターンかありますが、今回は「データ収集ルール」の作成を行います。
「データ収集ルール」はどの仮想マシンを対象とするか、対象となった仮想マシンのログをどのLog Analyticsワークスペースに送るかということを設定します。「データ収集ルール」作成時に対象となった仮想マシンにAzure Monitor Agentがインストールされていない場合、Azure Monitor Agentをインストールしてくれます。

以下の公式ドキュメントを参照して「データ収集ルール」を作成します。

Azureの検索窓から「モニター」と検索。
Azure Arcの左ペインから「データ収集ルール」を選び、「+追加」ボタンを押下。

「基本」タブではリージョン、プラットフォームをAzure Arcと合わせます。

「リソース」タブでは「+リソースの追加」を押下後、対象リソースを選択し「適用」を押下。

「収集と配信」タブでは「+データソースの追加」を押下後、データソースの種類を「Linux Syslog」を選択。「次へ:ターゲット」を押下。

ターゲットでは「アカウントまたは名前空間」で作成したLog Analyticsを選択し「データソースの追加」を押下。

蛇足ですが「データソースの追加」でデータソースの種類で「パフォーマンスモニター」も便利なので入れます。上記が設定が完了したら、「確認と作成」で「データ収集ルール」を作成します。

3. 検証

それでは検証を行います。
Azure Arcの左ペインからログを選びます。
検索窓でsyslogと入力し、候補から「All Syslog」の「実行」を押下。
これでLog Anayticsワークスペースのログに対してクエリを実行します。

AzureArc_21.JPG

画面上部がクエリコマンドです。実行結果がたくさんでます。結果のスクロールを下に下げます。

AzureArc_22.JPG

NginxのアクセスログがLog Anayticsワークスペースに転送されていることが確認できました。
赤枠にクライアントIPアドレスが表示されています。

AzureArc_24.JPG

4. 終わりに

本記事を最後まで読んで頂きましてありがとうございます。
Azure Arcを用いてEC2のログを取得しました。他Azureリソースと同様にログからアラートを飛ばせるので実用的だと思います。本記事で記載しませんでしたが、VM insights も試しました。視覚的にわかりやすくメトリックを取得できました。

今後の課題としては全く触っていないAWSの操作方法でした。

5. 参考記事

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?