本家様 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
っで本家に記載の通りに作業を進める
[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以下)
別にzabbixサーバとデータベースが共に存在する必要はなく、zabbixサーバ以外にデータベースサーバがあってもいい.
ここではzabbixサーバに同居するようにしてます. 必要な postgresql はzabbixのバージョンと合わせて下記に示します.
Zabbix version | 対応PostgreSQL | 出典 |
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」を導入する
[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認証を行う
作ったデータベース「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は 600 となってます
|
あとはアプリの起動
[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」ボタンを押下します.
関連するプログラム群のバージョン確認が次で行われ、すべて「ok」であることを確認します. 「Next step」ボタンを押下
データベースとの接続をここで設定します. ネットワーク経由での接続となるのでホストは「localhost4」とします.
あとpostgreSQLないで作ったzabbixのパスワードを添えて「Next step」ボタンを押下します.
zabbixサーバの名称を定めます. ここでは「zabbix-server」としました.
あとtimezoneとweb画面の色合いとかを定義します. 「Next step」ボタンを押下
最終確認をして、「Next step」ボタンを押下します.
成功すると下記のような画面が表示されます. 「Finish」ボタンを押下します
ログイン画面が表示されます.
ここで 初期アカウントは「Admin」パスワードは「zabbix」と入力してzabbixの画面に入ります
上記の「起動」で「/etc/zabbix/web/zabbix.conf.php」が作られます. このファイルを削除すると再度、初期設定が求められます.
だが、、、このzabbix.conf.phpに書かれた初期設定値は使われていない様子. zabbixとDBとの接続は「/etc/zabbix/zabbix_server.conf」が優先のご様子.