Zabbix4.0を構築する機会がありましたので手順を残します。
4.0がリリースされてから結構時間が経ってしまいました。Zabbixは日常的に触るのですが、バージョンはいまだ2系や3系で4系はまだ触れていなかったのでよかったです。
Zabbix3.0では対応していなかったPHPのバージョン7系もZabbix4.0では対応しているようですね、現在最新のPHP7.3を使ってみることにしました。DBはPostgreSQLを採用します。Zabbixを構築するときはいつもMySQLを使っている気がするので今回はPostgreにしました。WEBはあいかわらずApacheで。次は Nginx + PHP-FPM でやってみよう。。。
ということで、OS・ミドルウェアは以下の通りです。
環境
- CentOS7
- Apache 2.4.6
- PostgreSQL 11
- PHP 7.3
- Zabbix 4.0
Zabbix4.0をCentOS7+PostgreSQL11+PHP7.3で構築する手順
まずはDBからセットアップしていきます。
PostgreSQL11のセットアップ
リポジトリをインストールしたら、yum でインストールできます。
1 2 3 4 5 6 7 |
# yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7.5-x86_64/pgdg-centos11-11-2.noarch.rpm # yum install postgresql11-server # rpm -qa | grep postgres postgresql11-libs-11.1-1PGDG.rhel7.x86_64 postgresql11-server-11.1-1PGDG.rhel7.x86_64 postgresql11-11.1-1PGDG.rhel7.x86_64 |
続いて、データベースクラスタを作成します。
まず、postgres ユーザにスイッチします。
1 |
# su - postgres |
initdb コマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
-bash-4.2$ /usr/pgsql-11/bin/initdb --no-locale --encoding=UTF8 データベースシステム内のファイルの所有者は"postgres"となります。 このユーザがサーバプロセスも所有する必要があります。 データベースクラスタはロケール"C"で初期化されます。 デフォルトのテキスト検索設定はenglishに設定されました。 データベージのチェックサムは無効です。 既存のディレクトリ/var/lib/pgsql/11/dataの権限を修正します ... 完了 サブディレクトリを作成します ... 完了 max_connectionsのデフォルト値を選択します ... 100 shared_buffersのデフォルト値を選択します ... 128MB 動的共有メモリの実装を選択します ... posix 設定ファイルを作成します ... 完了 ブートストラップスクリプトを実行します ... 完了 ブートストラップ後の初期化を行っています ... 完了 データをディスクに同期します...完了 警告: ローカル接続で"trust"認証を有効にします。 この設定はpg_hba.confを編集するか、次回のinitdbの実行の際であれば-Aオプ ション、または、--auth-localおよび--auth-hostを使用することで変更するこ とができます。 成功しました。以下のようにしてデータベースサーバを起動できます。 /usr/pgsql-11/bin/pg_ctl -D /var/lib/pgsql/11/data -l <ログファイル> start |
PostgreSQLを起動して自動起動を有効化します。
1 2 |
# systemctl start postgresql-11 # systemctl enable postgresql-11 |
ユーザ Postgre のパスワードを設定します。
1 2 3 |
# su - postgres $ psql -c "alter user postgres with password 'POSTGREPASSWORD'" ALTER ROLE |
Zabbix用のユーザとデータベースを作成します。
1 2 3 4 5 6 |
## ユーザ作成 $ createuser zabbix -P パスワードを入力:ZABBIXPASSWORD ## データベース作成 $ createdb -O zabbix -E UTF8 zabbix |
createdb コマンドのオプション
-O owner(--owner=owner)
-E encoding(--encoding=encoding)
続いて認証設定ファイルを編集します。WEB/DB1台のオールインワン構成なので、ローカルからの接続を認証無しで許可します。DATABASE と USER は作成した内容に書き換えましたが ローカルからなので all でも構いません。
1 2 3 4 5 |
# TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host zabbix zabbix 127.0.0.1/32 trust # IPv6 local connections: host zabbix zabbix ::1/128 trust |
メモ
- ipv6を有効にしている場合は、ipv6のアドレスも記述しておかないと接続ができませんでした。
- ↑からは削除していますが、デフォルトの設定ファイルに記述されている TYPE が local の内容はUnixドメインソケットを使用して接続する場合の設定なので削除して構いません。
DBのセットアップは以上です。
PHP7.3のインストール
CentOS7.5の標準リポジトリからインストールしようとすると バージョンが5.4 になってしまうので、Remi リポジトリを利用します。
Remi を利用するためには epel も必要 なので、epel → remi の順番でリポジトリを追加します。
1 2 |
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |
PHPのバージョンは7.3を指定して、yumでインストールします。
1 |
# yum install --enablerepo=remi --enablerepo=remi-php73 php php-pdo php-xml php-pgsql php-bcmath php-mbstring php-gd php-common php-ldap |
PHPの設定をします。変更が必要なパラメータを以下のコマンドで置換できます。
1 2 3 4 5 |
# sed -i 's/max_execution_time = 30/max_execution_time = 600/' /etc/php.ini # sed -i 's/max_input_time = 60/max_input_time = 600/' /etc/php.ini # sed -i 's/post_max_size = 8M/post_max_size = 32M/' /etc/php.ini # sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 16M/' /etc/php.ini # sed -i 's|;date.timezone =|date.timezone = Asia/Tokyo|' /etc/php.ini |
以下がビフォーアフター。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
### デフォルト max_execution_time = 30 max_input_time = 60 post_max_size = 8M upload_max_filesize = 2M ;date.timezone = ### 変更後 max_execution_time = 600 max_input_time = 600 post_max_size = 32M upload_max_filesize = 16M date.timezone = Asia/Tokyo |
搭載(割り当て)メモリ量に余裕があればメモリ上限も変更しておいてもよいかもです。
1 2 3 |
php_value memory_limit 128M ↓ php_value memory_limit 256M(または512M) |
PHPのセットアップは以上です。
Zabbix-Server のインストール
リポジトリを追加してからyumでインストールします。PostgreSQL用のパッケージです。
1 2 |
# yum install http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm # yum install zabbix-agent zabbix-server-pgsql zabbix-web-pgsql zabbix-web-japanese |
タイムゾーンの設定を変更します。以下のコマンドで置換できます。
1 |
# sed -i 's|# php_value date.timezone Europe/Riga|php_value date.timezone Asia/Tokyo|' /etc/httpd/conf.d/zabbix.conf |
以下がビフォーアフター。
1 2 3 4 5 |
### デフォルト # php_value date.timezone Europe/Riga ### 変更後 php_value date.timezone Asia/Tokyo |
続いて、Zabbix用の初期テーブルを作成します。移動先ディレクトリの*はPostgreSQLのバージョンによって変わります(そのまま実行可能)
1 2 3 4 5 6 7 8 |
# cd /usr/share/doc/zabbix-server-pgsql-* # zcat create.sql.gz | psql -U zabbix zabbix CREATE TABLE CREATE INDEX : INSERT 0 1 INSERT 0 1 COMMIT |
続いて、Zabbix-Server の設定ファイルのDB接続情報を修正します。
1 2 3 4 5 |
# grep ^DB /etc/zabbix/zabbix_server.conf DBName=zabbix # 作成したDBユーザ名 DBUser=zabbix # 作成したDB名 DBPassword=zabbixpass # 作成したDBユーザに設定したパスワード DBPort=5432 # 接続ポート(5432はPostgreSQLのデフォルト) |
Zabbix-ServerとApacheの起動と自動起動を有効化します。
1 2 3 4 |
# systemctl enable httpd # systemctl enable zabbix-server # systemctl start httpd # systemctl start zabbix-server |
その他
必要に応じてfirewalldの設定をしましょう。
1 2 3 4 5 6 7 8 9 |
# firewall-cmd --add-service=http --zone=public --permanent # firewall-cmd --add-service=zabbix-server --zone=public --permanent success # firewall-cmd --reload success # firewall-cmd --list-all | grep services services: ssh http zabbix-server |
Webからのセットアップ
Webブラウザで http://hostname(ServerIP) に接続してDB接続情報などを入力していきます。
まとめ
Zabbixもついに4.0です。PHP7系にも対応しており速度のアップもみられるでしょうか。Zabbixはオープンソースで無償で利用できる監視サーバとして非常に高機能なので、皆さんもzabbixで快適な監視ライフを!
おまけ
構築したときにグラフ表示で文字化けしてしまう場合は以下を確認してみるとよいかもです。
-
【Zabbix】グラフ表示したときに文字化けするときの対処法!
Zabbix の構築が終わっていざ監視設定を行いちゃんと値がとれているかなぁ~と思ってグラフを見てみたところ日本語の表示が文字化けを起こしていました。。。 ぴぐろぐで遭遇した文字化けは豆腐とかって呼ば ...
以上です。
↓↓↓ 持っていると便利な一冊 ↓↓↓