#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」が優先のご様子.