AWS構築練習!(CloudFormation) ~Zabbix監視付きEC2構成~
はじめに
- AWS の CloudFormation を使った構築練習用
- 簡易 Web アプリ環境 + RDS + ALB + Zabbix 監視を組み込んだ構成
Stack用YAMLファイルは下記リンク先にあります。
GitHub
1. 構成概要
- VPC:パブリック / プライベートサブネット
- ALB:パブリックサブネットに配置、EC2 をターゲット
- AppServerEC2(単一):プライベートサブネット、Node.js サンプルAPI稼働
- AppServer用RDS:プライベートサブネット、EC2 から接続
- Zabbix Server:Active 監視用、Elastic IP 付き
- ZabbixServer用RDS:プライベートサブネット、EC2 から接続
- セキュリティグループ:ALB → EC2, EC2 → RDS, EC2 → Zabbix Server (10051)
構成図
2. CloudFormation のポイント
2-1. Subnet & IGW / NAT
- PublicSubnet は ALB 用
- PrivateSubnet は EC2 / RDS 用
- NAT Gateway を作成し PrivateSubnet からインターネットアクセス可能に
2-2. Security Group
- AppEC2SG:ALB から 3000, Zabbix Server へ 10051
- AppRDSSG:EC2 から 3306
- ZabbixServerSG:WebUI 80, Active チェック 10051
2-3. EC2 / UserData
- 単一 EC2 に Node.js サンプルAPI + Zabbix Agent を設定
- Zabbix Server への Active 監視用設定
2-4.ZabbixRDSをセットアップする必要がある。
- Zabbix 用 RDS の初期化(DB 作成・スキーマ投入)を自動化した。
- 初期化処理に使う EC2 は一時的に作成し、処理完了後は削除する構成。
2-5.EC2へのアクセス
- ZabbixServer(Elastic IP固定)
- AppEC2(SSMログイン)
3. Zabbix 監視設定
- Active 監視で EC2 → Server にデータ送信
- ZabbixWebUI上で、ホスト登録が必要(下記に記述あり)
4.起動後チェックリスト
ALB → EC2 の通信確認
-
Target Group が Healthy か確認
- AWS コンソールで Target Group を開く
- HealthCheckPath を
/または/healthに設定 - Node.js サンプルAPI が HTTP 200 を返すことを確認
-
ブラウザ / curl でアクセス
ブラウザでhttp://<ALBのDNS名>/ を入力
curl http://<ALBのDNS名>:80/
✅ EC2 → RDS 接続確認
-
EC2 に接続(SSH / Session Manager)
mysql -h <RDSのエンドポイント> -u <ユーザー> -p- RDS にログインできることを確認
-
DB 接続テスト
SELECT NOW();- 現在時刻が取得できれば接続OK
✅ Zabbix 監視の確認
- Zabbix Server WebUI にログイン
ブラウザで下記を検索
http://<ZabbixServerのパブリックIPアドレス>/zabbix
★下記画面が出る

★設定値入力

★記入後

★下記設定はお好みで

★初期ログインID・パスは
ID:Admin
パスワード:zabbix

★このままではAppServerが表示されないのでホスト登録必要
左タブの監視データ
→ホスト
→右上のホストの作成

- ホストが登録されているか確認
★追加できた
おまけ
ログ確認方法
-
EC2 の Node.js ログ確認
tail -f /opt/helloapp/app.log- アプリが正常に起動しているか確認
-
Zabbix Agent ログ確認
tail -f /var/log/zabbix/zabbix_agentd.log- Server への接続が正常であることを確認



