本家様 https://www.zabbix.com/jp/features
最新リリース版は Zabbix 6.0 (2022.05時点)
RHEL8系はサーバになれる. RHEL7系はエージェントにはなれる. RHEL7系でもソースからコンパイルすればサーバになれそうだけど、面倒かな
https://www.zabbix.com/download

ここでは RockyLinux8 に Zabbix 6.0 を導入してみます. 下地のデータベースは PostgreSQL、webサーバは apache とします

Zabbixのハード/ソフトウエア要件はこちらに記載されてます https://www.zabbix.com/documentation/6.0/en/manual/installation/requirements

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

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

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

リポジトリ登録

まずはZabbixのリポジトリを登録

[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パッケージをインストール

っで本家に記載の通りに作業を進める

[root@zabbix ~]# dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

「httpd」「php」らも一緒にインストールされるが、データベース postgresql はインストールされない様子
ユーザ「zabbix]がsystemアカウントとして用意される(uidが1000以下)

PostgreSQLをインストール

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

使用しているRockyLinux8では現在「dnf module」側で複数のパッケージを提供している. ここでは条件にあう「13」を導入する

[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」を有効にした.

[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 ~]#

データベースの初期設定を行います.

[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向けの postgreSQL内部ユーザ「zabbix」を作り、それがオーナーになるデータベースも作る

[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内で定義した)パスワードで認証するようにします.
正直、、localhost接続のための設定はzabbixの初期設定画面を通すだけの設定かな....運用時はpeerで十分ですしね. もちろんDBが別ノードだったらmd5は必要です

[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 ~]#

*「peer」はUnixドメインソケットを経由してOSアカウントがあるなら使える
「ident」はOSのアカウントが存在して、そのOSパスワード認証を行う
「md5」はpostgreSQL内のユーザでmd5認証を行う

PostgreSQLデータベースに Zabbixのスキーマを作成

作ったデータベース「zabbix」にスキーマを作る

[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」
運用時のwebアプリとデータベースの接続は peer 接続にさせてます

--- /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.

*/etc/zabbix/zabbix_server.confは 600 となってます

phpのタイムゾーン設定

[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 ~]#

起動

あとはアプリの起動

[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm --now

そしてfirewallを調整して

[root@zabbix ~]# firewall-cmd --add-service={http,https,zabbix-server} --zone=public --permanent
[root@zabbix ~]# firewall-cmd --reload

http://zabbix/zabbix」へアクセスしてみます. web画面がでたので大丈夫そう. 「Next step」ボタンを押下します.
2022y05m04d_201832658.png
関連するプログラム群のバージョン確認が次で行われ、すべて「ok」であることを確認します. 「Next step」ボタンを押下

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

2022y05m04d_201959629.png

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

2022y05m04d_202024032.png

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

2022y05m04d_202028252.png

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

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

メモ

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


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-05-31 (火) 01:58:57 (117d)