━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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-server)：
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


接続元の既存コンテナ(zabbix-web)：
①Manager
→ジョブを実行させる機能そのものの「司令塔（土台）」
https://www.jobarranger.info/download/7.2.1//Manager/jobarranger-manager-7.2.1-1.el9.x86_64.rpm

18-2.個別のコンテナでの対応
②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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2.データベースまたテーブルの作成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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は別で問題ありません。」

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. ログから見る「実効時間」の分析
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ログの時間軸を整理すると、以下のようになっています。

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分 かかっています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4. 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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. DockerNetworkの作成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
まず、コンテナが通信するためのネットワークと、データを保存するためのディレクトリを作成します。

(1).ネットワークの事前作成（※かなり重要）
# ネットワークがない場合は作成（すでにある場合はエラーになりますが無視してOK）
docker network create monitor_net
docker network create gitlab_net
docker network create mail_net

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6. Nginxかつサーバー証明書の格納先の準備
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(1).フォルダの有無の確認
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]#

(2).ディレクトリの作成
mkdir -p /Container/cert
mkdir -p /Container/nginx/conf.d
mkdir -p /Container/nginx/logs

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
7. Zabbixコンテナのコードの格納先の準備
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(1).ディレクトリの一括作成
mkdir -p /Container/zabbix/mysql/data
mkdir -p /Container/zabbix/mysql/conf.d

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
8. Nginxコンテナの再構築情報のコンテナの作成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
nano /Container/nginx/compose.yml

[root@om01 zabbix]# 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 zabbix]#
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
9. 設定ファイルの作成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
以下の内容で各設定ファイルを作成・配置してください。
nano /Container/nginx/conf.d/zabbix.conf

[root@om01 zabbix]# 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:80;
        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 zabbix]#

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
10. 事前準備として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 ~]#

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
11.  事前準備として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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
12. 事前準備として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]#


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
13. Zabbixコンテナの構築情報
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
nano /Container/zabbix/compose.yml

[root@om01 zabbix]# 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-apache-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 zabbix]#

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14.コンテナの構築の実施
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
cd /Container/zabbix;pwd

docker compose up -d


https://zabbix.sasio.jp/zabbix.php?action=authentication.edit

Enable JIT provisioningで有効→無効→有効

techopでログインができるyようになった

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
15.server-common.confの設定追加 ★検証中ですが不要なかも
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

cat -n /etc/nginx/includes/server-common.conf | grep -A 1 "jobarranger"

location ~* \.(woff|woff2|ttf|otf)$ {
    access_log off;
    expires 30d;
}


# --------------- JobArranger Manager UI ---------------
# --- JobArranger Manager UI ---
location = /jobarranger/redirect {
    return 302 https://zabbix.sasio.jp/jobarranger/ui/public/index.html$is_args$args;
}

location /jobarranger/ {
    root /usr/share/zabbix;
    index index.html;
    try_files $uri $uri/ /jobarranger/ui/public/index.html;
}

location ~ ^/jobarranger/api/.*\.php$ {
    root /usr/share/zabbix;
    fastcgi_pass unix:/tmp/php-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /usr/share/zabbix/jobarranger/api/app/index.php;
}

location ~ ^/jobarranger/ui/public/config/.*$ {
    root /usr/share/zabbix;
}

location ~ ^/jobarranger/api/.*$ {
    root /usr/share/zabbix;
    fastcgi_pass unix:/tmp/php-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /usr/share/zabbix/jobarranger/api/app/index.php;
    fastcgi_param DOCUMENT_ROOT /usr/share/zabbix/jobarranger/api/app;
}

location ~ /jobarranger/api/app/ { }
# --------------------------------------------------------------

