#author("2022-05-20T18:34:43+00:00","default:sysosa","sysosa")
#author("2022-05-30T16:58:57+00:00","default:sysosa","sysosa")
本家様 [[https://www.zabbix.com/jp/features>+https://www.zabbix.com/jp/features]]
最新リリース版は Zabbix 6.0 (2022.05時点)
RHEL8系はサーバになれる. RHEL7系はエージェントにはなれる. &size(10){RHEL7系でもソースからコンパイルすればサーバになれそうだけど、面倒かな};
[[https://www.zabbix.com/download>+https://www.zabbix.com/download]]

ここでは &color(lightseagreen){''RockyLinux8''}; に Zabbix 6.0 を導入してみます. 下地のデータベースは PostgreSQL、webサーバは apache とします

&size(10){Zabbixのハード/ソフトウエア要件はこちらに記載されてます [[https://www.zabbix.com/documentation/6.0/en/manual/installation/requirements>+https://www.zabbix.com/documentation/6.0/en/manual/installation/requirements]]};


&size(10){job queuing systemと絡めて1core使用のジョブの待ち時間、gpu2枚使用の待ち時間とか統計を取ってみたい. ジョブ名がほぼ固定されているアプリ relion でジョブの投入数とか見れたらなと思っている. 各計算ノードの負荷はzabbixの既定で用意されているからいいとして、各queueでのslot消費量とかgpu消費量とか追えたらなと思う. gpuに関してはopenpbsのhookを有効にしないと難しいのだけど. 各ノードに入ってgpuデバイスの使用を確認するのもいいのかも};

&size(10){jobの完了の通知もzabbix経由でできそうだけど、、単に投入するjob scriptの末行に slack への通知, lineへの通知を行う行を追加すればいいような気がする};
&size(10){lineに関しては [[https://blog.apar.jp/zabbix/5892/>+https://blog.apar.jp/zabbix/5892/]]様 のコマンドを使えば行けそうな気がします};

&size(10){監視対象ホストの登録[[Zabbix/Host]]};
&size(10){さっそく異常を発生させてメールを飛ばしてみる[[Zabbix/sample1]]};
&size(10){さっそく異常を発生させて Slack に通知してもらう[[Zabbix/slack]]};
&size(10){ログインユーザの登録[[Zabbix/User]]};
&size(10){テンプレートの一例[[Zabbix/templates]]};
&size(10){openpbsの情報をモニター[[Zabbix/OpenPBS]]};   &size(10){QNAPをモニター[[Zabbix/QANP]]}; &size(10){MegaRAIDをモニター[[Zabbix/MegaRAID]]};

***リポジトリ登録 [#wfae0efe]
まずはZabbixのリポジトリを登録
#code(nonumber){{
[root@zabbix ~]# cat /etc/redhat-release
Rocky Linux release 8.5 (Green Obsidian)

[root@zabbix ~]# getenforce
Enforcing

[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
[root@zabbix ~]# dnf clean all
}}
[[Zabbix/repository]]


***Zabbixパッケージをインストール [#faf073b8]
っで本家に記載の通りに作業を進める
#code(nonumber){{
[root@zabbix ~]# dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
}}
&size(10){「httpd」「php」らも一緒にインストールされるが、データベース postgresql はインストールされない様子};
&size(10){ユーザ「zabbix]がsystemアカウントとして用意される(uidが1000以下)};

***PostgreSQLをインストール [#we650aea]
別にzabbixサーバとデータベースが共に存在する必要はなく、zabbixサーバ以外にデータベースサーバがあってもいい.
ここではzabbixサーバに同居するようにしてます. 必要な postgresql はzabbixのバージョンと合わせて下記に示します.

|BGCOLOR(yellow):Zabbix version|BGCOLOR(yellow):対応PostgreSQL|BGCOLOR(yellow):出典|
|5.0|9.2.24 or later|https://www.zabbix.com/documentation/5.0/manual/installation/requirements|
|5.2|9.2.24 or later|https://www.zabbix.com/documentation/5.2/manual/installation/requirements|
|5.4|10.9-13.X(推奨 12.X.X or newer)|https://www.zabbix.com/documentation/5.4/en/manual/installation/requirements|
|6.0|13.0 - 14.X|https://www.zabbix.com/documentation/6.0/en/manual/installation/requirements|

使用しているRockyLinux8では現在「dnf module」側で複数のパッケージを提供している. ここでは条件にあう「13」を導入する
#code(nonumber){{
[root@zabbix ~]# dnf module list postgresql
Last metadata expiration check: 0:20:47 ago on Wed 04 May 2022 05:13:37 PM JST.
Rocky Linux 8 - AppStream
Name                   Stream            Profiles                      Summary
postgresql             9.6               client, server [d]            PostgreSQL server and client module
postgresql             10 [d]            client, server [d]            PostgreSQL server and client module
postgresql             12                client, server [d]            PostgreSQL server and client module
postgresql             13                client, server [d]            PostgreSQL server and client module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@zabbix ~]#
[root@zabbix ~]# dnf module install postgresql:13/server
[root@zabbix ~]# dnf info postgresql-server
Last metadata expiration check: 0:23:37 ago on Wed 04 May 2022 05:13:37 PM JST.
Installed Packages
Name         : postgresql-server
Version      : 13.5
Release      : 1.module+el8.5.0+725+42e826de
Architecture : x86_64
Size         : 22 M
Source       : postgresql-13.5-1.module+el8.5.0+725+42e826de.src.rpm
Repository   : @System
From repo    : appstream
Summary      : The programs needed to create and run a PostgreSQL server
URL          : http://www.postgresql.org/
License      : PostgreSQL
Description  : PostgreSQL is an advanced Object-Relational database management system (DBMS).
             : The postgresql-server package contains the programs needed to create
             : and run a PostgreSQL server, which will in turn allow you to create
             : and maintain PostgreSQL databases.

[root@zabbix ~]#
}}

データベースのlocaleを「ja_JP.UTF-8」にしたいが、RockyLinuxをほぼ既定でインストールしたら存在しないと言われた. なので下記のように追加操作を行って「ja_JP.UTF-8」を有効にした.
#code(nonumber){{
[root@zabbix ~]# locale -a | grep -i ja_JP.UTF8 | wc -l
0
[root@zabbix ~]# dnf install langpacks-ja.noarch
[root@zabbix ~]# locale -a | grep -i ja_JP.UTF8
ja_JP.utf8
[root@zabbix ~]#
}}

データベースの初期設定を行います.
#code(nonumber){{
[root@zabbix ~]# PGSETUP_INITDB_OPTIONS="--encoding=UTF-8 --no-locale" postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

[root@zabbix ~]# systemctl enable postgresql --now
}}

zabbix向けの &color(orangered){postgreSQL内部ユーザ};「zabbix」を作り、それがオーナーになるデータベースも作る
#code(nonumber){{
[root@zabbix ~]# sudo -u postgres createuser --pwprompt zabbix

Enter password for new role:      <--- postgreSQL内に用意される zabbix ユーザのパスワードを定義します
Enter it again:

[root@zabbix ~]# sudo -u postgres createdb -O zabbix --locale=ja_JP.UTF-8 zabbix --template=template0
[root@zabbix ~]# sudo -u postgres psql -l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | C           | C           |
 template0 | postgres | UTF8     | C           | C           | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | C           | C           | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 zabbix    | zabbix   | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
(4 rows)

[root@zabbix ~]#
}}
postgreSQL内に用意した「zabbix」ユーザはOSのアカウント(/etc/passwd)でもある.
同一マシンのUNIX domain socket通信ならpeerでいいが、localhost(127.0.0.1)とかでもネットワークを介する場合はpostgreSQL内部で用意した「zabbix」アカウントの(postgreSQL内で定義した)パスワードで認証するようにします.
&size(10){正直、、localhost接続のための設定はzabbixの初期設定画面を通すだけの設定かな....運用時はpeerで十分ですしね. もちろんDBが別ノードだったらmd5は必要です};
#code(nonumber){{
[root@zabbix ~]# id zabbix
uid=993(zabbix) gid=990(zabbix) groups=990(zabbix)

