中山テック 代表の中山です。
さて、今回はzabbixネタということで構築しておりますが、まぁ難しい難しい。
VMWareをBROADCOMから入れ直し(詳しくはこちらのページで)したので構築方法をメモしていきます。
※同ネットワーク内を例に取ってます
目次
サーバ構成
ミドルウェア | 役割 |
Nginx | 管理画面の入り口 今回は11451ポート経由で アクセスさせます |
PostgreSQL | 監視データ保持 Ver15を使用 |
php | 管理画面はPHPで 作成&動作してます |
zabbix | ◆agent データ集&サーバへ報告 ◆server 障害報告 ※proxyは使いません 5.0-1.el8を使用 |
OS | CentOS7 (VMWareゲスト) |
ホストOS(クライアント)は192.168.230.1
ゲストOS(サーバ)は192.168.230.130とします。
インストール
SELinuxストップ
ミドルが動かなかったり色々面倒毎が多いので無効にします。
# vi /etc/selinux/config
SELINUX=disabled
◆更新後再起動
reboot
IP転送の許可も出来るようにしましょう
# vi /etc/sysctl.conf
net.ipv4.ip_forward=1
⇒追加後
sysctl -p
過去ブログ参照ミドル
Nginx(yum)
リポジトリにNginxがない場合は追加します。
# vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
保存したらインストール開始!
# yum -y install nginx
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
nginx | 2.9 kB 00:00:00
nginx/x86_64/primary_db | 282 kB 00:00:01
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ nginx.x86_64 1:1.27.0-2.el7.ngx を インストール
--> 依存性解決を終了しました。
依存性を解決しました
=============================================================================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
=============================================================================================================================================================================================
インストール中:
nginx x86_64 1:1.27.0-2.el7.ngx nginx 807 k
[中略]
----------------------------------------------------------------------
検証中 : 1:nginx-1.27.0-2.el7.ngx.x86_64 1/1
インストール:
nginx.x86_64 1:1.27.0-2.el7.ngx
完了しました!
PHP
リポジトリインストール
zabbixのインストールに必須なのでインストールします。
※既に入っている場合は不要。私の方では入ってませんでした
まずはリポジトリから
# yum install epel-release
終わったら
# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
epel-releaseは標準で入ってない、もしくは古い場合が多いのでこれを入れると様々なディストリービューション情報がゲットできます。
fedoraプロジェクトの有志が作成してくださったそうで非常に助かりますね!
httpd(apache)インストール
PHPインストール時に、httpdに依存しているパッケージがあるのでインストールします。
※既に入れてる場合は不要
# yum install httpd
PHPインストール
続いてはPHPインストール。
# yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php72 php
=============================================================================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
=============================================================================================================================================================================================
インストール中:
php x86_64 7.2.34-22.el7.remi remi-php72 3.2 M
依存性関連でのインストールをします:
libargon2 x86_64 20161029-3.el7 epel 23 k
php-cli x86_64 7.2.34-22.el7.remi remi-php72 4.8 M
php-common x86_64 7.2.34-22.el7.remi remi-php72 1.1 M
php-json x86_64 7.2.34-22.el7.remi remi-php72 71 k
~~~~~~~~ 中略 ~~~~~~~~
インストール:
php.x86_64 0:7.2.34-22.el7.remi
依存性関連をインストールしました:
libargon2.x86_64 0:20161029-3.el7 php-cli.x86_64 0:7.2.34-22.el7.remi php-common.x86_64 0:7.2.34-22.el7.remi php-json.x86_64 0:7.2.34-22.el7.remi
完了しました!
OK!問題ありません!
zabbix(リポジトリ)
リポジトリをインストールし、本体をインストールできる状態にします。
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
zabbix(server、agent)
続いては本体ですが、PostgreSQLで実装するので
・zabbix-server-pgsql
・zabbix-agent
の2つをまずはインストールします。今回はProxyは使用しない方向です。
一旦yumのキャッシュをクリアしてインストールを行います。
# yum clean all
# yum install zabbix-agent
インストール:
zabbix-agent.x86_64 0:5.0.42-1.el8
依存性関連をインストールしました:
openssl11-libs.x86_64 1:1.1.1k-7.el7
完了しました!
# yum install zabbix-server-pgsql
読み込んだプラグイン:fastestmirror, langpacks
Determining fastest mirrors
epel/x86_64/metalink | 16 kB 00:00:00
* epel: ftp.riken.jp
* remi-safe: ftp.riken.jp
~~~~~~~~ 中略 ~~~~~~~~~
インストール:
zabbix-server-pgsql.x86_64 0:5.0.42-1.el7
依存性関連をインストールしました:
OpenIPMI.x86_64 0:2.0.27-1.el7 OpenIPMI-libs.x86_64 0:2.0.27-1.el7 OpenIPMI-modalias.x86_64 0:2.0.27-1.el7 fping.x86_64 0:5.1-1.el7 unixODBC.x86_64 0:2.3.1-14.el7
完了しました!
ここに行きつくまでに何度かエラーが出ましたが、パッケージ名末尾「5.0-1.el7」ではなく「5.0-1.el8」を指定しており、名前が誤ってました。
zabbix(フロント)
管理画面を表示させるためのフロントエンドをインストールします。
まずはCentOSのソフトウェアコレクションリポジトリをインストール。
※私のはインストール済みでした。不要であればスキップ
# yum install centos-release-scl
フロントエンドのリポジトリがDL許可されていないので修正します。
vi /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0 # ここを1に修正
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
続いてはWEBとNginxのconfファイルをダウンロードします。
# yum install zabbix-web-pgsql-scl zabbix-nginx-conf-scl
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: ftp.riken.jp
* remi-safe: ftp.riken.jp
zabbix | 2.9 kB 00:00:00
zabbix-frontend | 2.9 kB 00:00:00
zabbix-non-supported | 2.9 kB 00:00:00
zabbix-frontend/x86_64/primary_db | 85 kB 00:00:00
依存性の解決をしています
~~~~~~~~~ 中略 ~~~~~~~~~~
インストール:
zabbix-nginx-conf-scl.noarch 0:5.0.42-1.el7 zabbix-web-pgsql-scl.noarch 0:5.0.42-1.el7
依存性関連をインストールしました:
rh-nginx116-nginx.x86_64 1:1.16.1-6.el7 rh-nginx116-runtime.x86_64 0:1.16-1.el7 rh-php72.x86_64 0:1-2.el7 rh-php72-php-bcmath.x86_64 0:7.2.24-1.el7
rh-php72-php-cli.x86_64 0:7.2.24-1.el7 rh-php72-php-common.x86_64 0:7.2.24-1.el7 rh-php72-php-fpm.x86_64 0:7.2.24-1.el7 rh-php72-php-gd.x86_64 0:7.2.24-1.el7
rh-php72-php-json.x86_64 0:7.2.24-1.el7 rh-php72-php-ldap.x86_64 0:7.2.24-1.el7 rh-php72-php-mbstring.x86_64 0:7.2.24-1.el7 rh-php72-php-pdo.x86_64 0:7.2.24-1.el7
rh-php72-php-pear.noarch 1:1.10.5-1.el7 rh-php72-php-pgsql.x86_64 0:7.2.24-1.el7 rh-php72-php-process.x86_64 0:7.2.24-1.el7 rh-php72-php-xml.x86_64 0:7.2.24-1.el7
rh-php72-php-zip.x86_64 0:7.2.24-1.el7 rh-php72-runtime.x86_64 0:1-2.el7 zabbix-web.noarch 0:5.0.42-1.el7 zabbix-web-deps-scl.noarch 0:5.0.42-1.el7
完了しました!
Nginxのconfファイルはどこに入っているのでしょうか。
# find / -name "*zabbix*conf"
/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
/etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_server.conf
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/lib/tmpfiles.d/zabbix-server.conf
と、独自のNginxがインストールされております。
こっちでも動くのですが、今回は独自にNginxをインストールしてるので使用しません。confファイルは移動させます
※こっちでいいよ!という方は「systemctl start rh-nginx116」で起動して使ってみてください
◆独自のNginxのconf.d配下にコピーする
cp /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf /etc/nginx/conf.d/
zabbix用Nginxのconf設定
前項で独自Nginxをインストールし、コピーした方向けの手順です。
初めの項で、サーバ要件は「11451」ポート経由でアクセスするとお話しました。
# vi /etc/nginx/conf.d/zabbix.conf
# listen 80;
# server_name example.com;
↓
listen 11451;
server_name 192.168.230.130;
11451ポートで通信できるようにポート開放。Nginxを起動しましょう。
firewall-cmd --permanent --zone=public --add-port=11451/tcp
終わったら
firewall-cmd --reload
systemctl enable nginx
systemctl start nginx
【余談】
はじめ10080ポートにしていたのですが、ブラウザが意図的にアクセスできないようにしているようです。
という訳で独自ポート「11451」に設定しました。
PostgreSQL設定
ユーザ・DB作成、データ投入
やることは
・zabbixユーザ作成
・zabbixDB作成
・各種テーブルにデータ投入
となります。
# sudo -u postgres createuser --pwprompt zabbix
⇒パスワード求められるので適当に入れる(今回はzabbix)
# sudo -u postgres createdb -O zabbix zabbix
# zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
pg_hba.conf
同じサーバ内ではありますが、192.168.230.130からのアクセスを許可します。
# vi /var/lib/pgsql/15/data/pg_hba.conf
host zabbix zabbix 192.168.230.0/24 scram-sha-256
postgresql.conf
Listenがデフォルトでlocalhostとなっているため修正
# view /var/lib/pgsql/15/data/postgresql.conf
listen_addresses = '*'
- データベースを学ばないと後悔する理由4選
- CRUD図の作り方と必要性について
- JBoss管理クライアントの使い方
- CentOSでインストール不可?mirrorlist.centos.orgがアクセスできない件
- OracleのDataPumpの使い方(応用編)~テーブル単位や容量見積だけといったオプションをご紹介~
zabbix-server.conf
DBやListenポートの設定します。
内容は多くないのでサクッとやっちゃいましょう。
コメントアウトされている項目ですが、下記の箇所は外しましょう。
※DB名やユーザ、パスワードは己が決めた設定値を入力
# vi /etc/zabbix/zabbix_server.conf
ListenPort=10051
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
StatsAllowedIP=192.168.230.130
ListenIP=192.168.230.130
DBHost=192.168.230.130
zabbix-agentd.conf
こちらは設定値は多めです。
こちらもサクッとやっちゃいましょう。
# vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.230.130
ListenPort=10050
ListenIP=192.168.230.130
ServerActive=192.168.230.130
Hostname=zabbix-server # 管理画面での設定も必要です!後述
それぞれのポートを解放しておきましょう。
firewall-cmd --permanent --zone=public --add-port=10050/tcp --add-port=10051/tcp
終わったら
firewall-cmd --reload
webの権限が「apache:apache」になっているのでnginxに変更。
※apache使用している方は修正不要
chown -R nginx:nginx /etc/zabbix/web
PHP側の設定
pidファイルやapacheに向いてる箇所があるので修正します。
zabbix.conf
# vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
user = apache # nginxに変更
group = apache # nginxに変更
listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock # /run/php-fpm/zabbix.sockに変更
listen.acl_users = apache # nginx,apacheに変更
listen.allowed_clients = 127.0.0.1 # 192.168.230.130に変更
[中略]
/var/opt/rh/rh-php72/lib/php/session/ # sessionディレクトリの権限を「nginx:nginx」に変更
↓
user = nginx
group = nginx
listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 192.168.230.130
www.conf
# vi /etc/opt/rh/rh-php72/php-fpm.d/www.conf
user = apache # nginxに変更
group = apache # nginxに変更
listen = 127.0.0.0:9000 # /run/php-fpm/www.sockに変更
# mkdir -p /run/php-fpm
php-fpm.conf
# vi /etc/opt/rh/rh-php72/php-fpm.conf
pid = /var/opt/rh/rh-php72/run/php-fpm/php-fpm.pid
↓
pid = /run/php-fpm/php-fpm.pid
Nginxのconf.dにphp-fpm.confを作成
# vi /etc/nginx/conf.d/
upstream php-fpm {
server unix:/run/php-fpm/www.sock;
}
/etc/php.ini
# vi /etc/opt/rh/rh-php72/php.ini
date.timezone = Asia/Tokyo
各種ミドル起動
systemctl enable rh-php72-php-fpm
systemctl start rh-php72-php-fpm
systemctl enable zabbix-agent
systemctl start zabbix-agent
systemctl restart nginx
systemctl enable zabbix-server
systemctl start zabbix-server
管理画面
OK!来ました!
初期ログイン値ですが
Username:Admin
Password:zabbix となっています。
セットアップ
http://<サーバIP>:<ポート>/setup.php
で色々セットしましょう。
※zabbix-server.confで色々設定してるのでここ頑張らなくて良い気も?
zabbixのconfファイル置いてる箇所に「web」があったと思いますが、配下にphpファイルが作成されました!
ホスト修正
監視しているZabbix用サーバがローカルホストになっているのでエラーです。
192.168.230.130として監視したいので直します。
名前を左クリックするとメニューが出、「設定」をクリックします。
修正内容は下記の通り。
・ホスト名:zabbix-server
・エージェント:192.168.230.130
無事有効になりました!
ここから先はカスタマイズしながらガンガン監視しちゃいましょう!
謎のmaintenance.inc.php
/etc/zabbix/web/maintenance.inc.php
なるファイルがありますが、これは管理画面を強制的にメンテナンスに行かせるものです。
※これをキッチリ設定したため、長らくドツボにハマってしまいました・・・
ただしローカルから管理画面へアクセスはできたのでリモート用にプログラムしている可能性はあります。
ZABBIXそのものに障害が発生した場合に設定して外部からのアクセスを遮断するのに使えそう。
まとめ
pgpoolレベルでクセの強いZABBIX。
苦戦しましたが、何とか設定することが出来ました。てか修正箇所多すぎる・・・
なおlocalhostだけで完結する場合はここまで直す必要はないので非常に簡単です。
是非皆様も導入してCPUやメモリの使用率の推移を確認しちゃってください!
最後までご覧いただき、ありがとうございました。
※参考サイト