DockerHUB のイメージで JobScheduker + Zabbix + MariaDB のテスト環境をつくり、HyclopsJobMonitoring を試してみます。
Postfix Configuration
---------------------
Please select the mail server configuration type that best meets your needs.
No configuration:
Should be chosen to leave the current configuration unchanged.
Internet site:
Mail is sent and received directly using SMTP.
Internet with smarthost:
Mail is received directly using SMTP or by running a utility such
as fetchmail. Outgoing mail is sent using a smarthost.
Satellite system:
All mail is sent to another machine, called a 'smarthost', for delivery.
Local only:
The only delivered mail is the mail for local users. There is no network.
1. No configuration 2. Internet Site 3. Internet with smarthost 4. Satellite system 5. Local only
General type of mail configuration: 5
The "mail name" is the domain name used to "qualify" _ALL_ mail addresses without a domain name. This includes mail to and from <root>: please do not make
your machine send out mail from root@example.org unless root@example.org has told you to.
This name will also be used by other programs. It should be the single, fully qualified domain name (FQDN).
Thus, if a mail address on the local host is foo@example.org, the correct value for this option would be example.org.
System mail name: example.local
コンテナ起動時に postfix と rsyslog が起動するようにします。
赤字が追加した行です。
[root@centos0702 sosjs10]# docker-compose exec js-master vi /opt/startup_scheduler.sh
[root@centos0702 sosjs10]# docker-compose exec js-master tail /opt/startup_scheduler.sh
sed -i -e "s/{{DB_SERVER_USER}}/$DB_SERVER_USER/g" /root/install/scheduler_install.xml
sed -i -e "s/{{DB_SERVER_PASSWORD}}/$DB_SERVER_PASSWORD/g" /root/install/scheduler_install.xml
sed -i -e "s/{{DB_SERVER_DATABASE}}/$DB_SERVER_DATABASE/g" /root/install/scheduler_install.xml
(cd /root/install; ./setup.sh -u scheduler_install.xml)
/etc/init.d/rsyslog start
/etc/init.d/postfix start
sleep infinity
コンテナを再起動します。
[root@centos0702 sosjs10]# docker-compose restart js-master
Restarting sosjs10_js-master_1 ... done
コンテナのログを確認します。正常だと以下のように表示されます。
[root@centos0702 sosjs10]# docker-compose logs js-master 2>&1 | tail
js-master_1 | libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd28ac7e000)
js-master_1 | libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd28a8d3000)
js-master_1 | libgcc_s.so.1 => /opt/jobscheduler/scheduler/lib/libgcc_s.so.1 (0x00007fd28a6bc000)
js-master_1 | /lib64/ld-linux-x86-64.so.2 (0x00007fd28c0ef000)
js-master_1 | Starting JobScheduler...
js-master_1 | [ Processing finished ]
js-master_1 | [ Writing the uninstaller data ... ]
js-master_1 | [ Automated installation done ]
js-master_1 | Starting enhanced syslogd: rsyslogd.
js-master_1 | Starting Postfix Mail Transport Agent: postfix.
hyclops_jm の修正
今回のDocker環境にあわせて hycrops_jm を修正します。
hyclops_jm.conf は以下のようにしました。
PostgreSQL ではなく MariaDB 用にしています。
[root@centos0702 sosjs10]# cat hyclops_jm-0.1.a/hyclops_jm.conf
# HyClops JobMonitoring user
jm_user = hyclops_jm
jm_passwd = hyclops_jm
# JobScheduler configuration
js_id = scheduler
js_user = jobscheduler
js_passwd = jobscheduler
js_host = sosjs10_js-master_1
js_port = 4444
# Zabbix configuration
zbx_server = sosjs10_zabbix-server_1
zbx_web = sosjs10_zabbix-web_1
zbx_login_user = Admin
zbx_login_passwd = zabbix
zbx_external_scripts_dir = /usr/lib/zabbix/externalscripts
# Database super user
db_user = root
db_passwd = p@ssw0rd
db_host = sosjs10_db_1
db_port = 3306
インストール用の fabfile.py は以下のとおり。けっこう修正しました。
[root@centos0702 sosjs10]# cat hyclops_jm-0.1.a/fabfile.py
#!/usr/bin/env python
#-*- coding: utf-8 -*
"""
HyClop JobMonitoring install script
Usage : fab -c hyclops_jm.conf install
"""
#############################################################
# Import modules and initial settings
#############################################################
from fabric.api import lcd, cd, local, run, env, hide, sudo
import sys, os, os.path, time, fnmatch
#from datetime import datetime as dt
#from datetime import datetime
# local(コンテナ内)でコマンドを実行するのでコメントアウト。
#env.hosts = ['192.168.56.101']
#env.user = 'root'
#env.password = 'p@ssw0rd'
#============================================================
# private functions
#============================================================
def _set_user(user, passwd):
env.jm_user = user
env.jm_passwd = passwd
def _allow_error():
env.warn_only = True
def _deny_error():
env.warn_only = False
# JobSchedulerからメールを受信するユーザを作成する
def _add_user(user, passwd):
# Add hyclops jm user
_allow_error()
res = local('id %s' % user)
_deny_error()
if res.return_code != 0:
local('useradd %s -p"%s"' %(user, passwd))
# root で JobScheduler を実行するのでsudo設定しない
#def _sudo_to_user(user):
# _allow_error()
# res = local('grep %s /etc/sudoers || grep -r %s /etc/sudoers.d' % (user, user))
# _deny_error()
# if res.return_code != 0:
# local('echo "%s ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/%s' % (user, user))
# local('echo "Defaults:%s !requiretty,env_reset" >> /etc/sudoers.d/%s' % (user, user))
#
# env.jm_user がメールを受信したらシェルを実行するように設定する
def _setup_postfix():
_allow_error()
res = local('grep %s /etc/aliases' % env.jm_user)
_deny_error()
if res.return_code != 0:
local('echo "%s: | \\"/usr/local/sbin/hyclops_jm_mail.sh\\"" >> /etc/aliases' % env.jm_user)
local('newaliases')
# MariaDBにシステム情報を登録する
def _setup_db():
sqls = ["CREATE TABLE sysinfo (name text,value text);",
"CREATE TABLE jobid_tbl (job text,lastid text);",
"GRANT ALL PRIVILEGES ON %s.* TO '%s'@'%%';" % (env.jm_user,env.js_user),
"FLUSH PRIVILEGES;",
"INSERT INTO sysinfo (name,value) VALUES ('jos_server','%s');" % env.js_host,
"INSERT INTO sysinfo (name,value) VALUES ('jos_port','%s');" % env.js_port,
"INSERT INTO sysinfo (name,value) VALUES ('zbx_server','%s');" % env.zbx_server,
"INSERT INTO sysinfo (name,value) VALUES ('zbx_web','%s');" % env.zbx_web,
"INSERT INTO sysinfo (name,value) VALUES ('zbx_login','%s');" % env.zbx_login_user,
"INSERT INTO sysinfo (name,value) VALUES ('zbx_pass','%s');" % env.zbx_login_passwd,
"INSERT INTO sysinfo (name,value) VALUES ('jos_timeout','3');"]
mysql = "mysql --user=%s --password=%s --host=%s --port=%s -e" % (env.db_user, env.db_passwd, env.db_host, env.db_port)
_allow_error()
local("%s 'DROP DATABASE %s'" % (mysql, env.jm_user))
_deny_error()
local("%s 'CREATE DATABASE %s'" % (mysql, env.jm_user))
for sql in sqls:
mysql = "mysql --user=%s --password=%s --host=%s --port=%s --database=%s -e" % (env.db_user, env.db_passwd, env.db_host, env.db_port, env.jm_user)
local("%s \"%s\"" % (mysql, sql))
# スクリプトを配置する。なお、環境に合わせて修正
def _setup_scripts():
tmpl_name = 'hyclops_jm_template.xml'
log_dir = '/var/log/hyclops_jm'
js_home = '/root'
jm_home = "%s/hyclops_jm" % js_home
js_data = "/opt/jobscheduler/data/%s" % env.js_id
js_bin = "/opt/jobscheduler/%s/bin" % env.js_id
local("mkdir -p %s" % log_dir)
local("mkdir -p %s/live" % jm_home)
local("cp %s %s/" % (tmpl_name, jm_home))
local("sed -e 's/HYCLOPS_JM_USER/%s/g' modules/scripts/fabfile.py > %s/fabfile.py" % (env.js_user, jm_home))
local("sed -i 's/HYCLOPS_JM_DB/%s/g' %s/fabfile.py" % (env.jm_user, jm_home))
local("sed -i 's/HYCLOPS_JM_PASSWORD/%s/g' %s/fabfile.py" % (env.js_passwd, jm_home))
local("sed -i 's/HYCLOPS_JM_HOST/%s/g' %s/fabfile.py" % (env.db_host, jm_home))
local("sed -i 's/HYCLOPS_JM_PORT/%s/g' %s/fabfile.py" % (env.db_port, jm_home))
local("chown -R %s:%s %s" % (env.js_user, env.js_user, log_dir))
local("chown -R %s:%s %s" % (env.js_user, env.js_user, jm_home))
local("sed -e 's|HYCLOPS_JM_HOME|%s|g' modules/scripts/hyclops_jm > /usr/local/sbin/hyclops_jm" % jm_home)
local("sed -i 's|HYCLOPS_JS_BIN|%s|g' /usr/local/sbin/hyclops_jm" % js_bin)
local("sed -e 's/HYCLOPS_ZBX_SERVER/%s/g' modules/scripts/hyclops_jm_mail.sh > /usr/local/sbin/hyclops_jm_mail.sh" % env.zbx_server)
local("sed -i 's/HYCLOPS_JS_SERVER/%s/g' /usr/local/sbin/hyclops_jm_mail.sh" % env.js_host)
local("chown %s:%s /usr/local/sbin/hyclops_jm*" % (env.js_user, env.js_user))
local("chmod +x /usr/local/sbin/hyclops_jm*")
local("mkdir -p %s/config/live/hyclops_jm" % js_data)
local("chown %s:%s %s/config/live/hyclops_jm" % (env.js_user, env.js_user, js_data))
files = local("cd modules; find live -type f", capture=True)
for file in files.split('\n'):
local("sed -e 's/HYCLOPS_JM_USER/%s/g' modules/%s > %s/config/%s" % (env.js_user, file, js_data, file))
local("sed -i 's|HYCLOPS_JS_BIN|%s|g' %s/config/%s" % (js_bin, js_data, file))
local("sed -i 's|HYCLOPS_JM_HOME|%s|g' %s/config/%s" % (jm_home, js_data, file))
# JobSchedulerでジョブが異常終了したらメール送信するように設定する
# scheduler_install.xml で設定するので、以下は実行しない
#def _setup_jobscheduler():
# js_data = "/opt/jobscheduler/data/%s" % (env.js_id)
#
# _allow_error()
# res = local('grep %s %s/config/factory.ini' % (env.jm_user, js_data))
# _deny_error()
# if res.return_code != 0:
# current_mails = local('grep log_mail_to %s/config/factory.ini' % js_data)
# local("sed -i 's/log_mail_to.*=/log_mail_to = %s@localhost,/g' %s/config/factory.ini" % (env.jm_user, js_data))
#============================================================
# public functions
#============================================================
def install(user = 'hyclops_jm', passwd = 'hyclops_jm'):
if 'js_user' not in env:
print 'Usage: fab -c hyclops_jm.conf install'
return False
_deny_error()
_set_user(user, passwd)
_add_user(user, passwd)
_add_user(env.js_user, env.js_passwd)
# _sudo_to_user(env.js_user)
_setup_postfix()
# _setup_jobscheduler()
_setup_db()
_setup_scripts()
print "================================================================"
print "= Thank you for installing HyClops JM!! ="
print "= You can monitor JobScheduler's job using Zabbix from now on. ="
print "= Please access the Zabbix web interface and enjoy monitoring. ="
print "= - example: http://your-domain/zabbix ="
print "================================================================"
hyclops_jm_template.xml は変更なしで使用します。
modules/live のジョブ定義はパスなどを修正しています。
オリジナルとの差分は以下のとおり。
[root@centos0702 sosjs10]# diff -r hyclops_jm-0.1.a/modules/live hyclops_jm-0.1.0/modules/live
diff -r hyclops_jm-0.1.a/modules/live/hyclops_jm/HyClops_JM_Trigger_ret.job.xml hyclops_jm-0.1.0/modules/live/hyclops_jm/HyClops_JM_Trigger_ret.job.xml
8c8
< export JM_HOME="HYCLOPS_JM_HOME"
---
> export JM_HOME="/home/scheduler/hyclops_jm"
diff -r hyclops_jm-0.1.a/modules/live/hyclops_jm/HyClops_JM_Trigger_switch.job.xml hyclops_jm-0.1.0/modules/live/hyclops_jm/HyClops_JM_Trigger_switch.job.xml
19c19
< export JM_HOME="HYCLOPS_JM_HOME"
---
> export JM_HOME="/home/scheduler/hyclops_jm"
diff -r hyclops_jm-0.1.a/modules/live/hyclops_jm/HyClops_JM_sync.job.xml hyclops_jm-0.1.0/modules/live/hyclops_jm/HyClops_JM_sync.job.xml
9,10c9,10
< . HYCLOPS_JS_BIN/jobscheduler_environment_variables.sh
< export JM_HOME="HYCLOPS_JM_HOME"
---
> . /opt/sos-berlin.com/jobscheduler/HYCLOPS_JM_USER/bin/jobscheduler_environment_variables.sh
> export JM_HOME="/home/HYCLOPS_JM_USER/hyclops_jm"
diff -r hyclops_jm-0.1.a/modules/live/hyclops_jm/target_zabbix_host.xml hyclops_jm-0.1.0/modules/live/hyclops_jm/target_zabbix_host.xml
3c3
< <param name="zabbix_host" value="sosjs10_zabbix-server_1"/>
---
> <param name="zabbix_host" value="localhost"/>
modules/scripts も修正しています。
オリジナルとの差分は以下のとおり。
[root@centos0702 sosjs10]# diff -r hyclops_jm-0.1.a/modules/scripts hyclops_jm-0.1.0/modules/scripts
diff -r hyclops_jm-0.1.a/modules/scripts/fabfile.py hyclops_jm-0.1.0/modules/scripts/fabfile.py
31,32c31,32
< from dateutil import parser
< from pytz import timezone
---
> from datetime import datetime as dt
> from datetime import datetime
55,56c55,56
< # For MySQL
< import MySQLdb
---
> # For PostgreSQL
> import psycopg2
66d65
< env.zbx_web="localhost"
72,76c71,75
< env.db_name='HYCLOPS_JM_DB'
< env.db_user='HYCLOPS_JM_USER'
< env.db_password='HYCLOPS_JM_PASSWORD'
< env.db_host='HYCLOPS_JM_HOST'
< env.db_port=HYCLOPS_JM_PORT
---
> env.psqldatabase='hyclops_jm'
> env.psqluser='HYCLOPS_JM_USER'
> env.psqlpassword='HYCLOPS_JM_USER'
> env.psqlhost='127.0.0.1'
> env.psqlport=5432
129c128
< DBからシステム情報を取得
---
> PostgreSQLからシステム情報を取得
138,143c137,142
< connection = MySQLdb.connect(
< db = env.db_name,
< user = env.db_user,
< passwd = env.db_password,
< host = env.db_host,
< port = env.db_port)
---
> connection = psycopg2.connect(
> database = env.psqldatabase,
> user = env.psqluser,
> password = env.psqlpassword,
> host = env.psqlhost,
> port = env.psqlport)
159,160d157
< elif row[0] == 'zbx_web':
< env.zbx_web=row[1]
196,197c193,194
< webservice = httplib.HTTP("%s" % (env.zbx_web) )
< webservice.putrequest("POST", "/api_jsonrpc.php")
---
> webservice = httplib.HTTP("%s" % (env.zbx_server) )
> webservice.putrequest("POST", "/zabbix/api_jsonrpc.php")
1290,1295c1287,1292
< connection = MySQLdb.connect(
< db = env.db_name,
< user = env.db_user,
< passwd = env.db_password,
< host = env.db_host,
< port = env.db_port)
---
> connection = psycopg2.connect(
> database = env.psqldatabase,
> user = env.psqluser,
> password = env.psqlpassword,
> host = env.psqlhost,
> port = env.psqlport)
1363c1360,1361
< for e in root.findall('.//job'): # ジョブの情報を取得
---
> org_time = dt.strptime('1970-01-01 07:00:00','%Y-%m-%d %H:%M:%S')
> for e in root.findall('answer/state/jobs/job/'): # ジョブの情報を取得
1381c1379
< for elem in root.findall('.//history.entry'):
---
> for elem in root.findall('answer/history/history.entry/'):
1388,1389c1386,1387
< start_time = parser.parse(t).astimezone(timezone('Asia/Tokyo'))
< start_time_ut = int(time.mktime(start_time.timetuple()))
---
> start_time = dt.strptime(t, '%Y-%m-%dT%H:%M:%S.000Z')
> start_time_ut = int(time.mktime(time.strptime(t, '%Y-%m-%dT%H:%M:%S.000Z')))
1391,1392c1389,1390
< end_time = parser.parse(t).astimezone(timezone('Asia/Tokyo'))
< end_time_ut = int(time.mktime(end_time.timetuple()))
---
> end_time = dt.strptime(t, '%Y-%m-%dT%H:%M:%S.000Z')
> end_time_ut = int(time.mktime(time.strptime(t, '%Y-%m-%dT%H:%M:%S.000Z')))
1429c1427
< cmd ="echo '%s' | /usr/bin/zabbix_sender -z %s -T -i -" % ( "\n".join(elapses), env.zbx_server)
---
> cmd ="echo -e '%s' | /usr/bin/zabbix_sender -z %s -T -i -" % ( "\n".join(elapses), env.zbx_server)
diff -r hyclops_jm-0.1.a/modules/scripts/hyclops_jm hyclops_jm-0.1.0/modules/scripts/hyclops_jm
5,6c5,6
< . HYCLOPS_JS_BIN/jobscheduler_environment_variables.sh
< export JM_HOME="HYCLOPS_JM_HOME"
---
> . /opt/sos-berlin.com/jobscheduler/HYCLOPS_JM_USER/bin/jobscheduler_environment_variables.sh
> export JM_HOME="/home/HYCLOPS_JM_USER/hyclops_jm"
diff -r hyclops_jm-0.1.a/modules/scripts/hyclops_jm_mail.sh hyclops_jm-0.1.0/modules/scripts/hyclops_jm_mail.sh
4,5c4,5
< ZBX_HOST="HYCLOPS_ZBX_SERVER"
< ZBX_NAME="HYCLOPS_JS_SERVER"
---
> ZBX_HOST="127.0.0.1"
> ZBX_NAME="localhost"
主な修正ポイントは以下のとおり。
・MariaDB対応
・ZabbixServerとZabbixWebインターフェースにコンテナを分離したことへの対応
・Zabbix WebインターフェースのURLを変更
・JobSchedulerから取得したジョブ履歴の時間(UTC)を Asia/Tokyo に変換
・echo の "-e " を引数として認識しないので削除
hycrops_jm のインストール
上記で修正した hyclops_jm を JobSchedulerコンテナにコピーします。
[root@centos0702 sosjs10]# docker cp ./hyclops_jm-0.1.a sosjs10_js-master_1:/root/.
hyclops_jm に必要なパッケージをインストールします。
[root@centos0702 sosjs10]# docker-compose exec js-master apt-get install fabric python-mysqldb mysql-client python-tz python-dateutil
zabbix_sendarコマンド をインストールします。
[root@centos0702 sosjs10]# docker-compose exec js-master curl -L -o /root/zabbix-sender.deb http://repo.zabbix.com/zabbix/3.2/debian/pool/main/z/zabbix/zabbix-sender_3.2.0-1+jessie_amd64.deb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 255k 100 255k 0 0 277k 0 --:--:-- --:--:-- --:--:-- 277k
[root@centos0702 sosjs10]# docker-compose exec js-master dpkg -i /root/zabbix-sender.deb
Selecting previously unselected package zabbix-sender.
(Reading database ... 20493 files and directories currently installed.)
Preparing to unpack /root/zabbix-sender.deb ...
Unpacking zabbix-sender (1:3.2.0-1+jessie) ...
Setting up zabbix-sender (1:3.2.0-1+jessie) ...
hyclops_jm のインストールスクリプトを実行します。
[root@centos0702 sosjs10]# docker-compose exec js-master /bin/bash -c "cd /root/hyclops_jm-0.1.a ; fab -c hyclops_jm.conf install"
[localhost] local: id hyclops_jm
id: hyclops_jm: no such user
Warning: local() encountered an error (return code 1) while executing 'id hyclops_jm'
[localhost] local: useradd hyclops_jm -p"hyclops_jm"
[localhost] local: id jobscheduler
id: jobscheduler: no such user
Warning: local() encountered an error (return code 1) while executing 'id jobscheduler'
[localhost] local: useradd jobscheduler -p"jobscheduler"
[localhost] local: grep hyclops_jm /etc/aliases
Warning: local() encountered an error (return code 1) while executing 'grep hyclops_jm /etc/aliases'
[localhost] local: echo "hyclops_jm: | \"/usr/local/sbin/hyclops_jm_mail.sh\"" >> /etc/aliases
[localhost] local: newaliases
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 -e 'DROP DATABASE hyclops_jm'
ERROR 1008 (HY000) at line 1: Can't drop database 'hyclops_jm'; database doesn't exist
Warning: local() encountered an error (return code 1) while executing 'mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 -e 'DROP DATABASE hyclops_jm''
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 -e 'CREATE DATABASE hyclops_jm'
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "CREATE TABLE sysinfo (name text,value text);"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "CREATE TABLE jobid_tbl (job text,lastid text);"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "GRANT ALL PRIVILEGES ON hyclops_jm.* TO 'jobscheduler'@'%';"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "FLUSH PRIVILEGES;"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "INSERT INTO sysinfo (name,value) VALUES ('jos_server','sosjs10_js-master_1');"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "INSERT INTO sysinfo (name,value) VALUES ('jos_port','4444');"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "INSERT INTO sysinfo (name,value) VALUES ('zbx_server','sosjs10_zabbix-server_1');"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "INSERT INTO sysinfo (name,value) VALUES ('zbx_web','sosjs10_zabbix-web_1');"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "INSERT INTO sysinfo (name,value) VALUES ('zbx_login','Admin');"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "INSERT INTO sysinfo (name,value) VALUES ('zbx_pass','zabbix');"
[localhost] local: mysql --user=root --password=p@ssw0rd --host=sosjs10_db_1 --port=3306 --database=hyclops_jm -e "INSERT INTO sysinfo (name,value) VALUES ('jos_timeout','3');"
[localhost] local: mkdir -p /var/log/hyclops_jm
[localhost] local: mkdir -p /root/hyclops_jm/live
[localhost] local: cp hyclops_jm_template.xml /root/hyclops_jm/
[localhost] local: sed -e 's/HYCLOPS_JM_USER/jobscheduler/g' modules/scripts/fabfile.py > /root/hyclops_jm/fabfile.py
[localhost] local: sed -i 's/HYCLOPS_JM_DB/hyclops_jm/g' /root/hyclops_jm/fabfile.py
[localhost] local: sed -i 's/HYCLOPS_JM_PASSWORD/jobscheduler/g' /root/hyclops_jm/fabfile.py
[localhost] local: sed -i 's/HYCLOPS_JM_HOST/sosjs10_db_1/g' /root/hyclops_jm/fabfile.py
[localhost] local: sed -i 's/HYCLOPS_JM_PORT/3306/g' /root/hyclops_jm/fabfile.py
[localhost] local: chown -R jobscheduler:jobscheduler /var/log/hyclops_jm
[localhost] local: chown -R jobscheduler:jobscheduler /root/hyclops_jm
[localhost] local: sed -e 's|HYCLOPS_JM_HOME|/root/hyclops_jm|g' modules/scripts/hyclops_jm > /usr/local/sbin/hyclops_jm
[localhost] local: sed -i 's|HYCLOPS_JS_BIN|/opt/jobscheduler/scheduler/bin|g' /usr/local/sbin/hyclops_jm
[localhost] local: sed -e 's/HYCLOPS_ZBX_SERVER/sosjs10_zabbix-server_1/g' modules/scripts/hyclops_jm_mail.sh > /usr/local/sbin/hyclops_jm_mail.sh
[localhost] local: sed -i 's/HYCLOPS_JS_SERVER/sosjs10_js-master_1/g' /usr/local/sbin/hyclops_jm_mail.sh
[localhost] local: chown jobscheduler:jobscheduler /usr/local/sbin/hyclops_jm*
[localhost] local: chmod +x /usr/local/sbin/hyclops_jm*
[localhost] local: mkdir -p /opt/jobscheduler/data/scheduler/config/live/hyclops_jm
[localhost] local: chown jobscheduler:jobscheduler /opt/jobscheduler/data/scheduler/config/live/hyclops_jm
[localhost] local: cd modules; find live -type f
[localhost] local: sed -e 's/HYCLOPS_JM_USER/jobscheduler/g' modules/live/hyclops_jm/HyClops_JM_Trigger_Switch_Template.job_chain.xml > /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_Trigger_Switch_Template.job_chain.xml
[localhost] local: sed -i 's|HYCLOPS_JS_BIN|/opt/jobscheduler/scheduler/bin|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_Trigger_Switch_Template.job_chain.xml
[localhost] local: sed -i 's|HYCLOPS_JM_HOME|/root/hyclops_jm|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_Trigger_Switch_Template.job_chain.xml
[localhost] local: sed -e 's/HYCLOPS_JM_USER/jobscheduler/g' modules/live/hyclops_jm/HyClops_JM_Trigger_ret.job.xml > /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_Trigger_ret.job.xml
[localhost] local: sed -i 's|HYCLOPS_JS_BIN|/opt/jobscheduler/scheduler/bin|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_Trigger_ret.job.xml
[localhost] local: sed -i 's|HYCLOPS_JM_HOME|/root/hyclops_jm|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_Trigger_ret.job.xml
[localhost] local: sed -e 's/HYCLOPS_JM_USER/jobscheduler/g' modules/live/hyclops_jm/HyClops_JM_Trigger_switch.job.xml > /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_Trigger_switch.job.xml
[localhost] local: sed -i 's|HYCLOPS_JS_BIN|/opt/jobscheduler/scheduler/bin|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_Trigger_switch.job.xml
[localhost] local: sed -i 's|HYCLOPS_JM_HOME|/root/hyclops_jm|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_Trigger_switch.job.xml
[localhost] local: sed -e 's/HYCLOPS_JM_USER/jobscheduler/g' modules/live/hyclops_jm/HyClops_JM_jobelapse.job.xml > /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_jobelapse.job.xml
[localhost] local: sed -i 's|HYCLOPS_JS_BIN|/opt/jobscheduler/scheduler/bin|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_jobelapse.job.xml
[localhost] local: sed -i 's|HYCLOPS_JM_HOME|/root/hyclops_jm|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_jobelapse.job.xml
[localhost] local: sed -e 's/HYCLOPS_JM_USER/jobscheduler/g' modules/live/hyclops_jm/HyClops_JM_sync.job.xml > /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_sync.job.xml
[localhost] local: sed -i 's|HYCLOPS_JS_BIN|/opt/jobscheduler/scheduler/bin|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_sync.job.xml
[localhost] local: sed -i 's|HYCLOPS_JM_HOME|/root/hyclops_jm|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/HyClops_JM_sync.job.xml
[localhost] local: sed -e 's/HYCLOPS_JM_USER/jobscheduler/g' modules/live/hyclops_jm/target_zabbix_host.xml > /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/target_zabbix_host.xml
[localhost] local: sed -i 's|HYCLOPS_JS_BIN|/opt/jobscheduler/scheduler/bin|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/target_zabbix_host.xml
[localhost] local: sed -i 's|HYCLOPS_JM_HOME|/root/hyclops_jm|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/target_zabbix_host.xml
[localhost] local: sed -e 's/HYCLOPS_JM_USER/jobscheduler/g' modules/live/hyclops_jm/test_user_job.job.xml > /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/test_user_job.job.xml
[localhost] local: sed -i 's|HYCLOPS_JS_BIN|/opt/jobscheduler/scheduler/bin|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/test_user_job.job.xml
[localhost] local: sed -i 's|HYCLOPS_JM_HOME|/root/hyclops_jm|g' /opt/jobscheduler/data/scheduler/config/live/hyclops_jm/test_user_job.job.xml
================================================================
= Thank you for installing HyClops JM!! =
= You can monitor JobScheduler's job using Zabbix from now on. =
= Please access the Zabbix web interface and enjoy monitoring. =
= - example: http://your-domain/zabbix =
================================================================
Done.
JOC を見ると、hyclops_jm のジョブが追加されているのがわかります。
Zabbix の画面で、[設定] > [ホスト] を見ると、JobScheduler のホスト名(sosjs10_js-master-1)が登録されています。
sosjs10_js-master_1 のIPアドレスが間違っているので修正します。
ホスト名をクリックすると、下図の画面になるので、[ホスト]名を入力して[DNS]を選択し、[更新]ボタンをクリックします。
hyclops_jm の動作確認(ジョブ実行時間)
ジョブの実行時間が Zabbix に記録されているか確認します。
[監視データ] > [最新データ] で遷移して、[ホスト]に "sosjs10_js-master_1" を入力し、[ヒストリがないアイテムを表示]のチェックを外して、[適用]ボタンをクリックします。
下図のようにジョブの一覧が表示されたら、実行時間が記録されています。
[グラフ]をクリックすると、ジョブの実行時間を下図のようにグラフで見ることができます。
hyclops_jm の動作確認(ジョブ異常終了の通知)
ジョブの異常終了がZabbixに通知されるか試します。
まず、異常終了するジョブを登録します。
[root@centos0702 sosjs10]# mkdir ./data/sosjs/config/live/test
[root@centos0702 sosjs10]# vi ./data/sosjs/config/live/test/job01.job.xml
[root@centos0702 sosjs10]# cat ./data/sosjs/config/live/test/job01.job.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<job order="no">
<script language="shell">
<![CDATA[
echo "error"
exit 1
]]>
</script>
<run_time />
</job>
JOCで実行して、異常終了させます。
Zabbixの画面で、[監視データ] > [障害] を見ると、ジョブの異常終了が通知されていました。