[root@zabbix ~]# vi /var/lib/pgsql/data/pg_hba.conf
 :
local   all             all                                     peer   # 
host    all             all             127.0.0.1/32            md5    # iden->md5へ
[root@zabbix ~]# systemctl restart postgresql

(確認テスト)
[root@zabbix ~]# sudo -u zabbix psql    <-- 「local all all peer」で接続
psql (13.5)
Type "help" for help.

zabbix=> \q
[root@zabbix ~]# psql -d zabbix -h localhost4 -p 5432 -U zabbix   <-- 「host all all 127.0.0.1/32 md5」で接続
Password for user zabbix:                                         <--  postgreSQLでzabbixアカウントを作った際のパスワードを入力します
psql (13.5)
Type "help" for help.

zabbix=> \q
[root@zabbix ~]#
}}
&color(red){*};&size(10){「peer」はUnixドメインソケットを経由してOSアカウントがあるなら使える};
&size(10){「ident」はOSのアカウントが存在して、そのOSパスワード認証を行う};
&size(10){「md5」はpostgreSQL内のユーザでmd5認証を行う};
***PostgreSQLデータベースに Zabbixのスキーマを作成 [#o25fec3d]

作ったデータベース「zabbix」にスキーマを作る
#code(nonumber){{
[root@zabbix ~]# zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix      <--- peer接続で行われます

(あるいは)
[root@zabbix ~]# zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | psql -d zabbix -h localhost4 -p 5432 -U zabbix 
}}
webアプリからデータベースへ接続すための設定を施す. 「/etc/zabbix/zabbix_server.conf」
&size(10){運用時のwebアプリとデータベースの接続は peer 接続にさせてます};
#code(diff,nonumber){{
--- /etc/zabbix/zabbix_server.conf.20220508     2022-05-03 16:31:02.000000000 +0900
+++ /etc/zabbix/zabbix_server.conf      2022-05-08 01:12:24.419402798 +0900
@@ -90,7 +90,7 @@
 #
 # Mandatory: no
 # Default:
