Zabbixベースのジョブ運用ツールJob Arranger for Zabbixを構築する

# Job Arrangerとは
大和総研のZabbixへのAdd-Onソフトウエア。
詳細は省きますが、エージェントレスでのジョブ実行機能もありDockerでの提供もあり構築の難易度も
そんな高くなくまた、Server、Manager、Monitor、Agentのパッケージ提供に関しては無償で手に入るので、
個人ユースでの構築運用のハードルがすごく低い製品です。
A-AUTO50やJS7、RunDeckも検討したのですがそれぞれそれなりの制限とかがあるので、個人使用では一番いいかもしれないです。

# 今回の構築するサーバ
今回は以下のZabbixサーバーで構築していきます
OS:Ubuntu Server 22.04
Zabbixバージョン:6.0.x系
Job Arranger Serverバージョン：6.1.0
今回対応OSの幅が広い6.1.0を選択

# Zabbixサーバ構築関連のメモ
詳細な構築方法は公式のマニュアルを見て構築していってください。
ただし、もしかしたら必要になるzabbix_getコマンドとzabbix_senderコマンドについては、
別途以下のコマンドでインストール必要があります。
```
apt install zabbix-get -y
apt install zabbix-sender -y
```
### Job Arranger用のユーザについて
構築後、Job Arranger用のユーザの作成が必要です。
AdminでJob Arrangerにログインしようとすると失敗しますので、別途Job Arranger用ユーザの作成をしてください。
権限周りは管理者の権限で大丈夫です。

# Job Arranger ManagerとJob Arranger Serverの構築
6.1.0のマニュアルについてですがJob Arranger Serverの構築に関する記載がないため、
6.0.0のマニュアルベースで構築しましたので、その時の苦悩も書いときます。

今回Ubuntu Serverでインストールしますが、いくつか必要なPHPのソフトウェアがあります。
Zabbixインストール時に入っているものもありますが、確認しておくといいです。
```
php-common
php-cli 
php-curl
php-mbstring
libapache2-mod-php
php-mysqlnd : MySQLをZabbixバックエンドDBとして使っている場合は必要
php-pgsql   : PostgreSQLをZabbixバックエンドDBとして使っている場合は必要
php-xml
php-json
```
このほかにmanagerのインストール時に依存関係でインストールがあった気がしますが、
何が必要か忘れてしまいましたすみません・・・

では、最初にmanagerのインストール作業をしていきます
1.wgetでdebパッケージをダウンロードする。
```
wget https://www.jobarranger.info/jaz/download/6.1.0/ubuntu/22.04/manager/jobarranger-manager_6.1.0-1+ubuntu22.04_amd64.deb
```
2.dpkg -iでインストールする.
この時依存関係でインストールに失敗する可能性があるので、依存関係で必要となったパッケージを
インストールしてから再度実行する。
```
dpkg -i jobarranger-manager_6.1.0-1+ubuntu22.04_amd64.deb
```
3.apache2を再起動する
```
systemctl restart apache2
```
4.JobArrangerManagerにアクセスする
以下のようなURLでManagerにアクセスする
http://IPorDOMAIN/jobarranger
この画面でセットアップを実行していく、
なお、DBの接続構成の画面なった際は以下の設定を行う
```
Database Type : MySQLをZabbixバックエンドDBとして使っている場合はMySQLを選択
　　　　　　　　 PostgreSQLをZabbixバックエンドDBとして使っている場合はPostgreSQLを選択
Database Host : Zabbixサーバと一緒にしている場合はlocalhostとする
Database Name : zabbix
User name : zabbix
Password : zabbixユーザのパスワード
```
次の画面でZabbixサーバのURLを入力する
例：http://IPorDOMAIN/zabbix

ログの場所ですが作成されていないため以下のように作成する
```
mkdir -m 755 /ver/log/jobarranger
chown www-data /ver/log/jobarranger

mkdir -m 755 /ver/log/jobarranger/jobarranger
chown www-data /ver/log/jobarranger/jobarranger
```
作成後以下のように設定する
```
Log file directory : /ver/log/jobarranger/jobarranger
Log file name : jobarg_manager.log
```
この後サマリ画面を表示された後、ログイン画面に行くので、作成したJob Arranger用ユーザでログインする。

jam-cleanup サービスを開始しておく。
```
systemctl start jam-cleanup.service
```

次はServerの構築を行う。

## Serverの構築
上でも書いた通り、今回構築する6.1.0はServerの方の構築マニュアルがないため、
6.0.0のマニュアルベースで構築していきます。

1.wgetでServerのdebパッケージをダウンロードする。
この時、Zabbixサーバで使っているバックエンドDBに合わせたパッケージをダウンロードすること
```
wget https://www.jobarranger.info/jaz/download/6.1.0/ubuntu/22.04/server/jobarranger-server-mysql_6.1.0-1+debian11_amd64.deb
```
2.ダウンロードしたパッケージをインストールする。
この時依存関係でインストールに失敗する可能性があるので、依存関係で必要となったパッケージを
インストールしてから再度実行する。
```
dpkg -i jobarranger-server-mysql_6.1.0-1+debian11_amd64.deb
```
3.初期データ登録
ZabbixデータベースにJob Arrangerの初期データをインポートする
SQLファイルは圧縮されているので解凍してからインポートする
```
cd /usr/share/doc/jobarranger-server-mysql/database/mysql/
gzip -d MySQL_JA_CREATE_TABLE.sql.gz
mysql -u zabbix -h localhost --database=zabbix -p < MySQL_JA_CREATE_TABLE.sql
cd /usr/share/doc/jobarranger-server-mysql/database/data/
gzip -d JA_INSERT_TABLE.sql.gz
/usr/share/doc/jobarranger-server-mysql/database/data# mysql -u zabbix -h localhost --database=zabbix -p < JA_INSERT_TABLE.sql
```
4.configファイルについて
serverとMonitorのconfigファイルについては設定ファイル名がマニュアルと違い、
設定完了後に起動させようとすると失敗します。
このため、この後の設定の投入の前にファイルをコピーしてリネームしてから設定を入れた方がいいです。
```
cp -p /etc/jobarranger/jobarg_server.debconf /etc/jobarranger/jobarg_server.conf
cp -p /etc/jobarranger/jobarg_monitor.debconf /etc/jobarranger/jobarg_monitor.conf
```
両方ともDBに関する設定を投入する。
なお、マニュアル上はDBpasswordは必須ではない扱いされているが念のため投入しておくこと

設定完了後、serverとmonitorを起動し、自動起動設定を入れたら完了。
```
systemctl start jobarg-server
systemctl start jobarg-monitor
systemctl enable jobarg-server
systemctl enable jobarg-monitor
```

# 参考にしたサイト
https://www.jobarranger.info/
https://www.jobarranger.info/jaz/download/6.1.0/manual/Installation%20Manual_JPN.pdf
https://www.jobarranger.info/document/doku.php?id=4.0:install:server:server
https://stackoverflow.com/questions/74550822/connection-to-database-zabbix-failed-1045-access-denied-for-user-zabbix
https://networkengineer.it-study.info/zabbix/zabbix-get-sender.html