Zabbix 5.2 on AWS
2021/05/08 17:37
Zabbix 5.2 on AWS
【注意】まず、このページは個人的な備忘録であり、自分が分かる部分はいろいろとスキップしています。参考にされませぬよう。例)Zabbix へブラウザでアクセスする方法は、もともと準備していた EC2 インスタンスに SSH でアクセスしてポートフォワードを設定し、xrdp をインストールした EC2 に RDP している。
全体構成
このページでは、Zabbix 5.2 の設定を、公式手順をもとにカスタマイズしています。https://www.zabbix.com/jp/download
また、フロントエンドとしてのシステム要件は、次のページを参照しています。
https://www.zabbix.com/documentation/current/manual/installation/requirements
公式手順では、サーバを設定 → DB 設定 → Agent 設定という流れになっています。
DB をサーバ上に構築するためにはスマートな流れですが、RDS を利用する場合は DB を先に準備できるので、作業しておきます。
それから、このページでは企業が利用するような手順書としては余計な情報も大量に記載しているので、そのままでは利用できないことに注意してください。
構成概要
以下の構成で、構築します。Zabbix Server
仕事で AWS クラウドでの構築という手段がとれることを確認するのが目的です。Zabbix の公式では、Red Hat Enterprise Linux / CentOS / Oracle Linux / Ubuntu / Debian / SUSE Linux Enterprise Server / Raspberry Pi OS / Ubuntu (arm64) に対応しています。
Amazon Linux 2 は、おそらく Cent OS 7 の手順で使えそうに思いましたが、一応 RHEL 8 を選択します。
ハードウェア
クラウド上のインスタンス「AWS EC2 (t2.micro) 」を利用するため、ハードウェアは持ちません。ソフトウェア
Zabbix 用のサブネットに、次のインスタンスを作ります。項目 | 内容 | 備考 |
---|---|---|
OS | RHEL 8 | 構築時には最新化する |
DB | MySQL | Amazon RDS を利用 |
アプリ | Zabbix Server 5.2 | |
Zabbix Client | サーバ自身の管理用 | |
PHP 7.3 | Zabbix フロントエンドで利用 |
また、PHP 8.0 はサポートされていません。
Zabbix 5.2 のフロントエンドの要件
https://www.zabbix.com/documentation/current/manual/installation/requirements
そのため PHP 7.3 をインストールします。
ネットワーク
Zabbix サーバを置くネットワークのサンプルとして 172.16.10.10 を静的に指定します。これはプライベートサブネットなので、Web アクセスは外部からインターネット接続で RDP できる EC2 インスタンスから参照します。
実際に確認した方法としては、パブリックサブネットに SSH 通信ができる Linux インスタンスを置いて、ポートフォワードを利用して RDP できるインスタンスからブラウザによって参照しています。
業務として構築する場合は Basic 認証等も検討し、パブリックサブネットに配置しても良いでしょう。
Zabbix Agent
Agent は、以下の構成で構築します。ハードウェア
- Amazon Linux 2
ソフトウェア
適当なサブネットに、次のインスタンスを作ります。項目 | 内容 | 備考 |
---|---|---|
OS | Amazon Linux 2 | |
アプリ | Zabbix Agent 5.2 | |
Zabbix Client | サーバ自身の管理用 |
ネットワーク
サンプルとして、パブリックサブネットに構築します。構成図
このページで作成する Zabbix の構成図を次に示す。Zabbix Agent をインストールする Client に ssh で接続する想定です。
また Client には xrdp もインストールして ssh ポートフォワードから RDP しますが、こちらについては目的の動作ではないため割愛します。
作業の流れ
このページは、以下の流れで作業します。- RDS で DB を用意
- EC2 で Zabbix Server を用意
- Zabbix Server で設定
- Zabbix Agent を設定
セキュリティグループの作成
左ペインの「セキュリティ」から「セキュリティグループ」を選択します。Zabbix Server は 10051 番ポートで Zabbix Agent からのアクセスに応答します。
Zabbix Agent は 10050 番ポートで Zabbix Server からのアクセスに応答します。
RDS 用
基本的な詳細
セキュリティグループの、基本的な詳細を入力します。項目 | 内容 |
---|---|
セキュリティグループ名 | Zabbix RDS |
説明 | Zabbix DB |
VPC | (作成した VPN を選択) |
インバウンドルール
RDS は 3306 番ポートで Zabbix Server からのアクセスに応答します。タイプ | プロトコル | ポート範囲 | ソース | 説明 |
---|---|---|---|---|
MYSQL/Aurora | TCP | 3306 | 172.16.10.0/24 |
アウトバウンドルール
特に制限を設けません。Zabbix Server 用
基本的な詳細
セキュリティグループの、基本的な詳細を入力します。項目 | 内容 |
---|---|
セキュリティグループ名 | Zabbix |
説明 | Zabbix Servers Access |
VPC | (作成した VPN を選択) |
インバウンドルール
Zabbix Server は 10051 番ポートで Zabbix Agent からのアクセスに応答します。他のサブネットから、Zabbix サーバに Agent の情報を送るための設定します。
タイプ | プロトコル | ポート範囲 | ソース | 説明 |
---|---|---|---|---|
カスタム TCP | TCP | 10051 | 172.16.0.0/16 | Agent による Zabbix サーバへのアクセス |
HTTP | TCP | 80 | 172.16.0.0/16 | Web ブラウザによる Zabbix サーバへのアクセス |
HTTP | TCP | 443 | 172.16.0.0/16 | Web ブラウザによる Zabbix サーバへのアクセス |
SSH | TCP | 22 | 172.16.0.0/16 | SSH による Zabbix サーバへのアクセス |
Zabbix Agent 側のセキュリティルールに、TCP/10050 ポートのインバウンドルールを付与してください。なお、アクセス端末については、パブリックサブネットの Client を想定しています。
アウトバウンドルール
特に制限を設けません。制限を設ける場合は、次の2点に注意。
Zabbix サーバが Agent に対してアクセスするための TCP/10050
Zabbix サーバが RDS に対してアクセスするための TCP/3306
Zabbix Agent 用
基本的な詳細
セキュリティグループの、基本的な詳細を入力します。項目 | 内容 |
---|---|
セキュリティグループ名 | Zabbix Agent |
説明 | Zabbix Zagents Access |
VPC | (作成した VPN を選択) |
インバウンドルール
Zabbix Agent は 10050 番ポートで Zabbix Server からのアクセスに応答します。他のサブネットから、Zabbix サーバに Agent の情報を送るための設定です。
タイプ | プロトコル | ポート範囲 | ソース | 説明 |
---|---|---|---|---|
カスタム TCP | TCP | 10050 | 172.16.0.0/16 | Zabbix Server による Agent へのアクセス |
Agent が Linux の場合は TCP/22 を、Windows の場合は TCP/3389 も必要と思われます。
デフォルトでは、セキュリティグループを5つまで同時に適用できるため、分割したほうが良さそうです。
アウトバウンドルール
特に制限を設けません。制限を設ける場合は、次の2点に注意。
Zabbix サーバが Agent に対してアクセスするための TCP/10050
Zabbix サーバが RDS に対してアクセスするための TCP/3306
ネットワーク構成
VPC の作成
デフォルト VPC を利用する場合は必要ない作業ですが、今回は別途行うものとします。サンプルとして、上記構成図のとおり 172.16.0.0/16 の VPC を作成します。
サブネットの定義
また、Amazon RDS 用のサブネットを2つ作るものとします。RDS は、AZ 2つ以上を束ねたマルチ AZ 構成にする必要があります。
なので VPC 作成 → サブネット作成 → サブネットグループに指定 → データベース作成をお行います。
Amazon RDS にて DB を構築したいので、AWS マネジメントコンソールから VPC にアクセスします。
パブリックサブネット
DMZ 用サブネット(Public)
外部と接するサブネットを作成します。172.16.0.0/24 として話を進めます。
ここには Internet Gateway や NAT Gateway など、インターネット接続を行うためのインスタンスを置くことになります。
Zabbix がインターネットにアクセスする必要があるなら、ここに Zabbix サーバを立てても良いです。
パブリックサブネットの要件となる、Internet Gateway を置きます。
また、プライベートサブネットがインターネットに抜けるために必要な NAT Gateway もここに置きます。
Internet Gateway
省略NAT Gateway
省略プライベートサブネットからのインターネット接続を受けて、Internet Gateway でやり取りするものです。
セキュリティグループの設定を忘れず行う必要があります。
プライベートサブネット
RDS 用サブネット A(Private)
VPC で 172.16.1.0/24 のサブネットを作ります。名前は DB a として進めます。
AZ は a ~ d あるとして、ここでは a を選択します。
RDS 用サブネット B(Private)
VPC で 172.16.2.0/24 のサブネットを作ります。名前は DB b として進めます。
AZ は a ~ d あるとして、ここでは b を選択します。
Zabbix サブネット(Private)
VPC で 172.16.5.0/24 のサブネット を作ります。AZ は任意で、名前は Zabbix として進めます。
Zabbix サーバを立てるためのサブネットとしているが、サーバ用に作らなければならないものでは無くて、話を理解しやすくするためのものです。
このサブネット以外に Zabbix サーバを立てても良いです。
RDS
AWS マネジメントコンソールから RDS にアクセスします。サブネットグループの作成
左ペインのサブネットグループを選択します。「DB サブネットグループを作成」を押して、作成画面へ。
サブネットグループの詳細
「サブネットグループの詳細」へ入力します。入力項目 | サンプル | 入力内容 |
---|---|---|
名前 | Zabbix | |
説明 | zabbix network subnet | |
VPC | (作成したVPC) |
サブネットを追加
「サブネットを追加」へ入力します。入力項目 | サンプル | 入力内容 |
---|---|---|
アベイラビリティゾーン | AZ a と AZ b を選択 | 他にサブネットを作成した AZ があればそれも選択 |
サブネット | RDS 用サブネット「DB a」「DB b」を選択します |
作成ボタンをクリックして、RDS が利用するサブネットグループを作成します。
データベース
左ペインから「データベース」を選択し、右ペインの「データベースの作成」ボタンをクリックします。データベース作成方法を選択
標準作成を選択。エンジンのオプション
MySQL を選択します。エディションは、MySQL Community のみ。
バージョンは MySQL 8.0.23 で良いです。
テンプレート
無料利用枠を選択します。設定
項目 | 設定サンプル | 内容 | |
---|---|---|---|
DBインスタンス識別子 | zabbix | ||
認証情報の設定 | |||
マスターユーザー名 | 任意 | 自動生成してもよい | |
マスターパスワード | 任意 | 自動生成してもよい |
Default は狙われやすいのでできれば変更するのが望ましいが、プライベートサブネットで、セキュリティグループでアクセス元を管理する想定、かつサンプルということで admin のまま。
マスターパスワードはブラウザの機能で勝手に入れられているが、本来はブランク……
DB インスタンスサイズ
「db.t2.micro」を選択します。ストレージ
項目 | 設定サンプル | 内容 |
---|---|---|
ストレージタイプ | 汎用(SSD) | デフォルトの場合 |
ストレージ割り当て | 20 GiB | デフォルトの場合 |
ストレージの自動スケーリング | □ |
可用性と耐久性
マルチ AZ 配置一択です。
接続
項目 | 内容 | 備考 |
---|---|---|
VPC | Sample | 作成した VPC |
サブネットグループ | zabbix | 作成したサブネットグループ |
パブリックサブアクセス可能 | なし | プライベートサブネットに置く想定 |
VPC セキュリティグループ | Zabbix | 対応するセキュリティグループは作成済みの想定 |
既存の VPC セキュリティグループ | Zabbix | |
アベイラビリティゾーン | 任意で指定 | |
追加の接続設定 | ||
データベースポート | 3306 |
データベース認証
パスワードを選択します。追加設定
このタイミングでデータベースを作っておきます。項目 | 内容 | 備考 |
---|---|---|
データベースの選択肢 | ||
最初のデータベース名 | zabbix | Zabbix サーバのデフォルト |
DB パラメータグループ | (変更不可) | |
オプショングループ | (変更不可) | |
バックアップ | ||
自動バックアップの有効化 | □ | |
モニタリング | ||
拡張モニタリングの有効化 | □ | |
ログのエクスポート | ||
エラーログ | □ | |
全般ログ | □ | |
スロークエリログ | □ | |
メンテナンス | ||
マイナーバージョン自動アップグレードの有効化 | ■ | |
メンテナンスウィンドウ | 〇設定なし | |
削除保護 | ||
削除保護の有効化 | □ |
概算月間コスト
毎月の支払予想額が出ます。出ないこともあります。
エンドポイント
AWS マネジメントコンソールから RDS にアクセスします。左ペインから「データベース」を選択して、右ペインに出てくる DB 識別子 zabbix を選択します。
接続とセキュリティにある、エンドポイントをメモしておきます。
これは、Zabbix サーバからアクセスする際に必要です。
Zabbix 5.2 Server
AWS マネジメントコンソールから EC2 にアクセスします。ユーザーデータ用シェルスクリプトを作成
シェルスクリプトとして、次の内容のテキストファイルを作成します。ファイル名は zbxsvr.sh として進めます。
なお、改行コードは LF のみとします。
(日本語を含まないので Shift-JIS でも構わない。含める場合は UTF-8 にすること)
#!/bin/bash # RHEL8 Update dnf update -y # Zabbix install rpm -Uvh https://repo.zabbix.com/zabbix/5.2/rhel/8/x86_64/zabbix-release-5.2-1.el8.noarch.rpm dnf clean all dnf install -y mysql zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent zabbix-web-japanese # php dnf install -y php dnf distro-sync dnf module reset php dnf module enable php:7.3 dnf distro-sync # SElinux setenforce 0
インスタンスの作成
左ペインから「インスタンス」を選択して、右ペインの「インスタンスを起動」をクリックします。AMI の選択
サーバとして RHEL8 の x86 を選択します。インスタンスタイプの選択
タイプ t2.micro を選択します。インスタンスの設定
インスタンスの設定
項目 | 内容 | 備考 |
---|---|---|
インスタンス数 | 1 | |
購入のオプション | □ スポットインスタンスのリクエスト | |
ネットワーク | Sample | 作成した VPC |
サブネット | Zabbix | 作成したサブネット |
自動割り当てパブリック IP | サブネット設定を使用(無効) | |
配置グループ | □ インスタンスをプレイスメントグループに追加します。 | |
キャパシティーの予約 | 開く | |
ドメイン結合ディレクトリ | ディレクトリなし | |
IAM ロール | なし | |
シャットダウン動作 | 停止 | |
停止 - 休止動作 | □ 停止動作に休止動作を追加します | |
終了保護の有効化 | □ 誤った終了を防止します | |
モニタリング | □ CloudWatch 詳細モニタリングを有効化 | |
テナンシー | 共有 - 共有ハードウェアインスタンスの実行 | |
Elastic Inference | □ Elastic Inference アクセラレーターを追加 | |
クレジット仕様 | □ 無制限 | |
ファイルシステム |
ネットワークインターフェイス
項目 | 内容 | 備考 |
---|---|---|
デバイス | eth0 | デフォルト |
ネットワークインターフェイス | 新しいネットワークインターフェース | デフォルト |
サブネット | デフォルト | |
プライマリ IP | 172.16.10.10 | EIPを使用しないので、静的に指定します |
セカンダリ IP アドレス | 指定なし | |
IPv6 IP | 指定なし |
高度な詳細
ここで zbssvr.sh を利用します。ここで実行コマンドを記述したファイルをアップロードしておくと、サインインした後に手で入力する必要がなくなります。
項目 | 内容 | 備考 |
---|---|---|
Enclave | □ 有効 | |
アクセス可能なメタデータ | 有効 | |
メタデータのバージョン | V1 および V2 (トークンはオプション) | |
メタデータトークンレスポンスのホップ制限 | 1 | |
ユーザーデータ | ● ファイルとして | zbssvr.sh を指定 |
ストレージの追加
デフォルトで進めます。タグの追加
任意のタグを設定します。セキュリティグループの設定
Zabbix サーバ用のセキュリティグループを指定します。インバウンドルール
最低限、以下のポートが利用できること。タイプ | プロトコル | ポート範囲 | ソース | 説明 |
---|---|---|---|---|
MYSQL/Aurora | TCP | 3306 | 172.16.0.0/16 | |
カスタム TCP | TCP | 10051 | 172.16.0.0/16 | Agent による Zabbix サーバへのアクセス |
HTTP | TCP | 80 | 172.16.0.0/16 | Web ブラウザによる Zabbix サーバへのアクセス |
HTTP | TCP | 443 | 172.16.0.0/16 | Web ブラウザによる Zabbix サーバへのアクセス |
SSH | TCP | 22 | 172.16.0.0/16 | SSH による Zabbix サーバへのアクセス |
確認
ブラウザでの設定
ブラウザで Zabbix サーバにアクセスします。URL は、次の通りです。
http://(IPアドレス)/zabbix次の画面が表示されます。
(インストール時に zabbix-web-japanese も指定しているので、日本語を選択可能です)
次に、前提条件のチェックで、環境に問題ないことを確認します。
「次のステップ」を選択します。
データベースホストに、RDSのエンドポイントを指定します。
また、zabbix ユーザのパスワードも指定します。
項目 | 内容 |
---|---|
データベースホスト | RDS のエンドポイント |
パスワード | RDS zabbix ユーザのパスワード |
(UTC+09:00) Asia/Tokyo を選択します。
サインイン
次のデフォルトアカウントでサインインします。項目 | 内容 |
---|---|
ユーザー名 | Admin |
パスワード | zabbix |
Zabbix Agent
以下は、あとで分割してページを作る予定です。Amazon Linux 2
リポジトリ登録
Amazon Linux 2 は、CentOS をベースに作成されていると考えられます。そこで、RHEL7 ベースのリポジトリを登録します。
# yum update
# rpm -ivh https://repo.zabbix.com/zabbix/5.2/rhel/7/x86_64/zabbix-release-5.2-1.el7.noarch.rpm
# yum clean all
Zabbix Agent インストール
登録したリポジトリから、Agent をインストールします。# yum install zabbix-agent
Zabbix Agent 設定
/etc/zabbix/zabbix_agentd.conf を修正します。# cp -p /etc/zabbix/zabbix_agentd.conf,_$(date +%Y%m%d)修正内容は、自分自身のホスト名と、情報を送る Zabbix サーバです。
# vi /etc/zabbix/zabbix_agentd.conf
差分の確認を行います。
# diff /etc/zabbix/zabbix_agentd.conf,_$(date +%Y%m%d)
Zabbix Agent 起動
インストールした Agent を起動および自動起動設定を行います。# systemctl restart zabbix-agent
# systemctl enable zabbix-agent