概要
最近、Zabbixを1から構築することがなかなか無かったので、改めて導入の手順をまとめながらインストールしてみます。
AWSのEC2に5.0系のZabbixを導入する手順となります。
環境の決定
どんなサイズのEC2にどのバージョンのソフトウェアを入れていくかを決めます。
サポート期間とリリースポリシー にZabbixの各バージョンのサポート期間が掲載されています。
長く運用する場合は、現時点では「LTS(long-term support)」の Zabbix 5.0 にしておくのが良さそうです。
今回は社内で検証のために立てるのですが、Zabbix 5.0 を入れることにします。
導入するバージョンが決まったらシステム要件を確認します。
インストールマニュアルの「2 Requirements」を確認します。
以下は、5.0用のページです。
https://www.zabbix.com/documentation/5.0/en/manual/installation/requirements
(URLのバージョン表記部分を変えると他のバージョンのページも見れます)
「Examples of hardware configuration」の部分でハードウェアの構成例が、「Required software」の部分でDB・Webサーバ・PHPの必須要件が書かれています。
今回は、以下バージョンで構築しました。
EC2:Amazon Linux 2 AMI (HVM)、インスタンスタイプはt3.micro(社内検証用のためスペック低め)
Zabbix:5.0.18
Apache:Apache/2.4.51
DB:MariaDB 5.5.68
PHP:7.2.24
Zabbixサーバ構築
AWSでインスタンスの立ち上げ
-
OS、インスタンスタイプを選択します。今回は検証用なのでt3.microですが、普通に監視用として立てるなら少し非力なのでsmall以上がいいと思います。
-
ネットワーク、サブネットは各自の環境に合わせて設定します。
-
ストレージは今回は検証用なのでデフォルトの8GBのままにします。ちゃんと立てる場合は監視するホスト数と監視データの保持期間にもよりますが、8GBだと少し心もとないので増やすことが多いです。
-
セキュリティグループをZabbix用に一つ作ります。Web管理画面にアクセスする環境からのHTTPまたはHTTPSのポートを許可しておくことと、監視対象サーバが決まっている場合はそのサーバからの10051番ポートからのアクセスを許可しておきます。
-
キーペアの設定or選択も各自の環境に合わせて設定します。新しくキーを作成した場合はファイルをダウンロードし、しっかり管理しましょう。
各ソフトウェアのインストール、設定
IPが割り当てられ、インスタンスが立ち上がってきたらもろもろ設定していきます。
ssh -i "キーファイルパス" ec2-user@IPアドレス
でアクセスして sudo su -
しておきます。
タイムゾーン設定
# timedatectl set-timezone Asia/Tokyo
設定後 timedatectl
や date
コマンドで確認します。
Zabbixの導入と設定
Zabbix LLCのリポジトリを登録します。
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# yum clean all
Zabbixサーバとエージェントをインストールします。
# yum install -y zabbix-server-mysql zabbix-agent
SCLリポジトリを追加します。
公式インストールマニュアルの Red Hat Software Collections を使うやり方だと、rh-php72-php系がうまくはいらなかったので、centos-release-scl-rh を追加しました。
# rpm -Uvh http://mirror.centos.org/altarch/7/extras/aarch64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
# rpm -Uvh http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-2-3.el7.centos.noarch.rpm
zabbix-frontendリポジトリを有効化します。
/etc/yum.repos.d/zabbix.repo
を編集し、[zabbix-frontend]ブロックのenabledを1にしておきます。
[zabbix-frontend]
enabled=1
Zabbixフロントエンドパッケージをインストールします。
# yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl zabbix-web-japanese
DBのインストール・設定
MariaDBをインストールします。
# yum install -y mariadb mariadb-server
# systemctl start mariadb
MariaDBの初期設定を進めます。(対話式)
# mysql_secure_installation
Enter current password for root (enter for none): 空のままenterを押す
Set root password? [Y/n] Y
New password: (rootユーザのパスワードを設定 )
Re-enter new password: (rootユーザのパスワードを再入力 )
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
設定が終わったらアクセスします。
# mysql -uroot -p
(先程設定したrootユーザのパスワードを入力 )
以下を実施し、Zabbix用のデータベースとユーザーを作成&権限設定します。
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by '{zabbixのDBPasswordを決めて入力}';
grant all privileges on zabbix.* to zabbix@localhost;
quit;
初期データを流し込みます。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
(zabbixのDBPassword入力を求められるので入力)
Zabbixの設定ファイル /etc/zabbix/zabbix_server.conf
を更新します。
DBPassword={zabbixのDBPasswordを入力}
Zabbixのタイムゾーン設定(Zabbix本社のあるラトビアのリガがデフォルトタイムゾーンになってるので東京に変えます)
/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
を編集します。
php_value[date.timezone] = Asia/Tokyo
すべての設定後、サービス再起動。
# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm mariadb
自動起動も設定。
# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm mariadb
WebアクセスしてWeb UI上での設定に進みます。
http://{IPアドレス}/zabbix/
設定した内容の確認をしていきつつ基本は[Next step]を押していきます。
1箇所、Configure DB connection画面で先程設定した zabbixのDBPassword をPassword欄に入力します。
設定完了後、 Zabbix管理画面に Admin / zabbix でログインします。
(ちゃんと運用する際にはAdminのパスワードも変更しましょう)
左メニューの「User settings」からLanguageを「Japanese(ja_JP)」にすることで日本語表示されます。
監視される側のサーバの設定
ここからはZabbixに監視されるサーバ側の設定になります。
Zabbixエージェントインストール
Zabbixのyumリポジトリの登録(導入するバージョンはサーバに応じて調整)
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.9-1.el7.x86_64.rpm
インストール、起動、自動起動設定
# yum install -y zabbix-agent
# systemctl start zabbix-agent
# systemctl enable zabbix-agent
監視されるサーバの /etc/zabbix/zabbix_agentd.conf
を修正します。
Server={ZabbixサーバのIP}
ServerActive={ZabbixサーバのIP}
Hostname={監視されるサーバのホスト名称(Zabbixサーバの管理画面上でも使われる)を記載}
エージェントを再起動します。
# systemctl restart zabbix-agent
Zabbixサーバの管理画面でホストを登録する
Zabbix管理画面で設定 > ホストから、監視される側のサーバをホスト登録します。
おまけ
とりあえずZabbixサーバからメール通知をさせておきたい時に、Postfixを利用してGmailにリレーする手順を載せておきます。
※GmailにリレーするためにはGoogleアカウントの セキュリティ設定 にて、「安全性の低いアプリのアクセス」を「有効」にしておく必要があるので、本格的に運用する際のやり方としてはおすすめしません。
postfixの設定
postfix、amazon linux2だとインストールされていると思いますが入っていない場合はyumで入れます。
# yum install -y postfix
SMTP認証用に以下も導入します。
# yum install -y cyrus-sasl-plain cyrus-sasl-md5
postfixの起動と自動起動
# systemctl start postfix
# systemctl enable postfix
/etc/postfix/main.cf
を編集。以下のように設定。
myhostname = localhost
mydomain = localhost
また、Gmail用の設定を末尾に追記します。
# gmail
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
SMTP認証の設定 /etc/postfix/sasl_password
に以下を記載します。(リレーに使うアカウントを設定)
[smtp.gmail.com]:587 {accoount@gmail.com:password}
パーミッション調整。
# chmod 600 /etc/postfix/sasl_password
dbファイルの生成。
# postmap hash:/etc/postfix/sasl_password
設定を反映します。
# systemctl restart postfix
テストメールをサーバから送信してみます。
# yum install -y mailx
# echo "This is Test Mail." | mail -s "test mail from test server." {自分のメールアドレス}
Zabbix管理画面側の設定
管理 > メディアタイプ > メディアタイプの作成 から、設定したメール送信設定を利用したメディアタイプを追加します。
タイプ:メール
SMTPサーバー:localhost
SMTPサーバーポート番号:25
SMTP helo:localhost
送信元メールアドレス:{任意のアドレス}
接続セキュリティ:なし
認証:なし
メッセージフォーマット:プレーンテキスト
管理 > メディアタイプの一覧から追加したメディアタイプの行の右側「テスト」を押してテスト送信が可能です。