ネットワーク活用技術:ZABBIXサーバをAWSに構築する
ZABBIXについて
工場などの製造現場では、機器稼働状態や環境(温湿度など)についてモニタリングを行うことは生産管理において重要なものとされています。このようなモニタリングは、これらの状態を監視する測定機器を導入及びネットワークシステムを構築することで、遠方から必要な情報を取得できるようになります。今回はZABBIXというオープンソース総合監視ソフトウェアを使用したネットワークモニタリングシステムの構築方法について、手軽な手法を例に紹介します。ZABBIXを導入することで、ネットワークに接続した測定機器などの情報を一括でモニタリング(グラフによる数値変動確認やSNSを活用した状態通知など)できるようになります。
システム概要
ZABBIXによるモニタリングシステムを構築するには、まず必要な情報を一括で収集・管理・表示させるサーバ:ZABBIXサーバを設置し、それを起点に各測定機器を同ネットワークに接続することで、必要な情報をZABBIXサーバに集約させることが必要になります。
ZABBIXサーバとなるデバイスは、Linux OSのサーバを使用することが一般的です。オープンソースのLinux系OSであれば、例えば使用していないパソコンにインストールしたり、ラスベリーパイといったシングルボードコンピュータに実装させることが可能です。ZABBIXサーバの構築手順は、このようなZennやQiitaなどの技術情報まとめサイトに既にいくつか掲載されていますが、今回はクラウドサービス:AWS(Amazon Web Service)が使えるEduCloudから構築していきます。
EduCloud(AWS)について
AWSはクラウドサービス界の代表的存在で様々な活用事例がありますが、基本的に従量課金で設定がやや煩雑であったりと、初心者だと戸惑うことが多かったりします。EduCloudとは、プリペイドバウチャーとなったAWSライセンスを購入するだけで、その購入分のAWS特定サービス(EC2/RDS)を、そのあたりの煩わしさがなく使うことができます。
EducloudはAWS公式パートナーであるMegazone株式会社が提供しており、Amazonから5,000円分(税込5,500円)〜で購入できます。
今回はAWSのEC2(基本コンピューティングサービス)を使用し、クラウドにZABBIXサーバを構築する方法を紹介します。
サーバの初期設定
AWS EC2によるインスタンス(サーバスペック)は以下のとおりとします。
なお、本例はあくまで実験であり、ZABBIXは後述するZABBIXダウンロードサイトに掲載されるOSであればインストール可能なため、予算があれば特に本構成にこだわる必要はありません。
- マシンタイプ:t3.small
※メモリ(RAM)についてはZABBIXサーバは単独起動でも常時1Gb程度を使用するため、2Gb以上のスペックを推奨します。 - OS:Amazon Linux 2
サーバ名とパスワードは任意に入力し、サーバを作ります。
サーバ起動後、当サーバ詳細設定について、セキュリティ項目を以下のとおり追加します。
- Allow Traffic - Specific port : 22
SSH(リモートから本サーバにログイン)を許可 - Allow Traffic - Specific port : 80
HTTP(Webブラウザからアクセス)を許可 - Allow Traffic - Specific port : 10051
ZABBIXサーバとのデータ送受信を許可
※IPについては制限なし(from Anywhere)としても構成可能ですが、特定のグローバルIPからアクセスするのであればIP指定(from Specific IP)を設定することを推奨します。
SSH(リモート接続)でログイン
お使いのパソコンがWindowsであればTeratermなどの、Macであれば標準のターミナルアプリを使い、リモート接続で当サーバにログインします。
ログイン情報は、サーバ初期設定で作成したサーバの詳細にあるグローバルIPアドレス、及び設定したパスワード(IDはデフォルトで"cloud-user")を使用します。
ログインできましたら、初めにOSの設定(日本時間/日本語)を行います。
EC2で立ち上げたサーバの初期状態は時刻がUTC(協定世界時)、言語は英語となっているため、日本仕様に変更します。
※EduCloudではrootユーザのパスワードが非公開のため、下記のとおりroot権限が必要な各コマンドは”sudo”を付けて実行するものとします。
- はじめにOSを最新バージョンに更新 ※先ほど設定したパスワードが求められるので入力
$ sudo yum -y update
- タイムゾーンを日本時間(UTC+9:00)に変更
$ sudo timedatectl set-timezone Asia/Tokyo
- 日時がJST(日本標準時)になっているか確認
$ date
- 言語を日本語に変更
$ sudo localectl set-locale LANG=ja_JP.UTF-8
- 変更した設定を有効にするためサーバを再起動
$ sudo reboot
データベース(DB)インストール
ZABBIXに格納する情報はデータベース(以下DB)により管理します。ZABBIXで使用できるDBはMySQLかPostgreSQLとなります。今回は実験的なクラウド環境のため、なるべくメモリ使用量を抑えたいという事情から、サイズが小さく軽量であるMariaDB(MySQLの派生版)をインストールします。
- MariaDBのインストール
$ sudo yum -y install mariadb-server
- MariaDBを起動及びサーバ起動時の自動起動設定
$ sudo systemctl start mariadb && sudo systemctl enable mariadb
- MariaDBのステータス確認
$ sudo systemctl status mariadb
“Active: active (running) 〜”のメッセージが表示されればOKです。
- DBへのログインパスワードの初期設定(対話形式)
$ sudo mysql_secure_installation
初めにrootパスワードの入力を聞かれるが、未設定なのでそのままエンター押下します。
次にrootパスワードの設定を聞かれるので、「Y」を入力し、任意のパスワードを入力。
以降の質問は、全て「Y」を入力してOKです。
“Thanks for using MariaDB!”のメッセージが表示されればDB初期設定完了です。
ZABBIXインストール
ZABBIX公式サイトのダウンロードページを開きます。
「1 Zabiixサーバのプラットフォームを選択」から、導入するZABBIXバージョンとOS、コンポーネント及びデータベース、Webサーバの種類を選択します。
サーバ初期設定で選択した”Amazon Linux 2”はCentOS/Red Hat Enterprise Linuxのバージョン7をベースにしていると言われているため、このいずれかを選択します。
なお、今回構成するZABBIXコンポーネント:ServerについてはZABBIXバージョン6.0以上は非対応のため(2024年3月現在)、当バージョンは5.0LTSとします。
データベースは、先述のとおりMariaDBをインストールしているため、MySQLを選択します。
Webサーバは、ApacheとNginXのどちらかを選択できます。今回は、設定が手軽でZABBIXのような動的サイトに強いとされるApacheを採用します。
すると、「2 Install and configure Zabbix for your platform」に必要なコマンド手順が表示されるので、基本的にこれに従って入力していきます。
- ZABBIXレポジトリを追加
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
- キャッシュの削除
$ sudo yum clean all
- ZABBIXのパッケージ(サーバとエージェント)をインストール
$ sudo yum -y install zabbix-server-mysql zabbix-agent
- CentOSのSoftware Collections (SCL)をインストール
$ sudo yum install centos-release-scl
ここで、公式手順で追加できない場合、centOSのミラーサイトからインストールします。
$ sudo yum -y install http://mirror.centos.org/altarch/7/extras/aarch64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
- ZABBIXのリポジトリ設定ファイルを修正
$ sudo nano /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...
- ZABBIXのフロントエンド(Webサイト機能)のインストール
公式手順に追加で日本語パッケージもインストールします。
$ sudo yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl zabbix-web-japanese
次にZABBIX DB作成のため、インストールしたDBに必要な設定をします。
- DBへログイン
$ sudo mysql -u root -p
DBインストールで作成したrootのパスワードを入力します。
- "zabbix"というDBを作成
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
- DBアクセス用のユーザ及びパスワードを作成
MariaDB [(none)]> create user zabbix@localhost identified by 'password';
- 作成したユーザにDBアクセス権を付与
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
- DBから抜ける
MariaDB [(none)]> quit
そして、ZABBIXの初期データをインストールします。
$ sudo zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
パスワードが聞かれるので、先程指定したDBアクセス用ユーザのパスワードを入力します。
- ZABBIXサーバの設定ファイルを開き、DBアクセス用ユーザ=zabbixユーザのパスワードを書き込む
$ sudo nano /etc/zabbix/zabbix_server.conf
DBPassword=password
- Web言語(PHP)設定ファイルを開き、タイムゾーンを変更
$ sudo nano /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
; php_value[date.timezone] = Europe/Riga
↓
php_value[date.timezone] = Asia/Tokyo に変更
- ZABBIXの起動
$ sudo systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
- 再起動時にZABBIXの自動起動を有効化
$ sudo systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
ZABBIXを使ってみる
パソコンのブラウザを開き、"http://xxx.xxx.xxx.xxx/zabbix”(xxx.xxx.xxx.xxxはEC2サーバのグローバルIPアドレス)にアクセスします。
ZABBIX初期設定画面が表示されたら、右下の「Next step」をクリックし、各ページへ進みます。
- Check of pre-requisites:状態が全てOKであることを確認
- Configure DB connection:設定したDBのパスワードを入力
- Zabbix server details:Nameは好きな名前でOK
- Pre-installation summary:入力誤りがないか確認
- 問題なければ「Finish」をクリック
ログイン画面が表示されたら、以下の情報(初期設定)でログインします。
Username:Admin
Password:zabbix
ZABBIXトップページ(ダッシュボード)が表示されれば、構築完了です。
左メニューのUser settingsより、言語を日本語に変更することができます。
まとめ
ZABBIXはオープンソースであるため、Linux環境があればこのように誰でも構築することができ、一度構築してしまえば、すぐに様々な機能が使えるようになります。次回以降、ZABBIX収集データの表示方法やAPI(別のシステムからZABBIXの情報を取得する手段)の機能、またZABBIXにデータを送受信する方法や、またその異常値などの状態変化を通知するシステム構築手法などについて掲載していきます。
Discussion