location ~ /(app\/|conf[^\.]|include\/|local\/|locale\/|vendor\/) {
    deny all;
    return 404;
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16.モジュールの確認
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[root@om01 jobarg-build]# docker exec -it zabbix-web ls -la /usr/share/zabbix/jobarranger
total 144
drwxr-xr-x    1 nginx    nginx         4096 May  6 02:14 .
drwxr-xr-x    1 nginx    nginx         4096 May  6 01:20 ..
-rwxrwxrwx    1 nginx    nginx          108 Jan 26 03:26 .env
-rwxrwxrwx    1 nginx    nginx          593 Jan 26 03:26 .gitignore
-rwxrwxrwx    1 nginx    nginx           32 Jan 26 03:25 AUTHORS
-rwxrwxrwx    1 nginx    nginx        18332 Jan 26 03:26 COPYING
-rwxrwxrwx    1 nginx    nginx          122 Jan 26 03:26 ChangeLog
-rwxrwxrwx    1 nginx    nginx        19776 Jan 26 03:26 Makefile.am
-rwxrwxrwx    1 nginx    nginx           53 Jan 26 03:26 NEWS
-rwxrwxrwx    1 nginx    nginx         1124 Jan 26 03:26 README.md
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 conf
-rwxrwxrwx    1 nginx    nginx        11136 Jan 26 03:26 configure.ac
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 database
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 docker
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 frontend
-rwxrwxrwx    1 nginx    nginx         1249 Jan 26 03:26 go.mod
-rwxrwxrwx    1 nginx    nginx        10156 Jan 26 03:26 go.sum
-rwxrwxrwx    1 nginx    nginx          207 Jan 26 03:26 install-gen.sh
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 man
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 misc
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 specs
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 src
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 tools
drwxrwxrwx    1 nginx    nginx         4096 Jan 26 03:33 vendor
[root@om01 jobarg-build]#


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
18.追加オプションの新規設定(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

# 【追加】Zabbixモジュールのコピー
# ディレクトリが存在しない場合に備えて mkdir -p を入れています
RUN mkdir -p /usr/share/zabbix/modules/ && \
    cp -R /usr/share/jobarranger/modules/JazManager /usr/share/zabbix/modules/

# 3. Manager/API設定の修正 (jam.config.php の強制生成と適用)
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 "<?php " > "$CONFIG_PATH"; \
            echo "define('DB_HOST' , 'localhost');" >> "$CONFIG_PATH"; \
            echo "define('JA_DB_HOST' , 'localhost');" >> "$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_PASS' , '.*');/define('DB_PASS' , 'zabbixpass');/" "$CONFIG_PATH" && \
    sed -i "s/define('JA_DB_PASS' , '.*');/define('JA_DB_PASS' , 'zabbixpass');/" "$CONFIG_PATH" && \
    # 【最重要】API通信先とリダイレクト先（Network error対策）
    sed -i "s|define('ZBX_API_ROOT', '.*');|define('ZBX_API_ROOT', 'https://jobarg.sasio.jp/jobarranger/api');|g" "$CONFIG_PATH" && \
    sed -i "s|define('ZBX_REDIRECT_URL', '.*');|define('ZBX_REDIRECT_URL', 'https://jobarg.sasio.jp/jobarranger');|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設定 (Aliasと権限を一括設定)
RUN rm -f /etc/httpd/conf.d/jobarranger.conf && \
    echo 'Alias /jobarranger "/usr/share/jobarranger"' > /etc/httpd/conf.d/jobarranger.conf && \
    echo '<Directory "/usr/share/jobarranger">' >> /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 && \
    echo '</Directory>' >> /etc/httpd/conf.d/jobarranger.conf

# 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 ["sh", "-c", "\
    echo 'Setting permissions...'; \
    mkdir -p /usr/share/jobarranger/api/app/tmp; \
    chown -R apache:apache /usr/share/jobarranger; \
    chmod -R 777 /usr/share/jobarranger/api/app/tmp; \
    chown -R zabbix:zabbix /var/log/jobarranger /usr/local/bin/jobarranger/server_socks; \
    echo 'Updating Database...'; \
    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; \
    echo 'Starting Services...'; \
    /usr/local/sbin/jobarg_agentd; \
    /usr/local/sbin/jobarg_server -c /etc/jobarranger/jobarg_server.conf; \
    /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]#

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
19.追加オプションの新規設定(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 1443.5s (10/10) FINISHED                                                                    docker:default
 => [internal] load build definition from Dockerfile                                                               5.1s
 => => transferring dockerfile: 4.88kB                                                                             0.1s
 => [internal] load metadata for docker.io/library/almalinux:9                                                     7.8s
 => [internal] load .dockerignore                                                                                  6.3s
 => => transferring context: 2B                                                                                    0.0s
 => [1/6] FROM docker.io/library/almalinux:9@sha256:cefd7d6e6b713c8904f700554b9d1eccedf19251edd46b5560d9dee9cc6b  79.3s
 => => resolve docker.io/library/almalinux:9@sha256:cefd7d6e6b713c8904f700554b9d1eccedf19251edd46b5560d9dee9cc6bd  0.2s
 => => sha256:75ff8ef6fc06907460843cff1f59ebdc722ab275e27e28a61230ad181d6ecedf 71.28MB / 71.28MB                  15.8s
 => => extracting sha256:75ff8ef6fc06907460843cff1f59ebdc722ab275e27e28a61230ad181d6ecedf                         61.9s
 => [2/6] RUN dnf install -y epel-release &&     dnf install -y https://dev.mysql.com/get/mysql80-community-rel  674.7s
 => [3/6] RUN curl -L -O https://www.jobarranger.info/download/7.2.1/Server/jobarranger-server-7.2.1-1.el9.x86_6  82.8s
 => [4/6] RUN mkdir -p /usr/share/jobarranger/sql &&     cp /usr/share/doc/jobarranger-server/database/mysql/MySQ  2.9s
 => [5/6] RUN sed -i -e '/^DBType=/d'            -e '/^DBHost=/d'            -e '/^DBName=/d'            -e '/^DB  2.0s
 => [6/6] RUN sed -i -e '/^Server=/d'            -e '/^Hostname=/d' /etc/jobarranger/jobarg_agentd.conf &&     se  4.7s
 => exporting to image                                                                                           529.1s
 => => exporting layers                                                                                          272.3s
 => => exporting manifest sha256:35b4b399c4f51db156d83b0cee3a0793d7221987b5d1b8eac374c67fd56d3bae                  0.2s
 => => exporting config sha256:dd5f3e53ee06dc881a2b95f0b53ff5f3d29ff0aa3f938812bbc9ba8a753648e0                    0.1s
 => => exporting attestation manifest sha256:e072060484cff13410d4593d1e2cc8637430b87c6f31d195628fe6f87f311a2c      2.3s
 => => exporting manifest list sha256:e6b2e5edbbd10f66c61596e0d00e99f9a3a82ecbfcb2894f070bf79749bd5705             0.7s
 => => naming to docker.io/local/jobarg-server:7.2.1                                                               1.4s
 => => unpacking to docker.io/local/jobarg-server:7.2.1                                                          247.8s
[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 -f /Container/zabbix/jobarg-build/docker-compose-jobarg.yml up -d
[+] up 1/1
 ✔ Container jobarg-server Started                                                                                131.4s
[root@om01 jobarg-build]#

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
19.追加オプションのセットアップ(Job Arranger)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

https://jobarg.sasio.jp/jobarranger/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
20.新規コンテナ構築の起動確認と設定確認(Job Arranger)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

# 状態確認
docker ps -f name=jobarg-server

[root@om01 jobarg-build]# docker ps -f name=jobarg-server
CONTAINER ID   IMAGE                       COMMAND                   CREATED         STATUS         PORTS                                             NAMES
bf334a4c9335   local/jobarg-server:7.2.1   "sh -c '    echo 'Se…"   6 minutes ago   Up 6 minutes   0.0.0.0:10061->10061/tcp, [::]:10061->10061/tcp   jobarg-server
[root@om01 jobarg-build]#


────────────────────────────────────────────────────────────
[root@om01 jobarg-build]# docker exec -it jobarg-server rpm -qa | grep jobarranger
jobarranger-server-7.2.1-1.el9.x86_64
jobarranger-agentd-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]#


────────────────────────────────────────────────────────────
docker exec -it jobarg-server grep -E "DBHost|DBPort|DBUser|DBPassword|DBName|ListenPort|ListenIP" /etc/jobarranger/jobarg_server.conf

[root@om01 jobarg-build]#
[root@om01 jobarg-build]# docker exec -it jobarg-server grep -E "DBHost|DBPort|DBUser|DBPassword|DBName|ListenPort|ListenIP" /etc/jobarranger/jobarg_server.conf
### Option: DBHost
DBHost=zabbix-mysql
# DBHost=localhost
### Option: DBName
DBName=zabbix
# DBName=
### Option: DBUser
DBUser=zabbix
# DBUser=
### Option: DBPassword
DBPassword=zabbixpass
# DBPassword=
### Option: DBPasswordExternal
#        JAZ will get  Database password by running DBPasswordExternal's script on shell.
# DBPasswordExternal=
### Option: DBPort
DBPort=3306
# DBPort=3306
### Option: JazDBHost
JazDBHost=zabbix-mysql
# JazDBHost=localhost
### Option: JazDBName
JazDBName=zabbix
# JazDBName=
### Option: JazDBUser
JazDBUser=zabbix
# JazDBUser=
### Option: JazDBPassword
JazDBPassword=zabbixpass
# JazDBPassword=
### Option: JazDBPasswordExternal
#        JAZ will get  Database password by running JazDBPasswordExternal's script on shell.
# JazDBPasswordExternal=
### Option: JazDBPort
JazDBPort=3306
# JazDBPort=3306
#       verify_full - connect using TLS, verify certificate and verify that database identity specified by DBHost
#       verify_full - connect using TLS, verify certificate and verify that database identity specified by JazDBHost
### Option: ListenIP
ListenIP=0.0.0.0
# ListenIP=0.0.0.0
### Option: JaTrapperListenPort
# JaTrapperListenPort=10061
### Option: JaAgentListenPort
# JaAgentListenPort=10055
[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-server 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]#