-# DBHost=localhost
+DBHost=

 ### Option: DBName
 #      Database name.
}}
&color(red){*};&size(10){/etc/zabbix/zabbix_server.confは 600 となってます};

***phpのタイムゾーン設定 [#t868fc04]
#code(diff,nonumber){{
[root@zabbix ~]# diff -u /etc/php.ini.20220504 /etc/php.ini
--- /etc/php.ini.20220504       2021-05-31 04:48:51.000000000 +0900
+++ /etc/php.ini        2022-05-04 19:48:36.642014439 +0900
@@ -899,7 +899,7 @@
 [Date]
 ; Defines the default timezone used by the date functions
 ; http://php.net/date.timezone
-;date.timezone =
+date.timezone = Asia/Tokyo

 ; http://php.net/date.default-latitude
 ;date.default_latitude = 31.7667
[root@zabbix ~]#
}}

***起動 [#ze31343d]
あとはアプリの起動
#code(nonumber){{
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm --now
}}

そしてfirewallを調整して
#code(nonumber){{
[root@zabbix ~]# firewall-cmd --add-service={http,https,zabbix-server} --zone=public --permanent
[root@zabbix ~]# firewall-cmd --reload
}}
「http://zabbix/zabbix」へアクセスしてみます. web画面がでたので大丈夫そう. 「Next step」ボタンを押下します.
&ref(2022y05m04d_201832658.png,nolink);
関連するプログラム群のバージョン確認が次で行われ、すべて「ok」であることを確認します. 「Next step」ボタンを押下

&ref(2022y05m04d_201835674.png,nolink);
データベースとの接続をここで設定します. ネットワーク経由での接続となるのでホストは「&color(magenta){localhost4};」とします.
あとpostgreSQLないで作ったzabbixのパスワードを添えて「Next step」ボタンを押下します.

&ref(2022y05m04d_201959629.png,nolink);

zabbixサーバの名称を定めます. ここでは「zabbix-server」としました.
あとtimezoneとweb画面の色合いとかを定義します. 「Next step」ボタンを押下

&ref(2022y05m04d_202024032.png,nolink);

最終確認をして、「Next step」ボタンを押下します.



&ref(2022y05m04d_202028252.png,nolink);

成功すると下記のような画面が表示されます. 「Finish」ボタンを押下します
&ref(2022y05m04d_202032202.png,nolink);

ログイン画面が表示されます.
ここで 初期アカウントは「Admin」パスワードは「zabbix」と入力してzabbixの画面に入ります
&ref(2022y05m04d_202212121.png,nolink);

***メモ [#s8145fba]
上記の「起動」で「/etc/zabbix/web/zabbix.conf.php」が作られます. このファイルを削除すると再度、初期設定が求められます.
だが、、、このzabbix.conf.phpに書かれた初期設定値は使われていない様子. zabbixとDBとの接続は「/etc/zabbix/zabbix_server.conf」が優先のご様子.
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS