【注意】まず、このページは個人的な備忘録であり、自分が分かる部分はいろいろとスキップしています。参考にされませぬよう。
例)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 を先に準備できるので、作業しておきます。
それから、このページでは企業が利用するような手順書としては余計な情報も大量に記載しているので、そのままでは利用できないことに注意してください。
以下の構成で、構築します。
仕事で 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 7.2.5 が求められていますが、RHEL8 はデフォルトで PHP 7.2.4 がインストールされます。
また、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 認証等も検討し、パブリックサブネットに配置しても良いでしょう。
Agent は、以下の構成で構築します。
サンプルとして、Public subnet に Amazon Linux 2 のインスタンスを作ります。
適当なサブネットに、次のインスタンスを作ります。
項目 内容 備考
OS Amazon Linux 2
アプリ Zabbix Agent 5.2
Zabbix Client サーバ自身の管理用
サンプルとして、パブリックサブネットに構築します。
このページで作成する Zabbix の構成図を次に示す。
Zabbix 5.2 + RDS (MySQL) 構成図
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 からのアクセスに応答します。
セキュリティグループの、基本的な詳細を入力します。
項目 内容
セキュリティグループ名 Zabbix RDS
説明 Zabbix DB
VPC (作成した VPN を選択)
説明には、日本語が使えない模様……。
RDS は 3306 番ポートで Zabbix Server からのアクセスに応答します。
タイプ プロトコル ポート範囲 ソース 説明
MYSQL/Aurora TCP 3306 172.16.10.0/24
特に制限を設けません。
セキュリティグループの、基本的な詳細を入力します。
項目 内容
セキュリティグループ名 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 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 を利用する場合は必要ない作業ですが、今回は別途行うものとします。
サンプルとして、上記構成図のとおり 172.16.0.0/16 の VPC を作成します。
また、Amazon RDS 用のサブネットを2つ作るものとします。
RDS は、AZ 2つ以上を束ねたマルチ AZ 構成にする必要があります。
なので VPC 作成 → サブネット作成 → サブネットグループに指定 → データベース作成をお行います。
Amazon RDS にて DB を構築したいので、AWS マネジメントコンソールから VPC にアクセスします。
外部と接するサブネットを作成します。
172.16.0.0/24 として話を進めます。
ここには Internet Gateway や NAT Gateway など、インターネット接続を行うためのインスタンスを置くことになります。
Zabbix がインターネットにアクセスする必要があるなら、ここに Zabbix サーバを立てても良いです。
パブリックサブネットの要件となる、Internet Gateway を置きます。
また、プライベートサブネットがインターネットに抜けるために必要な NAT Gateway もここに置きます。
省略
省略
プライベートサブネットからのインターネット接続を受けて、Internet Gateway でやり取りするものです。
セキュリティグループの設定を忘れず行う必要があります。
VPC で 172.16.1.0/24 のサブネットを作ります。
名前は DB a として進めます。
AZ は a ~ d あるとして、ここでは a を選択します。
VPC で 172.16.2.0/24 のサブネットを作ります。
名前は DB b として進めます。
AZ は a ~ d あるとして、ここでは b を選択します。
VPC で 172.16.5.0/24 のサブネット を作ります。
AZ は任意で、名前は Zabbix として進めます。
Zabbix サーバを立てるためのサブネットとしているが、サーバ用に作らなければならないものでは無くて、話を理解しやすくするためのものです。
このサブネット以外に Zabbix サーバを立てても良いです。
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.t2.micro」を選択します。
DB インスタンスサイズイメージ
項目 設定サンプル 内容
ストレージタイプ 汎用(SSD) デフォルトの場合
ストレージ割り当て 20 GiB デフォルトの場合
ストレージの自動スケーリング □
ストレージイメージ
マルチ AZ 配置
一択です。
可用性と耐久性イメージ
項目 内容 備考
VPC Sample 作成した VPC
サブネットグループ zabbix 作成したサブネットグループ
パブリックサブアクセス可能 なし プライベートサブネットに置く想定
VPC セキュリティグループ Zabbix 対応するセキュリティグループは作成済みの想定
既存の VPC セキュリティグループ Zabbix
アベイラビリティゾーン 任意で指定
追加の接続設定
データベースポート 3306
接続イメージ
パスワードを選択します。
データベース認証イメージ
このタイミングでデータベースを作っておきます。
項目 内容 備考
データベースの選択肢
最初のデータベース名 zabbix Zabbix サーバのデフォルト
DB パラメータグループ (変更不可)
オプショングループ (変更不可)
バックアップ
自動バックアップの有効化 □
モニタリング
拡張モニタリングの有効化 □
ログのエクスポート
エラーログ □
全般ログ □
スロークエリログ □
メンテナンス
マイナーバージョン自動アップグレードの有効化 ■
メンテナンスウィンドウ 〇設定なし
削除保護
削除保護の有効化 □
追加設定イメージ
毎月の支払予想額が出ます。
出ないこともあります。
AWS マネジメントコンソールから RDS にアクセスします。
左ペインから「データベース」を選択して、右ペインに出てくる DB 識別子 zabbix を選択します。
接続とセキュリティにある、エンドポイントをメモしておきます。
これは、Zabbix サーバからアクセスする際に必要です。
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
左ペインから「インスタンス」を選択して、右ペインの「インスタンスを起動」をクリックします。
サーバとして RHEL8 の x86 を選択します。
AMI の選択イメージ
タイプ 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 を指定
高度な詳細イメージ
なお、上記スクリプトの利用は NAT Gateway が適切に設定され、インターネット接続できることが条件となります。
デフォルトで進めます。
ストレージの追加イメージ
任意のタグを設定します。
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 も指定しているので、日本語を選択可能です)
言語選択 日本語
日本語に変更できたら「次のステップ」を選択します。
次に、前提条件のチェックで、環境に問題ないことを確認します。
前提条件のチェック
全部 OK であれば問題ありません。
「次のステップ」を選択します。
データベースホストに、RDSのエンドポイントを指定します。
また、zabbix ユーザのパスワードも指定します。
データベース接続設定
項目 内容
データベースホスト RDS のエンドポイント
パスワード RDS zabbix ユーザのパスワード
データベース接続設定 入力イメージ
「次のステップ」を選択します。
Zabbixサーバーの詳細
「次のステップ」を選択します。
GUI設定
タイムゾーンは日本に変更します。
(UTC+09:00) Asia/Tokyo を選択します。
GUI設定 日本時間
「次のステップ」を選択します。
インストール事前準備概要
「次のステップ」を選択します。
インストール終了
「終了」を選択します。
サインイン画面
次のデフォルトアカウントでサインインします。
項目 内容
ユーザー名 Admin
パスワード zabbix
サインインしたら、パスワードは変更しましょう。
以下は、あとで分割してページを作る予定です。
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
登録したリポジトリから、Agent をインストールします。
# yum install zabbix-agent
/etc/zabbix/zabbix_agentd.conf を修正します。
# cp -p /etc/zabbix/zabbix_agentd.conf,_$(date +%Y%m%d)
# vi /etc/zabbix/zabbix_agentd.conf
修正内容は、自分自身のホスト名と、情報を送る Zabbix サーバです。
差分の確認を行います。
# diff /etc/zabbix/zabbix_agentd.conf,_$(date +%Y%m%d)
インストールした Agent を起動および自動起動設定を行います。
# systemctl restart zabbix-agent
# systemctl enable zabbix-agent
下記の登録商標・商標をはじめ、当社サイトに記載している会社名、システム名、製品名は一般に各社の登録商標または商標です。