━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1. Zabbixコンテナの説明 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (1)zabbix-mysql 概要: zabbix-serverがDB構造やデータを**流し込むための「箱(データベース環境)」**として事前に作成・起動しておく必要があります。 注意点: DB内の各テーブルを作成(流し込み)するのはzabbix-server側の役割であり、mysqlコンテナ自体が自動でテーブルを 作るわけではありません。また、server側からのSQL実行や関数作成の許可設定を init.sql 等で事前定義しておかないと、serverからの 流し込み処理が失敗するため、権限設定を含めた初期化ファイルの作成には細心の注意が必要です。 (2)zabbix-server 概要: 起動時にzabbix-mysqlへ接続し、初期スキーマ(SQLデータ)を流し込む役割を担います。 注意点: デフォルトの状態ではテーブル数が207個に留まり、LDAP連携用の設定が含まれません。 そのため、事前に /usr/share/doc/zabbix-server-mysql/create.sql.gz を取得・加工し、LDAP用テーブル等の定義を追加した カスタム済みのSQLファイルを準備しておく必要があります。この「最強の設計図」を起動時に流し込むことで、管理画面での 手動設定を介さない、完全自動化された環境構築が可能となります。。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.ダウンロードのURLの一覧の資材の理解 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ https://www.jobarranger.info/jpn/download/index.html 接続先の新規コンテナ(jobarg): 18-1.下記は今回のコンテナでの構築に必要であるため対象である ①Server →ジョブを実行させる機能そのものの「司令塔(土台)」 https://www.jobarranger.info/download/7.2.1//Server/jobarranger-server-7.2.1-1.el9.x86_64.rpm ②LinuxAgent →実際にコマンドを動かし、その結果(成功・失敗)をあなたに報告する「実務担当」 https://www.jobarranger.info/download/7.2.1//LinuxAgent/jobarranger-agentd-7.2.1-1.el9.x86_64.rpm ①Manager →ジョブを実行させる機能そのものの「司令塔(土台)」 https://www.jobarranger.info/download/7.2.1//Manager/jobarranger-manager-7.2.1-1.el9.x86_64.rpm ──────────────────────────────────────────────────────── 多分下記は不要かもしれないですが、一応残しておく Other (jobarranger-7.2.1.tar.gz):【必須】 →Zabbixの管理画面の中に「Jaz Manager」の画面を表示させるための本体だからです。 https://www.jobarranger.info/download/7.2.1//Other/jobarranger-7.2.1.tar.gz 18-3.Otherや既にzabbixのログイン画面等を表示させるzabbix-webコンテでカバーするので理解だけで十分である Utils https://www.jobarranger.info/download/7.2.1//Utils/jobarranger-utils-7.2.1-1.el9.x86_64.rpm 18-4.そもそもクライアントでの作業になるのでサーバー構築では以下は完全対象外となる WindowsAgent https://www.jobarranger.info/download/7.2.1//WindowsAgent/Job_Arranger_Agent_x64.msi ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.データベースまたテーブルの作成 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3 Job Arranger のシステム構成 既存の Zabbix データベースを JobArranger でも使用することで、Zabbix で登録しているユーザやホスト等の情報を 共有し、スムーズな機能連携を実現させています。 https://www.jobarranger.info/download/0.9.1//Job%20Arranger_%E6%93%8D%E4%BD%9C%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB(%CE%B2%E7%89%88).pdf Zabbixデータベース上にJob Arrangerデータを作成することは必須ですが、Job Serverは別で問題ありません。 必須ではありません。Zabbixデータベース上にJob Arrangerデータを作成することは必須ですが、Job Serverは別で問題ありません。」 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4. ログから見る「実効時間」の分析 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ログの時間軸を整理すると、以下のようになっています。 MySQL (zabbix-mysql) 12:44:32: 初期化開始(Initializing database files) 12:47:18: 初期化完了(Database files initialized) 12:47:38: init.sql 実行開始 12:48:22: 完全に受付可能状態(ready for connections) 【分析】: ゼロからの構築時、MySQLが「Healthy」になるまで 約4分(240秒) かかっています。 Zabbix Server (zabbix-server) 13:48:26: スキーマ作成開始(Creating 'zabbix' schema) 14:31:39: 作成完了(Database schema successfully created!) 【分析】: ここが衝撃的ですが、スキーマ作成に 約43分 かかっています。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.zabbix用のサーバー証明書の作成 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ cd /Container/cert;pwd sudo certbot certonly \ --manual \ --preferred-challenges=dns \ --email sasio-technologies@outlook.jp \ --agree-tos \ --no-eff-email \ -d zabbix.sasio.jp [root@om01 ~]# sudo certbot certonly \ > --manual \ > --preferred-challenges=dns \ > --email sasio-technologies@outlook.jp \ > --agree-tos \ > --no-eff-email \ > -d zabbix.sasio.jp Saving debug log to /var/log/letsencrypt/letsencrypt.log Requesting a certificate for gitlab.sasio.jp ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.Job Arranger用のサーバー証明書の作成 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ cd /Container/cert;pwd sudo certbot certonly \ --manual \ --preferred-challenges=dns \ --email sasio-technologies@outlook.jp \ --agree-tos \ --no-eff-email \ -d jobarg.sasio.jp [root@om01 ~]# sudo certbot certonly \ > --manual \ > --preferred-challenges=dns \ > --email sasio-technologies@outlook.jp \ > --agree-tos \ > --no-eff-email \ > -d jobarg.sasio.jp Saving debug log to /var/log/letsencrypt/letsencrypt.log Requesting a certificate for gitlab.sasio.jp ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7. IPv6の無効化 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ★課題 Dockerのイメージ取得でIPv6で突然行わなれる可能性があるためOSインストール時に設定置いたほうが良いかもしれません。 ──────────────────────────────────────────────────────── /etc/docker/daemon.json [root@om01 zabbix]# cat /etc/docker/daemon.json { "ipv6": false, "dns": ["8.8.8.8", "1.1.1.1"] } [root@om01 zabbix]# systemctl restart docker ----------------------------------------------------------------------------------------------------------------- [root@om01 zabbix]# cat /etc/docker/daemon.json { "ipv6": false, "dns": ["8.8.8.8", "1.1.1.1"] } [root@om01 zabbix]# ──────────────────────────────────────────────────────── nmcli connection modify ens192 ipv6.method disabled nmcli connection modify ens224 ipv6.method disabled nmcli connection modify ens256 ipv6.method disabled nmcli connection reload ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8. DockerNetworkの作成 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ まず、コンテナが通信するためのネットワークと、データを保存するためのディレクトリを作成します。 (1).ネットワークの事前作成(※かなり重要) # ネットワークがない場合は作成(すでにある場合はエラーになりますが無視してOK) docker network create monitor_net docker network create gitlab_net docker network create mail_net ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9. Nginxかつサーバー証明書の格納先の準備 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (1).ディレクトリの作成 mkdir -p /Container/cert mkdir -p /Container/nginx/conf.d mkdir -p /Container/nginx/logs (2).フォルダの有無の確認 ls -la /Container/cert ls -l /Container/nginx/conf.d [root@om01 zabbix]# ls -la /Container/cert 合計 32 drwxr-xr-x 2 root root 4096 4月 21 07:23 . drwxr-xr-x. 8 root root 4096 4月 21 07:19 .. -rw-r--r-- 1 root root 2855 4月 18 13:49 gitlab_cert.pem -rw------- 1 root root 227 4月 18 13:50 gitlab_privkey.pem -rw-r--r-- 1 root root 2847 4月 18 07:55 mail_cert.pem -rw------- 1 root root 227 4月 18 07:55 mail_privkey.pem [root@om01 zabbix]# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10. Zabbixコンテナのコードの格納先の準備 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (1).ディレクトリの一括作成 mkdir -p /Container/zabbix/mysql/data mkdir -p /Container/zabbix/mysql/conf.d (2)追加機能向けのディレクトリの一括作成 mkdir -p /Container/zabbix/jobarg-build mkdir -p /Container/zabbix/web-modules (3)パーミッションの変更 chown -R root:root /Container/zabbix/web-modules chmod -R 755 /Container/zabbix/web-modules ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.zabbix-webコンテナの追加機能の圧縮ファイルの展開(jobarranger) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ tar --strip-components=1 \ -xzf /Container/zabbix/jobarg-build/jobarranger-7.2.1.tar.gz \ -C /Container/zabbix/web-modules [root@om01 jobarg-build]# ls -la /Container/zabbix/web-modules/ 合計 136 drwxr-xr-x 12 root root 4096 5月 6 09:36 . drwxr-xr-x 5 root root 4096 5月 5 20:05 .. -rwxrwxrwx 1 root root 32 1月 26 12:25 AUTHORS -rwxrwxrwx 1 root root 18332 1月 26 12:26 COPYING -rwxrwxrwx 1 root root 122 1月 26 12:26 ChangeLog -rwxrwxrwx 1 root root 19776 1月 26 12:26 Makefile.am -rwxrwxrwx 1 root root 53 1月 26 12:26 NEWS -rwxrwxrwx 1 root root 1124 1月 26 12:26 README.md drwxrwxrwx 4 root root 4096 1月 26 12:33 conf -rwxrwxrwx 1 root root 11136 1月 26 12:26 configure.ac drwxrwxrwx 5 root root 4096 1月 26 12:33 database drwxrwxrwx 3 root root 4096 1月 26 12:33 docker drwxrwxrwx 3 root root 4096 1月 26 12:33 frontend -rwxrwxrwx 1 root root 1249 1月 26 12:26 go.mod -rwxrwxrwx 1 root root 10156 1月 26 12:26 go.sum -rwxrwxrwx 1 root root 207 1月 26 12:26 install-gen.sh drwxrwxrwx 2 root root 4096 1月 26 12:33 man drwxrwxrwx 5 root root 4096 1月 26 12:33 misc drwxrwxrwx 5 root root 4096 1月 26 12:33 specs drwxrwxrwx 13 root root 4096 1月 26 12:33 src drwxrwxrwx 4 root root 4096 1月 26 12:33 tools drwxrwxrwx 4 root root 4096 1月 26 12:33 vendor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12. Nginxコンテナの再構築情報のコンテナの作成 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ nano /Container/nginx/compose.yml [root@om01 jobarg-build]# cat /Container/nginx/compose.yml services: nginx: image: nginx:latest container_name: nginx restart: always ports: - "80:80" - "443:443" volumes: - /Container/nginx/conf.d:/etc/nginx/conf.d - /Container/nginx/logs:/var/log/nginx - /Container/cert:/etc/nginx/cert networks: - gitlab_net - monitor_net # ★ Zabbix に接続するため追加 networks: gitlab_net: external: true monitor_net: external: true [root@om01 jobarg-build]# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13. Nginxコンテナからzabbixへの接続の設定ファイルの作成 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 以下の内容で各設定ファイルを作成・配置してください。 nano /Container/nginx/conf.d/zabbix.conf [root@om01 jobarg-build]# cat /Container/nginx/conf.d/zabbix.conf server { listen 443 ssl; server_name zabbix.sasio.jp; ssl_certificate /etc/nginx/cert/zabbix_cert.pem; ssl_certificate_key /etc/nginx/cert/zabbix_privkey.pem; # ★ Docker内部のDNSサーバーを指定(名前解決の即死を防ぐ) resolver 127.0.0.11 valid=30s; # SSLの推奨設定(セキュリティ向上) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; location / { # ★ 変数に入れることで、起動時のチェックをスキップさせます set $upstream_endpoint http://zabbix-web:8080; proxy_pass $upstream_endpoint; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } } [root@om01 jobarg-build]# ---------------------------------------------------------------------------------------------------------------- [root@om01 jobarg-build]# cat /Container/nginx/conf.d/jobarg.conf server { listen 443 ssl; server_name jobarg.sasio.jp; ssl_certificate /etc/nginx/cert/jobarg_cert.pem; ssl_certificate_key /etc/nginx/cert/jobarg_privkey.pem; resolver 127.0.0.11 valid=30s; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; location / { set $upstream_endpoint http://jobarg:80; proxy_pass $upstream_endpoint; # ★ 非常に重要:Apache側が拒否しないよう、Host名をコンテナ名に固定して騙す proxy_set_header Host jobarg; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } } [root@om01 jobarg-build]# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14. 事前準備としてzabbixのDB圧縮ファイルを取得する ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ docker run --rm --user root zabbix/zabbix-server-mysql:latest \ sh -c "cat /usr/share/doc/zabbix-server-mysql/create.sql.gz" > /Container/zabbix/mysql/conf.d/create.sql.gz [root@om01 ~]# docker run --rm --user root zabbix/zabbix-server-mysql:latest \ > sh -c "cat /usr/share/doc/zabbix-server-mysql/create.sql.gz" > /Container/zabbix/mysql/conf.d/create.sql.gz Unable to find image 'zabbix/zabbix-server-mysql:latest' locally latest: Pulling from zabbix/zabbix-server-mysql 6a0ac1617861: Pull complete d764f9797cc7: Pull complete 940c279f6983: Pull complete 4f4fb700ef54: Pull complete 08a37832fa7c: Pull complete 7c1589460779: Pull complete 9a4a826b506f: Pull complete 13d239f8e7f6: Pull complete 44833abc7568: Pull complete 1f919662e15f: Download complete 064dd68848e9: Download complete Digest: sha256:4cddcdaff354b097c234625afc2990b10be355639c329cf297170c8ae0686248 Status: Downloaded newer image for zabbix/zabbix-server-mysql:latest [root@om01 ~]# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15. 事前準備としてLDAPの設定情報の追加作業実施 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (1)対象フォルダに移動する cd /Container/zabbix/mysql/conf.d;pwd (2)圧縮ファイルを解凍する gunzip create.sql.gz (3)下記のファイルを開いて最終行に追加する nano /Container/zabbix/mysql/conf.d/create.sql [Ctrl]+[End]を押して再就業に移動する -- ================================================================================================================ -- Custom LDAP Configuration (Added for Initial Build) -- ================================================================================================================ -- ① userdirectoryテーブルへの登録 -- カラム名を実機に合わせて「provision_status」に修正済み INSERT INTO userdirectory (userdirectoryid, name, description, idp_type, provision_status) VALUES (1, 'SASIO-AD', 'Auto-configured', 1, 1); -- ② userdirectory_ldapテーブルへの登録 -- 各カラム名(host, port, base_dn, bind_dn等)が実機と一致していることを確認済み INSERT INTO userdirectory_ldap ( userdirectoryid, host, port, base_dn, search_attribute, bind_dn, bind_password, start_tls, search_filter ) VALUES ( 1, '172.26.4.43', 389, 'DC=sasio,DC=jp', 'sAMAccountName', 'CN=Administrator,CN=Users,DC=sasio,DC=jp', 'get04F15fr34!x07r008', 0, '' ); -- ③ 認証全体のスイッチをONにする(今回の検証で判明した重要ポイント) -- Default authentication を LDAP に切り替え UPDATE settings SET value_int = 1 WHERE name = 'authentication_type'; -- ④ 使用するディレクトリを ID:1 (SASIO-AD) に指定する -- すでにレコードがある場合は更新、ない場合は挿入する安全な構文です INSERT INTO settings (name, type, value_userdirectoryid, value_str) VALUES ('userdirectoryid', 2, 1, '') ON DUPLICATE KEY UPDATE value_userdirectoryid = 1; -- ⑤ 「Enable LDAP authentication」のチェックボックスをONにする INSERT INTO settings (name, type, value_int, value_str) VALUES ('ldap_auth_enabled', 0, 1, ''), ('ldap_jit_status', 0, 1, '') ON DUPLICATE KEY UPDATE value_int = 1; -- ⑥ ステップA: マッピングルール(パターンとロール)を登録 -- userdirectoryid は SASIO-AD のID(通常は 1 または 2)を確認して指定する INSERT INTO userdirectory_idpgroup (userdirectory_idpgroupid, userdirectoryid, name, roleid) SELECT 1, -- ここでIDを指定 ud.userdirectoryid, '*', -- LDAP group pattern r.roleid -- Super admin role のID FROM userdirectory ud, role r WHERE ud.name = 'SASIO-AD' AND r.name = 'Super admin role'; -- ⑦ ステップB: 上記のマッピングと Zabbixグループ(Zabbix administrators)を紐付け -- 明示的に userdirectory_usrgrpid に '1'、親IDにも '1' を指定します INSERT INTO userdirectory_usrgrp (userdirectory_usrgrpid, userdirectory_idpgroupid, usrgrpid) SELECT 1, -- 自身のIDを指定 1, -- ステップAで指定した親IDを指定 ug.usrgrpid FROM usrgrp ug WHERE ug.name = 'Zabbix administrators'; -- ⑧ JITプロビジョニング自体のスイッチをONにする INSERT INTO settings (name, type, value_int, value_str) VALUES ('jit_provisioning_enabled', 0, 1, '') ON DUPLICATE KEY UPDATE value_int = 1; -- ⑨ 「受け皿グループ(Disabled)」を設定して保存エラーを回避する -- 先ほどの実機 DESC 確認結果に基づき value_usrgrpid を使用 INSERT INTO settings (name, type, value_usrgrpid, value_str) VALUES ('disabled_usrgrpid', 1, 9, '') ON DUPLICATE KEY UPDATE value_usrgrpid = 9; -- ⑩ ID管理テーブルを更新し、構築後のGUI操作での衝突を防ぐ INSERT INTO ids (table_name, field_name, nextid) VALUES ('userdirectory_idpgroup', 'userdirectory_idpgroupid', 2), ('userdirectory_usrgrp', 'userdirectory_usrgrpid', 2) ON DUPLICATE KEY UPDATE nextid = 2; ──────────────────────────────────────────────────────────── (4)下記のコマンドで設定を確認する [root@om01 zabbix]# cat /Container/zabbix/mysql/conf.d/create.sql | tail -n 72 -- ================================================================================================================ -- Custom LDAP Configuration (Added for Initial Build) -- ================================================================================================================ -- ① userdirectoryテーブルへの登録 -- カラム名を実機に合わせて「provision_status」に修正済み INSERT INTO userdirectory (userdirectoryid, name, description, idp_type, provision_status) VALUES (1, 'SASIO-AD', 'Auto-configured', 1, 1); -- ② userdirectory_ldapテーブルへの登録 -- 各カラム名(host, port, base_dn, bind_dn等)が実機と一致していることを確認済み INSERT INTO userdirectory_ldap ( userdirectoryid, host, port, base_dn, search_attribute, bind_dn, bind_password, start_tls, search_filter ) VALUES ( 1, '172.26.4.43', 389, 'DC=sasio,DC=jp', 'sAMAccountName', 'CN=Administrator,CN=Users,DC=sasio,DC=jp', 'get04F15fr34!x07r008', 0, '' ); -- ③ 認証全体のスイッチをONにする(今回の検証で判明した重要ポイント) -- Default authentication を LDAP に切り替え UPDATE settings SET value_int = 1 WHERE name = 'authentication_type'; -- ④ 使用するディレクトリを ID:1 (SASIO-AD) に指定する -- すでにレコードがある場合は更新、ない場合は挿入する安全な構文です INSERT INTO settings (name, type, value_userdirectoryid, value_str) VALUES ('userdirectoryid', 2, 1, '') ON DUPLICATE KEY UPDATE value_userdirectoryid = 1; -- ⑤ 「Enable LDAP authentication」のチェックボックスをONにする INSERT INTO settings (name, type, value_int, value_str) VALUES ('ldap_auth_enabled', 0, 1, ''), ('ldap_jit_status', 0, 1, '') ON DUPLICATE KEY UPDATE value_int = 1; -- ⑥ ステップA: マッピングルール(パターンとロール)を登録 -- userdirectoryid は SASIO-AD のID(通常は 1 または 2)を確認して指定する INSERT INTO userdirectory_idpgroup (userdirectory_idpgroupid, userdirectoryid, name, roleid) SELECT 1, -- ここでIDを指定 ud.userdirectoryid, '*', -- LDAP group pattern r.roleid -- Super admin role のID FROM userdirectory ud, role r WHERE ud.name = 'SASIO-AD' AND r.name = 'Super admin role'; -- ⑦ ステップB: 上記のマッピングと Zabbixグループ(Zabbix administrators)を紐付け -- 明示的に userdirectory_usrgrpid に '1'、親IDにも '1' を指定します INSERT INTO userdirectory_usrgrp (userdirectory_usrgrpid, userdirectory_idpgroupid, usrgrpid) SELECT 1, -- 自身のIDを指定 1, -- ステップAで指定した親IDを指定 ug.usrgrpid FROM usrgrp ug WHERE ug.name = 'Zabbix administrators'; -- ⑧ JITプロビジョニング自体のスイッチをONにする INSERT INTO settings (name, type, value_int, value_str) VALUES ('jit_provisioning_enabled', 0, 1, '') ON DUPLICATE KEY UPDATE value_int = 1; -- ⑨ 「受け皿グループ(Disabled)」を設定して保存エラーを回避する -- 先ほどの実機 DESC 確認結果に基づき value_usrgrpid を使用 INSERT INTO settings (name, type, value_usrgrpid, value_str) VALUES ('disabled_usrgrpid', 1, 9, '') ON DUPLICATE KEY UPDATE value_usrgrpid = 9; -- ⑩ ID管理テーブルを更新し、構築後のGUI操作での衝突を防ぐ INSERT INTO ids (table_name, field_name, nextid) VALUES ('userdirectory_idpgroup', 'userdirectory_idpgroupid', 2), ('userdirectory_usrgrp', 'userdirectory_usrgrpid', 2) ON DUPLICATE KEY UPDATE nextid = 2; [root@om01 zabbix]# ──────────────────────────────────────────────────────── (5)-c オプションで元のファイルを残しつつ、.gz ファイルを作成します gzip -c create.sql > create.sql.gz ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16. 事前準備としてzabbix-serverからzabbix-mysqlへのコンテナの流し込みの許可の設定ファイルの準備 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ vi /Container/zabbix/mysql/conf.d/init.sql root@om01 zabbix]# cat /Container/zabbix/mysql/conf.d/init.sql -- ① 既存の不完全なDBを消し、Zabbix 7.0専用の規格で作り直す DROP DATABASE IF EXISTS zabbix; CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; -- ② 関数作成の制限を解除(インポートの中断防止) SET GLOBAL log_bin_trust_function_creators = 1; -- ③ 権限の付与 GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%'; [root@om01 zabbix]# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17. Zabbixコンテナの構築情報 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ nano /Container/zabbix/compose.yml [root@om01 jobarg-build]# cat /Container/zabbix/compose.yml services: mysql: image: mysql:8.0 container_name: zabbix-mysql restart: always command: --log-bin-trust-function-creators=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin environment: TZ: Asia/Tokyo MYSQL_ROOT_PASSWORD: zabbixroot MYSQL_DATABASE: zabbix MYSQL_USER: zabbix MYSQL_PASSWORD: zabbixpass volumes: - /Container/zabbix/mysql/data:/var/lib/mysql - /Container/zabbix/mysql/conf.d:/etc/mysql/conf.d - /Container/zabbix/mysql/conf.d/init.sql:/docker-entrypoint-initdb.d/init.sql:ro networks: - monitor_net # ★ 自分自身のDBサーバーへの接続確認(healthcheck)を追加 healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-pzabbixroot", "--ssl-mode=DISABLED"] interval: 60s timeout: 10s retries: 5 start_period: 480s zabbix-server: image: zabbix/zabbix-server-mysql:latest container_name: zabbix-server restart: always volumes: # ★ カスタムした「最強の設計図」をマウント - /Container/zabbix/mysql/conf.d/create.sql.gz:/usr/share/doc/zabbix-server-mysql/create.sql.gz:ro environment: TZ: Asia/Tokyo DB_SERVER_HOST: mysql MYSQL_USER: zabbix MYSQL_PASSWORD: zabbixpass MYSQL_DATABASE: zabbix healthcheck: # サーバーが起動し、設定を読み込める状態かを5分おきに確認 test: ["CMD", "zabbix_server", "-R", "config_cache_reload"] interval: 300s timeout: 60s retries: 3 # ★次回の「スナップショット戻し」後の初期化に備えて1時間に設定 start_period: 3600s depends_on: mysql: condition: service_healthy # MySQLが完全に「Healthy」になるのを待つ ports: - "10051:10051" networks: - monitor_net zabbix-web: image: zabbix/zabbix-web-nginx-mysql:latest container_name: zabbix-web restart: always environment: DB_SERVER_HOST: mysql DB_SERVER_PORT: 3306 MYSQL_USER: zabbix MYSQL_PASSWORD: zabbixpass MYSQL_DATABASE: zabbix ZBX_SERVER_HOST: zabbix-server ZBX_SERVER_PORT: 10051 PHP_TZ: Asia/Tokyo ZBX_LOGIN: ldap ZBX_LDAP_HOST: "172.26.4.43" ZBX_LDAP_PORT: "389" ZBX_LDAP_BASE_DN: "DC=sasio,DC=jp" ZBX_LDAP_BIND_DN: "CN=Administrator,CN=Users,DC=sasio,DC=jp" ZBX_LDAP_BIND_PASSWORD: "get04F15fr34!x07r008" ZBX_LDAP_SEARCH_ATTRIBUTE: "sAMAccountName" # NginxがPHPからの応答を待つ時間を1時間に設定 ZBX_NGINX_PROXY_READ_TIMEOUT: 3600 ZBX_NGINX_PROXY_SEND_TIMEOUT: 3600 depends_on: mysql: condition: service_healthy # MySQLが完全に受付可能になってから zabbix-server: condition: service_healthy # ServerがDB初期化を終えて起動完了してから ports: - "8080:8080" networks: - monitor_net - mail_net - gitlab_net networks: monitor_net: external: true mail_net: external: true gitlab_net: external: true [root@om01 jobarg-build]# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.コンテナの構築の実施 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ cd /Container/zabbix;pwd docker compose up -d https://zabbix.sasio.jp/zabbix.php?action=authentication.edit Enable JIT provisioningで有効→無効→有効 techopでログインができるyようになった ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19.追加オプションの新規設定(Job Arranger) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [root@om01 jobarg-build]# cat /Container/zabbix/jobarg-build/Dockerfile FROM almalinux:9 # 1. パッケージインストール RUN dnf install -y epel-release && \ dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm && \ dnf install -y --allowerasing \ mariadb-connector-c \ net-snmp-libs \ curl \ libvterm \ mariadb \ mysql-community-libs \ httpd \ php \ php-mysqlnd \ php-gd \ php-xml \ php-mbstring \ php-ldap # 2. JobArranger RPMインストール RUN curl -L -O https://www.jobarranger.info/download/7.2.1/Server/jobarranger-server-7.2.1-1.el9.x86_64.rpm && \ curl -L -O https://www.jobarranger.info/download/7.2.1/LinuxAgent/jobarranger-agentd-7.2.1-1.el9.x86_64.rpm && \ curl -L -O https://www.jobarranger.info/download/7.2.1/Manager/jobarranger-manager-7.2.1-1.el9.x86_64.rpm && \ dnf localinstall -y jobarranger-*.rpm && \ rm -f jobarranger-*.rpm # 【追加】jobarg_server.conf の詳細設定修正(DB・リスンポート) RUN sed -i -e '/^DBType=/d' \ -e '/^DBHost=/d' \ -e '/^DBName=/d' \ -e '/^DBUser=/d' \ -e '/^DBPassword=/d' \ -e '/^DBPort=/d' \ -e '/^DBPasswordExternal=/d' \ -e '/^JazDBHost=/d' \ -e '/^JazDBName=/d' \ -e '/^JazDBUser=/d' \ -e '/^JazDBPassword=/d' \ -e '/^JazDBPort=/d' \ -e '/^ListenIP=/d' \ -e '/^ListenPort=/d' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: DBType$/a DBType=mysql' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: DBHost$/a DBHost=zabbix-mysql' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: DBName$/a DBName=zabbix' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: DBUser$/a DBUser=zabbix' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: DBPassword$/a DBPassword=zabbixpass' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: DBPort$/a DBPort=3306' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: JazDBHost$/a JazDBHost=zabbix-mysql' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: JazDBName$/a JazDBName=zabbix' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: JazDBUser$/a JazDBUser=zabbix' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: JazDBPassword$/a JazDBPassword=zabbixpass' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: JazDBPort$/a JazDBPort=3306' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: ListenIP$/a ListenIP=0.0.0.0' /etc/jobarranger/jobarg_server.conf && \ sed -i '/### Option: ListenPort$/a ListenPort=10061' /etc/jobarranger/jobarg_server.conf # 【追加】Zabbixモジュールのコピー RUN mkdir -p /usr/share/zabbix/modules/ && \ cp -R /usr/share/jobarranger/modules/JazManager /usr/share/zabbix/modules/ # 3. Manager/API設定の修正 (jam.config.php の生成とURL維持の置換) RUN CONFIG_PATH="/usr/share/jobarranger/api/app/config/jam.config.php" && \ if [ ! -f "$CONFIG_PATH" ]; then \ if [ -f "${CONFIG_PATH}.example" ]; then cp "${CONFIG_PATH}.example" "$CONFIG_PATH"; \ elif [ -f "${CONFIG_PATH}.dist" ]; then cp "${CONFIG_PATH}.dist" "$CONFIG_PATH"; \ else \ echo " "$CONFIG_PATH"; \ echo "define('DB_HOST' , 'localhost');" >> "$CONFIG_PATH"; \ echo "define('JA_DB_HOST' , 'localhost');" >> "$CONFIG_PATH"; \ echo "define('DB_NAME' , 'jobarranger');" >> "$CONFIG_PATH"; \ echo "define('JA_DB_NAME' , 'jobarranger');" >> "$CONFIG_PATH"; \ echo "define('DB_PASS' , 'zabbix');" >> "$CONFIG_PATH"; \ echo "define('JA_DB_PASS' , 'zabbix');" >> "$CONFIG_PATH"; \ echo "define('ZBX_API_ROOT', '');" >> "$CONFIG_PATH"; \ echo "define('ZBX_REDIRECT_URL', '');" >> "$CONFIG_PATH"; \ echo "define('ZBX_API_LOCAL', true);" >> "$CONFIG_PATH"; \ echo "define('SSL_VERIFICATION', 1);" >> "$CONFIG_PATH"; \ fi \ fi && \ sed -i "s/define('DB_HOST' , '.*');/define('DB_HOST' , 'zabbix-mysql');/" "$CONFIG_PATH" && \ sed -i "s/define('JA_DB_HOST' , '.*');/define('JA_DB_HOST' , 'zabbix-mysql');/" "$CONFIG_PATH" && \ sed -i "s/define('DB_NAME' , '.*');/define('DB_NAME' , 'zabbix');/" "$CONFIG_PATH" && \ sed -i "s/define('JA_DB_NAME' , '.*');/define('JA_DB_NAME' , 'zabbix');/" "$CONFIG_PATH" && \ sed -i "s/define('DB_PASS' , '.*');/define('DB_PASS' , 'zabbixpass');/" "$CONFIG_PATH" && \ sed -i "s/define('JA_DB_PASS' , '.*');/define('JA_DB_PASS' , 'zabbixpass');/" "$CONFIG_PATH" && \ sed -i "s|define('ZBX_API_ROOT', '.*');|define('ZBX_API_ROOT', 'http://zabbix-web:8080/');|g" "$CONFIG_PATH" && \ # ★ 修正箇所:外部からアクセスされたFQDN「jobarg.sasio.jp」を明示して固定化します sed -i "s|define('ZBX_REDIRECT_URL', '.*');|define('ZBX_REDIRECT_URL', 'https://jobarg.sasio.jp');|g" "$CONFIG_PATH" && \ sed -i "s/define('ZBX_API_LOCAL', .*/define('ZBX_API_LOCAL', false);/" "$CONFIG_PATH" && \ sed -i "s/define('SSL_VERIFICATION', .*/define('SSL_VERIFICATION', 0);/" "$CONFIG_PATH" && \ echo 'if (isset($_SERVER["HTTP_X_FORWARDED_PROTO"]) && $_SERVER["HTTP_X_FORWARDED_PROTO"] === "https") { $_SERVER["HTTPS"] = "on"; }' >> "$CONFIG_PATH" # 4. Agent設定の修正 RUN sed -i -e '/^Server=/d' -e '/^Hostname=/d' /etc/jobarranger/jobarg_agentd.conf && \ sed -i '/### Option: Server$/a Server=127.0.0.1' /etc/jobarranger/jobarg_agentd.conf && \ sed -i '/### Option: Hostname$/a Hostname=jobarg-server' /etc/jobarranger/jobarg_agentd.conf # 5. Apache設定の修正 RUN rm -f /etc/httpd/conf.d/jobarranger.conf && \ echo 'Alias /jobarranger "/usr/share/jobarranger"' > /etc/httpd/conf.d/jobarranger.conf && \ echo '' >> /etc/httpd/conf.d/jobarranger.conf && \ echo ' DirectoryIndex index.html index.php' >> /etc/httpd/conf.d/jobarranger.conf && \ echo ' Options +FollowSymLinks' >> /etc/httpd/conf.d/jobarranger.conf && \ echo ' AllowOverride All' >> /etc/httpd/conf.d/jobarranger.conf && \ echo ' Require all granted' >> /etc/httpd/conf.d/jobarranger.conf && \ # PHP-FPMへの接続設定を上書き(503対策) echo ' ' >> /etc/httpd/conf.d/jobarranger.conf && \ echo ' SetHandler "proxy:fcgi://127.0.0.1:9000"' >> /etc/httpd/conf.d/jobarranger.conf && \ echo ' ' >> /etc/httpd/conf.d/jobarranger.conf && \ echo '' >> /etc/httpd/conf.d/jobarranger.conf # PHP-FPMの設定を修正して TCP 9000 で待機するようにする RUN sed -i 's|^listen = .*|listen = 127.0.0.1:9000|' /etc/php-fpm.d/www.conf || true # 6. API用の一時ディレクトリ準備 RUN mkdir -p /usr/share/jobarranger/api/app/tmp && \ chmod -R 777 /usr/share/jobarranger/api/app/tmp EXPOSE 80 10061 # 7. 実行設定 CMD echo 'Setting permissions...'; \ mkdir -p /usr/share/jobarranger/api/app/tmp /var/log/jobarranger/manager /run/php-fpm; \ chown -R apache:apache /usr/share/jobarranger /var/log/jobarranger /run/php-fpm; \ chmod -R 777 /usr/share/jobarranger/api/app/tmp /var/log/jobarranger/manager; \ chown -R zabbix:zabbix /var/log/jobarranger /usr/local/bin/jobarranger/server_socks; \ \ echo 'Waiting for MySQL connection...'; \ until mysqladmin ping -h zabbix-mysql -u zabbix -pzabbixpass --silent; do \ echo 'MySQL is unavailable - sleeping'; \ sleep 3; \ done; \ echo 'MySQL is up - executing SQL scripts...'; \ \ echo 'Updating Database...'; \ if [ -f "/usr/share/jobarranger/sql/mysql_schema.sql" ]; then \ mysql -h zabbix-mysql -u zabbix -pzabbixpass zabbix -f < /usr/share/jobarranger/sql/mysql_schema.sql; \ mysql -h zabbix-mysql -u zabbix -pzabbixpass zabbix -f < /usr/share/jobarranger/sql/mysql_data.sql; \ else \ echo 'WARNING: SQL files not found in standard path! Searching...'; \ SQL_DIR=$(dirname $(find /usr/share -name 'mysql_schema.sql*' | head -n 1)); \ if [ -n "$SQL_DIR" ]; then \ echo "Found SQL in $SQL_DIR"; \ if ls $SQL_DIR/*.gz >/dev/null 2>&1; then gunzip -f $SQL_DIR/*.gz; fi; \ mysql -h zabbix-mysql -u zabbix -pzabbixpass zabbix -f < $SQL_DIR/mysql_schema.sql; \ mysql -h zabbix-mysql -u zabbix -pzabbixpass zabbix -f < $SQL_DIR/mysql_data.sql; \ else \ echo 'CRITICAL: SQL files completely missing!'; \ fi \ fi; \ \ echo 'Starting Services...'; \ # PHP-FPMをバックグラウンドで起動(503エラー対策) php-fpm; \ /usr/local/sbin/jobarg_agentd; \ /usr/local/sbin/jobarg_server -c /etc/jobarranger/jobarg_server.conf; \ # Apacheをフォアグラウンドで起動 /usr/sbin/httpd -D FOREGROUND [root@om01 jobarg-build]# ───────────────────────────────────────────────────────────── [root@om01 jobarg-build]# cat /Container/zabbix/jobarg-build/compose.yml services: job-arg-server: build: . image: local/jobarg-server:7.2.1 container_name: jobarg restart: always ports: - "10061:10061" environment: - TZ=Asia/Tokyo - MYSQL_ROOT_PASSWORD=zabbixroot - MYSQL_USER=zabbix - MYSQL_PASSWORD=zabbixpass - DB_SERVER_HOST=zabbix-mysql # --- ここを追加 --- extra_hosts: - "jobarg.sasio.jp:host-gateway" # ------------------ networks: - monitor_net networks: monitor_net: external: true [root@om01 jobarg-build]# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 20.追加オプションの新規設定(Job Arranger) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ cd /Container/zabbix/jobarg-build;pwd docker build --network=host -t local/jobarg-server:7.2.1 . [root@om01 jobarg-build]# docker build --network=host -t local/jobarg-server:7.2.1 . [+] Building 2465.3s (13/13) FINISHED docker:default => [internal] load build definition from Dockerfile 0.1s => => transferring dockerfile: 8.07kB 0.0s => [internal] load metadata for docker.io/library/almalinux:9 3.4s => [internal] load .dockerignore 0.1s => => transferring context: 2B 0.0s => [1/9] FROM docker.io/library/almalinux:9@sha256:606be3c7b71a40dd3b024646e9b5a0b5023d0fdf111060f249b08f04cec0 54.2s => => resolve docker.io/library/almalinux:9@sha256:606be3c7b71a40dd3b024646e9b5a0b5023d0fdf111060f249b08f04cec0c 0.2s => => sha256:bf33987844e0293cd84c3d97bb714d6e871f8790237b923f70a2eb541b43d4df 71.28MB / 71.28MB 17.9s => => extracting sha256:bf33987844e0293cd84c3d97bb714d6e871f8790237b923f70a2eb541b43d4df 34.1s => [2/9] RUN dnf install -y epel-release && dnf install -y https://dev.mysql.com/get/mysql80-community-re 1555.8s => [3/9] RUN curl -L -O https://www.jobarranger.info/download/7.2.1/Server/jobarranger-server-7.2.1-1.el9.x86_6 97.9s => [4/9] RUN sed -i -e '/^DBType=/d' -e '/^DBHost=/d' -e '/^DBName=/d' -e '/^DB 5.3s => [5/9] RUN mkdir -p /usr/share/zabbix/modules/ && cp -R /usr/share/jobarranger/modules/JazManager /usr/sha 2.0s => [6/9] RUN CONFIG_PATH="/usr/share/jobarranger/api/app/config/jam.config.php" && if [ ! -f "$CONFIG_PATH" 2.6s => [7/9] RUN sed -i -e '/^Server=/d' -e '/^Hostname=/d' /etc/jobarranger/jobarg_agentd.conf && sed -i '/### 2.3s => [8/9] RUN rm -f /etc/httpd/conf.d/jobarranger.conf && echo 'Alias /jobarranger "/usr/share/jobarranger"' 1.4s => [9/9] RUN mkdir -p /usr/share/jobarranger/api/app/tmp && chmod -R 777 /usr/share/jobarranger/api/app/tmp 1.4s => exporting to image 726.3s => => exporting layers 296.9s => => exporting manifest sha256:7e05ce850e57d2fb2feb79a547d0e92bc9ee87672061f0f3fb3c34bbab751831 0.8s => => exporting config sha256:5c58022a0865ea4f3dea6d29fe6f56b9ec85dc5a71b8b2224352f96dc7d59504 1.1s => => exporting attestation manifest sha256:6847f25e1be96ae4bdc853f041f6caf8e6ca520cd3e08d9f07350bbaf31b5669 4.5s => => exporting manifest list sha256:9905a4f251f1c9e3500ecf5f9825613e3daad222616543727a6a81e7307c01ff 0.9s => => naming to docker.io/local/jobarg-server:7.2.1 0.7s => => unpacking to docker.io/local/jobarg-server:7.2.1 417.5s 1 warning found (use docker --debug to expand): - JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 111) [root@om01 jobarg-build]# ---------------------------------------------------------------------------------------------------------------- # コンテナ起動(サービス名は job-arg-server) docker compose -f /Container/zabbix/jobarg-build/docker-compose-jobarg.yml up -d [root@om01 jobarg-build]# docker compose up -d [+] up 1/1 ✔ Container jobarg Started 20.8s [root@om01 jobarg-build]# https://jobarg.sasio.jp/jobarranger/ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.追加オプションのセットアップ(Job Arranger) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [root@om01 jobarg-build]# docker exec -it jobarg cat /usr/share/jobarranger/api/app/config/jam.config.php 10061/tcp, [::]:10061->10061/tcp jobarg [root@om01 jobarg-build]# ──────────────────────────────────────────────────────────── [root@om01 jobarg-build]# docker exec -it jobarg rpm -qa | grep jobarranger jobarranger-agentd-7.2.1-1.el9.x86_64 jobarranger-server-7.2.1-1.el9.x86_64 jobarranger-manager-7.2.1-1.el9.x86_64 [root@om01 jobarg-build]# ──────────────────────────────────────────────────────────── ③ ネットワーク待ち受け確認 ホストOSから 10061 ポートで接続を受け付ける準備ができているか確認します。 ss -nlt | grep 10061 [root@om01 jobarg-build]# ss -nlt | grep 10061 LISTEN 0 4096 0.0.0.0:10061 0.0.0.0:* LISTEN 0 4096 [::]:10061 [::]:* [root@om01 jobarg-build]# ──────────────────────────────────────────────────────────── ① プロセス稼働確認 Server と Agent がコンテナ内で共存して動いているかを確認します。 docker exec -it jobarg-server ps aux | grep jobarg [root@om01 jobarg-build]# docker exec -it jobarg-server ps aux | grep jobarg zabbix 20 0.0 0.0 1672148 6752 ? Sl 11:36 0:00 jobarg_manage zabbix 39 0.0 0.0 0 0 ? Zs 11:36 0:00 [jobarg_serve zabbix 41 0.0 0.0 1745880 8620 ? Sl 11:36 0:00 jobarg_server [root@om01 jobarg-build]# ──────────────────────────────────────────────────────────── ② 接続ログの確認(最重要) 設定ファイル (jobarg_server.conf) の DBName 等の修正が正しく反映され、DB接続に成功しているかをログで確認します。 docker exec -it jobarg-server tail -n 50 /var/log/jobarranger/jobarg_server.log [root@om01 jobarg-build]# docker exec -it jobarg-server tail -n 50 /var/log/jobarranger/jobarg_server.log 1:20260511:112525.320 [INFO] [JASERVER000001] Starting Job Arranger Server. Job Arranger 7.2.1 (revision 3786). 1:20260511:112525.320 [INFO] [JASERVER000003] server #0 started [main process] 33:20260511:112525.320 [INFO] [JASERVER000004] server #0 started [jobarg_server_monitor #1] 35:20260511:112525.322 [INFO] [JASERVER000004] server #1 started [notification_manager #1] 54:20260511:112526.657 [INFO] [JASERVER000004] server #2 started [zabbix_link_manager #1] 35:20260511:112527.657 [ERROR] [JAFRAMEWORK200009 notificationmanager] Parent process not found.Exiting the process. manager: notificationmanager 35:20260511:112527.657 [INFO] [JAFRAMEWORK000003 notificationmanager] Exiting go manager framework. manager: notificationmanager 54:20260511:112527.698 [ERROR] [JAFRAMEWORK200009 zabbixlinkmanager] Parent process not found.Exiting the process. manager: zabbixlinkmanager 54:20260511:112527.698 [INFO] [JAFRAMEWORK000003 zabbixlinkmanager] Exiting go manager framework. manager: zabbixlinkmanager 35:20260511:112537.666 [WARNING] [JAFRAMEWORK300001 notificationmanager] Stopping workers timeout.Sending SIGKILL. manager: notificationmanager 54:20260511:112537.706 [WARNING] [JAFRAMEWORK300001 zabbixlinkmanager] Stopping workers timeout.Sending SIGKILL. manager: zabbixlinkmanager [root@om01 jobarg-build]# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.標準機能のZabbixテーブルの一覧の確認 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [root@om01 jobarg-build]# docker exec -it jobarg mysql -h zabbix-mysql -u zabbix -pzabbixpass zabbix -e "SHOW TABLES;" mysql: [Warning] Using a password on the command line interface can be insecure. +-----------------------------------+ | Tables_in_zabbix | +-----------------------------------+ | acknowledges | | actions | | alerts | | auditlog | | autoreg_host | | changelog | | conditions | | config_autoreg_tls | | connector | | connector_tag | | corr_condition | | corr_condition_group | | corr_condition_tag | | corr_condition_tagpair | | corr_condition_tagvalue | | corr_operation | | correlation | | dashboard | | dashboard_page | | dashboard_user | | dashboard_usrgrp | | dbversion | | dchecks | | dhosts | | drules | | dservices | | escalations | | event_recovery | | event_suppress | | event_symptom | | event_tag | | events | | expressions | | functions | | globalmacro | | globalvars | | graph_discovery | | graph_theme | | graphs | | graphs_items | | group_discovery | | group_prototype | | ha_node | | hgset | | hgset_group | | history | | history_bin | | history_log | | history_str | | history_text | | history_uint | | host_discovery | | host_hgset | | host_inventory | | host_proxy | | host_rtdata | | host_tag | | hostmacro | | hostmacro_config | | hosts | | hosts_groups | | hosts_templates | | housekeeper | | hstgrp | | httpstep | | httpstep_field | | httpstepitem | | httptest | | httptest_field | | httptest_tag | | httptestitem | | icon_map | | icon_mapping | | ids | | images | | interface | | interface_discovery | | interface_snmp | | item_condition | | item_discovery | | item_parameter | | item_preproc | | item_rtdata | | item_rtname | | item_tag | | items | | ja_2_calendar_control_table | | ja_2_calendar_detail_table | | ja_2_define_extjob_table | | ja_2_define_run_log_message_table | | ja_2_define_value_jobcon_table | | ja_2_filter_control_table | | ja_2_flow_control_table | | ja_2_host_lock_table | | ja_2_icon_agentless_table | | ja_2_icon_calc_table | | ja_2_icon_end_table | | ja_2_icon_extjob_table | | ja_2_icon_fcopy_table | | ja_2_icon_fwait_table | | ja_2_icon_if_table | | ja_2_icon_info_table | | ja_2_icon_job_table | | ja_2_icon_jobnet_table | | ja_2_icon_reboot_table | | ja_2_icon_release_table | | ja_2_icon_task_table | | ja_2_icon_value_table | | ja_2_icon_zabbix_link_table | | ja_2_index_table | | ja_2_job_command_table | | ja_2_job_control_table | | ja_2_jobnet_control_table | | ja_2_object_lock_table | | ja_2_parameter_table | | ja_2_ran_flow_table | | ja_2_ran_job_table | | ja_2_ran_job_variable_table | | ja_2_ran_jobnet_summary_table | | ja_2_ran_jobnet_table | | ja_2_ran_jobnet_variable_table | | ja_2_ran_log_table | | ja_2_ran_value_job_table | | ja_2_ran_value_jobcon_table | | ja_2_run_action_table | | ja_2_run_flow_table | | ja_2_run_job_table | | ja_2_run_job_variable_table | | ja_2_run_jobnet_summary_table | | ja_2_run_jobnet_table | | ja_2_run_jobnet_variable_table | | ja_2_run_log_table | | ja_2_run_timeout_table | | ja_2_run_value_job_table | | ja_2_run_value_jobcon_table | | ja_2_schedule_control_table | | ja_2_schedule_detail_table | | ja_2_schedule_jobnet_table | | ja_2_send_message_table | | ja_2_session_table | | ja_2_value_job_table | | ja_2_value_jobcon_table | | ja_2_zbx_hosts_table | | lld_macro_export | | lld_macro_path | | lld_override | | lld_override_condition | | lld_override_opdiscover | | lld_override_operation | | lld_override_ophistory | | lld_override_opinventory | | lld_override_opperiod | | lld_override_opseverity | | lld_override_opstatus | | lld_override_optag | | lld_override_optemplate | | lld_override_optrends | | maintenance_tag | | maintenances | | maintenances_groups | | maintenances_hosts | | maintenances_windows | | media | | media_type | | media_type_message | | media_type_oauth | | media_type_param | | mfa | | mfa_totp_secret | | module | | opcommand | | opcommand_grp | | opcommand_hst | | opconditions | | operations | | opgroup | | opinventory | | opmessage | | opmessage_grp | | opmessage_usr | | optag | | optemplate | | permission | | problem | | problem_tag | | profiles | | proxy | | proxy_autoreg_host | | proxy_dhistory | | proxy_group | | proxy_group_rtdata | | proxy_history | | proxy_rtdata | | regexps | | report | | report_param | | report_user | | report_usrgrp | | rights | | role | | role_rule | | scim_group | | script_param | | scripts | | service_alarms | | service_problem | | service_problem_tag | | service_status_rule | | service_tag | | services | | services_links | | sessions | | settings | | sla | | sla_excluded_downtime | | sla_schedule | | sla_service_tag | | sysmap_element_trigger | | sysmap_element_url | | sysmap_link_threshold | | sysmap_shape | | sysmap_url | | sysmap_user | | sysmap_usrgrp | | sysmaps | | sysmaps_element_tag | | sysmaps_elements | | sysmaps_link_triggers | | sysmaps_links | | tag_filter | | task | | task_acknowledge | | task_check_now | | task_close_problem | | task_data | | task_remote_command | | task_remote_command_result | | task_result | | timeperiods | | token | | trends | | trends_uint | | trigger_depends | | trigger_discovery | | trigger_queue | | trigger_tag | | triggers | | ugset | | ugset_group | | user_scim_group | | user_ugset | | userdirectory | | userdirectory_idpgroup | | userdirectory_ldap | | userdirectory_media | | userdirectory_saml | | userdirectory_usrgrp | | users | | users_groups | | usrgrp | | valuemap | | valuemap_mapping | | widget | | widget_field | +-----------------------------------+ [root@om01 jobarg-build]# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 22.zabbix-serverからzabbix-mysqlへの接続確認 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ docker exec zabbix-mysql mysql -uroot -pzabbixroot zabbix -e "SELECT count(*) FROM information_schema.tables WHERE table_schema='zabbix';" docker exec -it zabbix-server bash mysql -h mysql -uzabbix -pzabbixpass --skip-ssl MySQL [(none)]> USE zabbix; SHOW TABLES LIKE 'config'; SELECT count(*) FROM information_schema.tables WHERE table_schema='zabbix'; [root@om01 zabbix]# docker exec -it zabbix-server bash 57082fc4c465:~$ 57082fc4c465:~$ 57082fc4c465:~$ mysql -h mysql -uzabbix -pzabbixpass --skip-ssl mysql: Deprecated program name. It will be removed in a future release, use '/usr/bin/mariadb' instead Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 14 Server version: 8.0.46 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> MySQL [(none)]> USE zabbix; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 23.zabbix-mysqlのレコード状態の確認(実行結果) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [root@om01 jobarg-build]# docker exec -it zabbix-mysql mysql -u root -pzabbixroot -e "SHOW GRANTS FOR 'zabbix'@'%';" mysql: [Warning] Using a password on the command line interface can be insecure. +---------------------------------------------------------+ | Grants for zabbix@% | +---------------------------------------------------------+ | GRANT USAGE ON *.* TO `zabbix`@`%` | | GRANT ALL PRIVILEGES ON `jobarranger`.* TO `zabbix`@`%` | | GRANT ALL PRIVILEGES ON `zabbix`.* TO `zabbix`@`%` | +---------------------------------------------------------+ [root@om01 jobarg-build]# ──────────────────────────────────────────────────────────────────────────────────────── [root@om01 zabbix]# docker exec zabbix-mysql mysql -uroot -pzabbixroot zabbix -t -e "SELECT host, port, base_dn, bind_dn FROM userdirectory_ldap WHERE userdirectoryid = 1;" mysql: [Warning] Using a password on the command line interface can be insecure. +-------------+------+----------------+------------------------------------------+ | host | port | base_dn | bind_dn | +-------------+------+----------------+------------------------------------------+ | 172.26.4.43 | 389 | DC=sasio,DC=jp | CN=Administrator,CN=Users,DC=sasio,DC=jp | +-------------+------+----------------+------------------------------------------+ [root@om01 zabbix]# ──────────────────────────────────────────────────────────────────────────────────────── [root@om01 zabbix]# docker exec zabbix-mysql mysql -uroot -pzabbixroot zabbix -e "SELECT userdirectoryid, name, provision_status FROM userdirectory WHERE userdirectoryid = 1;" mysql: [Warning] Using a password on the command line interface can be insecure. userdirectoryid name provision_status 1 SASIO-AD 1 ──────────────────────────────────────────────────────────────────────────────────────── [root@om01 zabbix]# docker exec -it zabbix-mysql mysql -uroot -pzabbixroot zabbix -e "SELECT userdirectoryid, name FROM userdirectory;" mysql: [Warning] Using a password on the command line interface can be insecure. +-----------------+----------+ | userdirectoryid | name | +-----------------+----------+ | 1 | SASIO-AD | +-----------------+----------+ [root@om01 zabbix]# ──────────────────────────────────────────────────────────────────────────────────────── [root@om01 zabbix]# docker exec zabbix-mysql mysql -uroot -pzabbixroot zabbix -e "SELECT host, port, base_dn, bind_dn FROM userdirectory_ldap WHERE userdirectoryid = 1;" mysql: [Warning] Using a password on the command line interface can be insecure. host port base_dn bind_dn 172.26.4.43 389 DC=sasio,DC=jp CN=Administrator,CN=Users,DC=sasio,DC=jp [root@om01 zabbix]# docker exec zabbix-mysql mysql -uroot -pzabbixroot zabbix -e "SELECT count(*) FROM information_schema.tables WHERE table_schema='zabbix';" mysql: [Warning] Using a password on the command line interface can be insecure. count(*) 207 [root@om01 zabbix]# [root@om01 zabbix]# docker exec -it zabbix-mysql mysql -uroot -pzabbixroot zabbix -e "SELECT * FROM settings WHERE name IN ('authentication_type', 'userdirectoryid');" mysql: [Warning] Using a password on the command line interface can be insecure. +---------------------+------+-----------+-----------+----------------+-------------------+-----------------------+-------------+ | name | type | value_str | value_int | value_usrgrpid | value_hostgroupid | value_userdirectoryid | value_mfaid | +---------------------+------+-----------+-----------+----------------+-------------------+-----------------------+-------------+ | authentication_type | 2 | | 0 | NULL | NULL | NULL | NULL | +---------------------+------+-----------+-----------+----------------+-------------------+-----------------------+-------------+ [root@om01 zabbix]# ──────────────────────────────────────────────────────────────────────────────────────── [root@om01 zabbix]# docker exec -it zabbix-mysql mysql -uroot -pzabbixroot zabbix -e "SELECT name, host, bind_password FROM userdirectory JOIN userdirectory_ldap USING(userdirectoryid);" mysql: [Warning] Using a password on the command line interface can be insecure. +----------+-------------+----------------------+ | name | host | bind_password | +----------+-------------+----------------------+ | SASIO-AD | 172.26.4.43 | get04F15fr34!x07r008 | +----------+-------------+----------------------+ [root@om01 zabbix]# ──────────────────────────────────────────────────────────────────────────────────────── docker exec -t zabbix-mysql mysql -uroot -pzabbixroot zabbix -e " SELECT '--- [userdirectory] ---' AS table_name; SELECT userdirectoryid, name, idp_type FROM userdirectory; SELECT '--- [userdirectory_ldap] ---' AS table_name; SELECT host, port, base_dn, search_attribute FROM userdirectory_ldap; SELECT '--- [settings (Auth Status)] ---' AS table_name; SELECT name, value_int, value_userdirectoryid FROM settings WHERE name IN ('authentication_type', 'userdirectoryid'); " [root@om01 zabbix]# docker exec -t zabbix-mysql mysql -uroot -pzabbixroot zabbix -e " > SELECT '--- [userdirectory] ---' AS table_name; > SELECT userdirectoryid, name, idp_type FROM userdirectory; > > SELECT '--- [userdirectory_ldap] ---' AS table_name; > SELECT host, port, base_dn, search_attribute FROM userdirectory_ldap; > > SELECT '--- [settings (Auth Status)] ---' AS table_name; > SELECT name, value_int, value_userdirectoryid FROM settings WHERE name IN ('authentication_type', 'userdirectoryid'); > " mysql: [Warning] Using a password on the command line interface can be insecure. +-------------------------+ | table_name | +-------------------------+ | --- [userdirectory] --- | +-------------------------+ +-----------------+----------+----------+ | userdirectoryid | name | idp_type | +-----------------+----------+----------+ | 1 | SASIO-AD | 1 | +-----------------+----------+----------+ +------------------------------+ | table_name | +------------------------------+ | --- [userdirectory_ldap] --- | +------------------------------+ +-------------+------+----------------+------------------+ | host | port | base_dn | search_attribute | +-------------+------+----------------+------------------+ | 172.26.4.43 | 389 | DC=sasio,DC=jp | sAMAccountName | +-------------+------+----------------+------------------+ +----------------------------------+ | table_name | +----------------------------------+ | --- [settings (Auth Status)] --- | +----------------------------------+ +---------------------+-----------+-----------------------+ | name | value_int | value_userdirectoryid | +---------------------+-----------+-----------------------+ | authentication_type | 1 | NULL | | userdirectoryid | 0 | 1 | +---------------------+-----------+-----------------------+ [root@om01 zabbix]# ──────────────────────────────────────────────────────────────────────────────────────── [root@om01 zabbix]# [root@om01 zabbix]# [root@om01 zabbix]# docker exec -t zabbix-mysql mysql -uzabbix -pzabbixpass zabbix -e " > SELECT > uig.name AS pattern, > r.name AS role, > ug.name AS zabbix_group > FROM userdirectory_idpgroup uig > JOIN role r ON uig.roleid = r.roleid > JOIN userdirectory_usrgrp uug ON uig.userdirectory_idpgroupid = uug.userdirectory_idpgroupid > JOIN usrgrp ug ON uug.usrgrpid = ug.usrgrpid;" mysql: [Warning] Using a password on the command line interface can be insecure. +---------+------------------+-----------------------+ | pattern | role | zabbix_group | +---------+------------------+-----------------------+ | * | Super admin role | Zabbix administrators | +---------+------------------+-----------------------+ [root@om01 zabbix]#