thumb
お墓のこと全般、お任せください!

中山テック 代表の中山です。

さて、今回はzabbixネタということで構築しておりますが、まぁ難しい難しい。

VMWareをBROADCOMから入れ直し(詳しくはこちらのページで)したので構築方法をメモしていきます。

※同ネットワーク内を例に取ってます



  • VMware × CentOS関連索引





ミドルウェア役割
Nginx管理画面の入り口
今回は11451ポート経由で
アクセスさせます
PostgreSQL監視データ保持
Ver15を使用
php管理画面はPHPで
作成&動作してます
zabbix◆agent
データ集&サーバへ報告
◆server
障害報告
※proxyは使いません
5.0-1.el8を使用
OSCentOS7
(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 = '*'
  • ミドルウェア関連記事

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で色々設定してるのでここ頑張らなくて良い気も?

OKが出ないと先に進めない
設定値はこんな感じ

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やメモリの使用率の推移を確認しちゃってください!

最後までご覧いただき、ありがとうございました。

※参考サイト

Zabbix公式の設定ガイド

鯨井貴博さんのブログ



  • VMware × CentOS関連索引

おすすめの記事