じっぱひとからげ

十把一絡げになんでもかんでもつづる。

Hinemos 5.0であそぼう!

運用監視ツールはOSSで置き換えできるのかといった議論が出てくるほど、OSS運用監視が注目されてきている*1。シェアの高いJP1はサポートが手厚いので、ビジネスにおいて止められない仕組みがJP1で動いているところをあえてOSSに置き換えて攻めようという力がはたらかない。

ジョブ管理について言えば、はっきり言っていまさらもう変えられないというのが正直なところだろう。でもきっとこれらは、さわったことがない漠然とした不安からくるものであって、使ってみればなんということはない。と感じられる部分もきっと多いはず。むしろ、OSSを使い倒して「運用監視ツールはわしらが育てた」といえるくらいになりたいものだ。

置き換えという観点で考えると、運用ツールのトップシェアを誇るJP1シリーズがフォローしているであろう①死活監視・通知、②稼働状況可視化、③ジョブ実行制御を実現できそうなHinemosをさわってみる。

f:id:jippahitokarage:20170101160400j:plain

実際に検証済み!OSS徹底比較(2)運用監視編【後編】:OSS運用監視ソフト 注目の10製品徹底比較 2016年版 (1/6) - @IT

Hinemosは3.xのときにさわったことがあったが、エンタープライズオプションは使ったことがない。最近洗練されてきたエンタープライズオプションを使うことでジョブフローがグラフィカルに見られたり、少しずつJP1に近づいているようである。

 

 

3  前提条件

3.1 システム構成

f:id:jippahitokarage:20170102094041p:plain

リリース 11_hinemos_documents_japanese 5.0_20160805 - Hinemos - OSDN

 

<構成>

  • マネージャ(jm01) 192.168.100.31
  • Webクライアント(wb01) 192.168.100.41
  • バッチサーバ (bt01) 192.168.100.51

ジョブマネージャ 兼 監視としてjm01、管理・監視の対象(エージェント)としてのバッチサーバbt01、Hinemosマネージャを操作するためのHinemos Webクライアントwb01の3台を構築する。

MacBookPro上でCentOS 7をここからダウンロードしてそれぞれの仮想マシンを立てる。Vagrantの導入についてはここでは言及しない。

$ vagrant box add CentOS7.0 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

ここからはHinemosの公式ドキュメント*2 のinstall.pdfに従う。手順書上は、マネージャ、エージェント、Webクライアントの幅優先探索で進んでいくが、便宜上、深さ優先探索に置き換えて説明する。

 

Hinemosマネージャの構築

3.2 マネージャサーバ

前提となるパッケージを確認する。

[root@jm01] # rpm -qa | grep java-1.7.0-openjdk

[root@jm01] # rpm -qa | grep rsyslog
rsyslog-7.4.7-7.el7_0.x86_64

[root@jm01] # rpm -qa | grep vim-common
vim-common-7.4.160-1.el7.x86_64

[root@jm01] # rpm -qa | grep net-snmp-utils

[root@jm01] # rpm -qa | grep sblim-wbemcli

足りないパッケージをインストールする。

[root@jm01] # yum install java-1.7.0-openjdk
(省略)

[root@jm01] # yum install java-1.7.0-openjdk-devel
(省略)

[root@jm01] # yum install net-snmp-utils
(省略)

[root@jm01] # yum install sblim-wbemcli
(省略)

 もう一度、パッケージがインストールされていることを確認する。

[root@jm01] # rpm -qa | grep java-1.7.0-openjdk
java-1.7.0-openjdk-headless-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-devel-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-1.7.0.121-2.6.8.0.el7_3.x86_64
[root@jm01] # rpm -qa | grep net-snmp-utils
net-snmp-utils-5.7.2-24.el7_2.1.x86_64
[root@jm01] # rpm -qa | grep sblim-wbemcli
sblim-wbemcli-1.6.2-10.el7.x86_64

4 マネージャサーバ

4.1 Hinemosマネージャのインストール

4.1.1インストーラの実行
インストール前にロケールを確認。

[root@jm01] # locale | grep LANG
LANG=ja_JP.UTF-8 

Hinemosマネージャのインストーラをダウンロードしてインストールする。

[root@jm01] # cd /tmp/
[root@jm01] # wget https://ja.osdn.net/dl/hinemos/hinemos-manager-5.0.3-1.el7.x86_64.rpm

[root@jm01] # rpm -ivh hinemos-manager-5.0.3-1.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
  1:hinemos-manager-0:5.0.3-1.el7    ################################# [100%]
Redirecting to /bin/systemctl restart  rsyslog.service
ln -s '/usr/lib/systemd/system/hinemos_manager.service' '/etc/systemd/system/multi-user.target.wants/hinemos_manager.service'
ln -s '/usr/lib/systemd/system/hinemos_pg.service' '/etc/systemd/system/multi-user.target.wants/hinemos_pg.service'

意図した通りの言語設定になっていることを確認する。

[root@jm01] # cat /opt/hinemos/etc/hinemos.cfg | grep LANG
export LANG=ja_JP.UTF-8

4.2 Hinemoマネージャの起動

4.2.1 起動方法

Hinemos Managerのサービスを起動してみる。CentOS 7からはserviceコマンドではなくsystemctlコマンドに置き換わっているが、公式手順ではserviceコマンドで書かれているのでその通りに従う。

[root@jm01] # service hinemos_manager start
Redirecting to /bin/systemctl start  hinemos_manager.service

Hinemos5.0.2の場合は何もエラーが出なければ起動OK。

4.2.2 起動の確認

Activeの行にactive(running)になっていること、Main PID行にjavaのプロセスIDとjavaのメッセージが表示されることを確認する。

<JVMの起動確認>

[root@jm01] # service hinemos_manager status
Redirecting to /bin/systemctl status hinemos_manager.service
hinemos_manager.service - Hinemos Manager
Loaded: loaded (/usr/lib/systemd/system/hinemos_manager.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2017-01-02 10:01:06 JST; 3min 32s ago
Process: 21305 ExecStop=/opt/hinemos/bin/jvm_stop.sh (code=exited, status=0/SUCCESS)
Process: 21400 ExecStart=/opt/hinemos/bin/jvm_start.sh -W (code=exited, status=0/SUCCESS)
Main PID: 21461 (java)
CGroup: /system.slice/hinemos_manager.service
└─21461 java -Djdk.xml.entityExpansionLimit=0 -javaagent:/opt/hinemos/lib...

1月 02 10:01:05 jm01 systemd[1]: Starting Hinemos Manager...
1月 02 10:01:05 jm01 jvm_start.sh[21400]: waiting for Java Virtual Machine startup...
1月 02 10:01:06 jm01 jvm_start.sh[21400]: Java Virtual Machine started (with -W ...n)
1月 02 10:01:06 jm01 systemd[1]: Started Hinemos Manager.
Hint: Some lines were ellipsized, use -l to show in full.

 <PostgreSQLの起動確認>

Activeの行にactive(running)になっていること、Main PID行にpostgreSQLのプロセスIDとpostgresのメッセージが表示されることを確認する。

[root@jm01] # service hinemos_pg status
Redirecting to /bin/systemctl status hinemos_pg.service
hinemos_pg.service - Hinemos PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/hinemos_pg.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2017-01-02 10:01:05 JST; 11min ago
Process: 21350 ExecStop=/opt/hinemos/postgresql/bin/pg_ctl stop -w -t ${PGTIMEOUT} -s -D ${PG_DATA} -m ${PGSHUTDOWNMODE} (code=exited, status=0/SUCCESS)
Process: 21388 ExecStart=/opt/hinemos/postgresql/bin/pg_ctl start -w -t ${PGTIMEOUT} -s -D ${PG_DATA} -l ${PGLOGFILE} (code=exited, status=0/SUCCESS)
Main PID: 21391 (postgres)
CGroup: /system.slice/hinemos_pg.service
├─21391 /opt/hinemos/postgresql/bin/postgres -D /opt/hinemos/var/data
├─21392 postgres: logger process
├─21394 postgres: checkpointer process
├─21395 postgres: writer process
├─21396 postgres: wal writer process
├─21397 postgres: autovacuum launcher process
├─21398 postgres: stats collector process
├─21486 postgres: hinemos hinemos 127.0.0.1(45457) idle
├─21488 postgres: hinemos hinemos 127.0.0.1(45458) idle
├─21490 postgres: hinemos hinemos 127.0.0.1(45459) idle
├─21492 postgres: hinemos hinemos 127.0.0.1(45460) idle
├─21494 postgres: hinemos hinemos 127.0.0.1(45461) idle
├─21496 postgres: hinemos hinemos 127.0.0.1(45462) idle
├─21498 postgres: hinemos hinemos 127.0.0.1(45463) idle
├─21500 postgres: hinemos hinemos 127.0.0.1(45464) idle
├─21502 postgres: hinemos hinemos 127.0.0.1(45465) idle
├─21504 postgres: hinemos hinemos 127.0.0.1(45466) idle
├─21506 postgres: hinemos hinemos 127.0.0.1(45467) idle
├─21508 postgres: hinemos hinemos 127.0.0.1(45468) idle
├─21510 postgres: hinemos hinemos 127.0.0.1(45469) idle
├─21512 postgres: hinemos hinemos 127.0.0.1(45470) idle
├─21514 postgres: hinemos hinemos 127.0.0.1(45471) idle
├─21516 postgres: hinemos hinemos 127.0.0.1(45472) idle
├─21518 postgres: hinemos hinemos 127.0.0.1(45473) idle
├─21520 postgres: hinemos hinemos 127.0.0.1(45474) idle
├─21522 postgres: hinemos hinemos 127.0.0.1(45475) idle
├─21524 postgres: hinemos hinemos 127.0.0.1(45476) idle
├─21526 postgres: hinemos hinemos 127.0.0.1(45477) idle
├─21528 postgres: hinemos hinemos 127.0.0.1(45478) idle
├─21530 postgres: hinemos hinemos 127.0.0.1(45479) idle
├─21532 postgres: hinemos hinemos 127.0.0.1(45480) idle
├─21534 postgres: hinemos hinemos 127.0.0.1(45481) idle
├─21536 postgres: hinemos hinemos 127.0.0.1(45482) idle
├─21538 postgres: hinemos hinemos 127.0.0.1(45483) idle
├─21540 postgres: hinemos hinemos 127.0.0.1(45484) idle
├─21542 postgres: hinemos hinemos 127.0.0.1(45485) idle
├─21544 postgres: hinemos hinemos 127.0.0.1(45486) idle
├─21546 postgres: hinemos hinemos 127.0.0.1(45487) idle
├─21548 postgres: hinemos hinemos 127.0.0.1(45488) idle
├─21550 postgres: hinemos hinemos 127.0.0.1(45489) idle
├─21552 postgres: hinemos hinemos 127.0.0.1(45490) idle
├─21554 postgres: hinemos hinemos 127.0.0.1(45491) idle
├─21556 postgres: hinemos hinemos 127.0.0.1(45492) idle
├─21558 postgres: hinemos hinemos 127.0.0.1(45493) idle
├─21560 postgres: hinemos hinemos 127.0.0.1(45494) idle
├─21562 postgres: hinemos hinemos 127.0.0.1(45495) idle
├─21564 postgres: hinemos hinemos 127.0.0.1(45496) idle
├─21566 postgres: hinemos hinemos 127.0.0.1(45497) idle
├─21568 postgres: hinemos hinemos 127.0.0.1(45498) idle
├─21570 postgres: hinemos hinemos 127.0.0.1(45499) idle
├─21572 postgres: hinemos hinemos 127.0.0.1(45500) idle
├─21574 postgres: hinemos hinemos 127.0.0.1(45501) idle
├─21576 postgres: hinemos hinemos 127.0.0.1(45502) idle
├─21578 postgres: hinemos hinemos 127.0.0.1(45503) idle
├─21580 postgres: hinemos hinemos 127.0.0.1(45504) idle
├─21582 postgres: hinemos hinemos 127.0.0.1(45505) idle
├─21584 postgres: hinemos hinemos 127.0.0.1(45506) idle
├─21586 postgres: hinemos hinemos 127.0.0.1(45507) idle
├─21588 postgres: hinemos hinemos 127.0.0.1(45508) idle
├─21590 postgres: hinemos hinemos 127.0.0.1(45509) idle
├─21592 postgres: hinemos hinemos 127.0.0.1(45510) idle
├─21594 postgres: hinemos hinemos 127.0.0.1(45511) idle
├─21596 postgres: hinemos hinemos 127.0.0.1(45512) idle
├─21598 postgres: hinemos hinemos 127.0.0.1(45513) idle
├─21600 postgres: hinemos hinemos 127.0.0.1(45514) idle
├─21602 postgres: hinemos hinemos 127.0.0.1(45515) idle
├─21604 postgres: hinemos hinemos 127.0.0.1(45516) idle
├─21606 postgres: hinemos hinemos 127.0.0.1(45517) idle
├─21608 postgres: hinemos hinemos 127.0.0.1(45518) idle
├─21610 postgres: hinemos hinemos 127.0.0.1(45519) idle
├─21612 postgres: hinemos hinemos 127.0.0.1(45520) idle
├─21614 postgres: hinemos hinemos 127.0.0.1(45521) idle
├─21616 postgres: hinemos hinemos 127.0.0.1(45522) idle
├─21618 postgres: hinemos hinemos 127.0.0.1(45523) idle
├─21620 postgres: hinemos hinemos 127.0.0.1(45524) idle
├─21622 postgres: hinemos hinemos 127.0.0.1(45525) idle
├─21624 postgres: hinemos hinemos 127.0.0.1(45526) idle
├─21626 postgres: hinemos hinemos 127.0.0.1(45527) idle
├─21628 postgres: hinemos hinemos 127.0.0.1(45528) idle
├─21630 postgres: hinemos hinemos 127.0.0.1(45529) idle
├─21632 postgres: hinemos hinemos 127.0.0.1(45530) idle
├─21634 postgres: hinemos hinemos 127.0.0.1(45531) idle
├─21636 postgres: hinemos hinemos 127.0.0.1(45532) idle
├─21638 postgres: hinemos hinemos 127.0.0.1(45533) idle
├─21640 postgres: hinemos hinemos 127.0.0.1(45534) idle
├─21642 postgres: hinemos hinemos 127.0.0.1(45535) idle
├─21644 postgres: hinemos hinemos 127.0.0.1(45536) idle
├─21646 postgres: hinemos hinemos 127.0.0.1(45537) idle
├─21648 postgres: hinemos hinemos 127.0.0.1(45538) idle
├─21650 postgres: hinemos hinemos 127.0.0.1(45539) idle
├─21652 postgres: hinemos hinemos 127.0.0.1(45540) idle
├─21654 postgres: hinemos hinemos 127.0.0.1(45541) idle
├─21656 postgres: hinemos hinemos 127.0.0.1(45542) idle
├─21658 postgres: hinemos hinemos 127.0.0.1(45543) idle
├─21660 postgres: hinemos hinemos 127.0.0.1(45544) idle
├─21662 postgres: hinemos hinemos 127.0.0.1(45545) idle
├─21664 postgres: hinemos hinemos 127.0.0.1(45546) idle
├─21666 postgres: hinemos hinemos 127.0.0.1(45547) idle
├─21668 postgres: hinemos hinemos 127.0.0.1(45548) idle
├─21670 postgres: hinemos hinemos 127.0.0.1(45549) idle
├─21672 postgres: hinemos hinemos 127.0.0.1(45550) idle
├─21674 postgres: hinemos hinemos 127.0.0.1(45551) idle
├─21676 postgres: hinemos hinemos 127.0.0.1(45552) idle
├─21678 postgres: hinemos hinemos 127.0.0.1(45553) idle
├─21680 postgres: hinemos hinemos 127.0.0.1(45554) idle
├─21682 postgres: hinemos hinemos 127.0.0.1(45555) idle
├─21684 postgres: hinemos hinemos 127.0.0.1(45556) idle
├─21686 postgres: hinemos hinemos 127.0.0.1(45557) idle
├─21688 postgres: hinemos hinemos 127.0.0.1(45558) idle
├─21690 postgres: hinemos hinemos 127.0.0.1(45559) idle
├─21692 postgres: hinemos hinemos 127.0.0.1(45560) idle
├─21694 postgres: hinemos hinemos 127.0.0.1(45561) idle
├─21696 postgres: hinemos hinemos 127.0.0.1(45562) idle
├─21698 postgres: hinemos hinemos 127.0.0.1(45563) idle
├─21700 postgres: hinemos hinemos 127.0.0.1(45564) idle
├─21702 postgres: hinemos hinemos 127.0.0.1(45565) idle
├─21704 postgres: hinemos hinemos 127.0.0.1(45566) idle
├─21706 postgres: hinemos hinemos 127.0.0.1(45567) idle
├─21708 postgres: hinemos hinemos 127.0.0.1(45568) idle
├─21710 postgres: hinemos hinemos 127.0.0.1(45569) idle
├─21712 postgres: hinemos hinemos 127.0.0.1(45570) idle
├─21714 postgres: hinemos hinemos 127.0.0.1(45571) idle
├─21716 postgres: hinemos hinemos 127.0.0.1(45572) idle
├─21718 postgres: hinemos hinemos 127.0.0.1(45573) idle
├─21720 postgres: hinemos hinemos 127.0.0.1(45574) idle
├─21722 postgres: hinemos hinemos 127.0.0.1(45575) idle
├─21724 postgres: hinemos hinemos 127.0.0.1(45576) idle
├─21726 postgres: hinemos hinemos 127.0.0.1(45577) idle
├─21728 postgres: hinemos hinemos 127.0.0.1(45578) idle
├─21730 postgres: hinemos hinemos 127.0.0.1(45579) idle
├─21732 postgres: hinemos hinemos 127.0.0.1(45580) idle
├─21734 postgres: hinemos hinemos 127.0.0.1(45581) idle
├─21736 postgres: hinemos hinemos 127.0.0.1(45582) idle
├─21738 postgres: hinemos hinemos 127.0.0.1(45583) idle
├─21740 postgres: hinemos hinemos 127.0.0.1(45584) idle
├─21742 postgres: hinemos hinemos 127.0.0.1(45585) idle
├─21744 postgres: hinemos hinemos 127.0.0.1(45586) idle
├─21746 postgres: hinemos hinemos 127.0.0.1(45587) idle
├─21748 postgres: hinemos hinemos 127.0.0.1(45588) idle
├─21750 postgres: hinemos hinemos 127.0.0.1(45589) idle
├─21752 postgres: hinemos hinemos 127.0.0.1(45590) idle
├─21754 postgres: hinemos hinemos 127.0.0.1(45591) idle
├─21756 postgres: hinemos hinemos 127.0.0.1(45592) idle
├─21758 postgres: hinemos hinemos 127.0.0.1(45593) idle
├─21760 postgres: hinemos hinemos 127.0.0.1(45594) idle
├─21762 postgres: hinemos hinemos 127.0.0.1(45595) idle
├─21764 postgres: hinemos hinemos 127.0.0.1(45596) idle
├─21766 postgres: hinemos hinemos 127.0.0.1(45597) idle
├─21768 postgres: hinemos hinemos 127.0.0.1(45598) idle
├─21770 postgres: hinemos hinemos 127.0.0.1(45599) idle
├─21772 postgres: hinemos hinemos 127.0.0.1(45600) idle
├─21774 postgres: hinemos hinemos 127.0.0.1(45601) idle
├─21776 postgres: hinemos hinemos 127.0.0.1(45602) idle
├─21778 postgres: hinemos hinemos 127.0.0.1(45603) idle
├─21780 postgres: hinemos hinemos 127.0.0.1(45604) idle
├─21782 postgres: hinemos hinemos 127.0.0.1(45605) idle
├─21784 postgres: hinemos hinemos 127.0.0.1(45606) idle
├─21786 postgres: hinemos hinemos 127.0.0.1(45607) idle
├─21788 postgres: hinemos hinemos 127.0.0.1(45608) idle
├─21790 postgres: hinemos hinemos 127.0.0.1(45609) idle
├─21792 postgres: hinemos hinemos 127.0.0.1(45610) idle
├─21794 postgres: hinemos hinemos 127.0.0.1(45611) idle
├─21796 postgres: hinemos hinemos 127.0.0.1(45612) idle
├─21798 postgres: hinemos hinemos 127.0.0.1(45613) idle
├─21800 postgres: hinemos hinemos 127.0.0.1(45614) idle
├─21802 postgres: hinemos hinemos 127.0.0.1(45615) idle
├─21804 postgres: hinemos hinemos 127.0.0.1(45616) idle
├─21868 postgres: hinemos_quartz hinemos 127.0.0.1(45617) idle
├─21869 postgres: hinemos_quartz hinemos 127.0.0.1(45618) idle
└─21870 postgres: hinemos_quartz hinemos 127.0.0.1(45619) idle

1月 02 10:01:04 jm01 systemd[1]: Starting Hinemos PostgreSQL...
1月 02 10:01:05 jm01 systemd[1]: Started Hinemos PostgreSQL.

<psでのプロセス確認>

2つのプロセスが起動していることを確認する。

  • /opt/hinemos/postgresql/bin/postgres -D /opt/hinemos/var/data
  • java (中略)  com.clustercontrol.HinemosManagerMain

[root@jm01] # ps -ef | grep /opt/hinemos/
hinemos 21391 1 0 10:01 ? 00:00:00 /opt/hinemos/postgresql/bin/postgres -D /opt/hinemos/var/data
root 21461 1 2 10:01 ? 00:00:19 java -Djdk.xml.entityExpansionLimit=0 -javaagent:/opt/hinemos/lib/eclipselink.jar -Dsun.net.inetaddr.ttl=0 -Dsun.net.inetaddr.negative.ttl=1 -XX:-OmitStackTraceInFastThrow -server -Dprogram.name=hinemos_manager -Dhinemos.manager.hostname=jm01 -Dhinemos.manager.home.dir=/opt/hinemos -Dhinemos.manager.etc.dir=/opt/hinemos/etc -Dhinemos.manager.log.dir=/opt/hinemos/var/log -Xms512m -Xmx512m -XX:NewSize=160m -XX:MaxNewSize=160m -XX:MaxPermSize=192m -Xss256k -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:SurvivorRatio=3 -XX:MaxTenuringThreshold=32 -XX:TargetSurvivorRatio=90 -Xloggc:/opt/hinemos/var/log/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintClassHistogram -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7100 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/opt/hinemos/etc/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/opt/hinemos/etc/jmxremote.access -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/hinemos/var/log -cp /opt/hinemos/etc:/opt/hinemos/lib/HinemosCommon.jar:/opt/hinemos/lib/HinemosManager.jar:/opt/hinemos/lib/HinemosModel.jar:/opt/hinemos/lib/c3p0-0.9.1.1.jar:/opt/hinemos/lib/commons-codec-1.9.jar:/opt/hinemos/lib/commons-logging-1.2.jar:/opt/hinemos/lib/commons-net-3.3.jar:/opt/hinemos/lib/dsn-1.5.2.jar:/opt/hinemos/lib/eclipselink.jar:/opt/hinemos/lib/httpclient-4.3.3.jar:/opt/hinemos/lib/httpclient-cache-4.3.3.jar:/opt/hinemos/lib/httpcore-4.3.2.jar:/opt/hinemos/lib/httpmime-4.3.3.jar:/opt/hinemos/lib/imap-1.5.2.jar:/opt/hinemos/lib/intel-wsman-1.0.1-mod.jar:/opt/hinemos/lib/javax.mail-1.5.2.jar:/opt/hinemos/lib/javax.mail-api-1.5.2.jar:/opt/hinemos/lib/javax.persistence_2.1.0.v201304241213.jar:/opt/hinemos/lib/jmockit.jar:/opt/hinemos/lib/jpasecurity-core-0.4.0.jar:/opt/hinemos/lib/jsch-0.1.51.jar:/opt/hinemos/lib/log4j-1.2.17.jar:/opt/hinemos/lib/pop3-1.5.2.jar:/opt/hinemos/lib/postgresql-9.4.1208.jre7.jar:/opt/hinemos/lib/quartz-2.2.1.jar:/opt/hinemos/lib/quartz-jobs-2.2.1.jar:/opt/hinemos/lib/sblim-cim-client-1.3.9.1.jar:/opt/hinemos/lib/slf4j-api-1.6.6.jar:/opt/hinemos/lib/slf4j-log4j12-1.6.6.jar:/opt/hinemos/lib/smtp-1.5.2.jar:/opt/hinemos/lib/snmp4j-2.3.1-sources.jar:/opt/hinemos/lib/snmp4j-2.3.1.jar com.clustercontrol.HinemosManagerMain
root 21954 19318 0 10:15 pts/0 00:00:00 grep --color=auto /opt/hinemos/

 これでHinemosマネージャの構築は完了。そして、お決まりの流れで起動したら止めましょう。

 

4.3 Hinemoマネージャの停止

4.3.1 停止方法

[root@jm01] # service hinemos_manager stop
Redirecting to /bin/systemctl stop hinemos_manager.service

 なにもエラーがでなければOK.

4.3.2 停止の確認

<JVMの停止確認>

Activeの行にinactive (dead)になっていること、Main PID行に"code=exited"が表示されていることを確認する。

[root@jm01] # service hinemos_manager status
Redirecting to /bin/systemctl status hinemos_manager.service
● hinemos_manager.service - Hinemos Manager
Loaded: loaded (/usr/lib/systemd/system/hinemos_manager.service; enabled; vendor preset: disabled)
Active: inactive (dead) since 月 2017-01-02 10:22:22 JST; 2min 18s ago
Process: 21994 ExecStop=/opt/hinemos/bin/jvm_stop.sh (code=exited, status=0/SUCCESS)
Process: 21400 ExecStart=/opt/hinemos/bin/jvm_start.sh -W (code=exited, status=0/SUCCESS)
Main PID: 21461 (code=exited, status=143)

1月 02 10:01:06 jm01 jvm_start.sh[21400]: Java Virtual Machine started (with -W ...n)
1月 02 10:01:06 jm01 systemd[1]: Started Hinemos Manager.
1月 02 10:22:18 jm01 systemd[1]: Stopping Hinemos Manager...
1月 02 10:22:18 jm01 jvm_stop.sh[21994]: waiting for Java Virtual Machine shutdown...
1月 02 10:22:18 jm01 jvm_stop.sh[21994]: Thread Dump 1
1月 02 10:22:19 jm01 jvm_stop.sh[21994]: Thread Dump 2
1月 02 10:22:20 jm01 jvm_stop.sh[21994]: Thread Dump 3
1月 02 10:22:22 jm01 jvm_stop.sh[21994]: .done
1月 02 10:22:22 jm01 jvm_stop.sh[21994]: Java Virtual Machine stopped
1月 02 10:22:22 jm01 systemd[1]: Stopped Hinemos Manager.
Hint: Some lines were ellipsized, use -l to show in full.

 <PostgreSQLの停止確認>

Activeの行にinactive (dead)になっていること、Main PID行に"code=exited"が表示されていることを確認する。

[root@jm01] # service hinemos_pg status
Redirecting to /bin/systemctl status hinemos_pg.service
● hinemos_pg.service - Hinemos PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/hinemos_pg.service; enabled; vendor preset: disabled)
Active: inactive (dead) since 月 2017-01-02 10:22:23 JST; 6min ago
Process: 22040 ExecStop=/opt/hinemos/postgresql/bin/pg_ctl stop -w -t ${PGTIMEOUT} -s -D ${PG_DATA} -m ${PGSHUTDOWNMODE} (code=exited, status=0/SUCCESS)
Process: 21388 ExecStart=/opt/hinemos/postgresql/bin/pg_ctl start -w -t ${PGTIMEOUT} -s -D ${PG_DATA} -l ${PGLOGFILE} (code=exited, status=0/SUCCESS)
Main PID: 21391 (code=exited, status=0/SUCCESS)

1月 02 10:01:04 jm01 systemd[1]: Starting Hinemos PostgreSQL...
1月 02 10:01:05 jm01 systemd[1]: Started Hinemos PostgreSQL.
1月 02 10:22:22 jm01 systemd[1]: Stopping Hinemos PostgreSQL...
1月 02 10:22:23 jm01 systemd[1]: Stopped Hinemos PostgreSQL.

 <psコマンドでの確認>

JVMとPostgreSQLのプロセスが存在しないことを確認する。

[root@jm01] # ps -ef | grep /opt/hinemos/
root 22077 19318 0 10:30 pts/0 00:00:00 grep --color=auto /opt/hinemos/

 

 

Hinemosエージェントの構築

※手順書上の順序が前後するが、マネージャはマネージャ、エージェントはエージェントで構築する順序で記載している。

 

ここからは管理対象となるバッチサーバ(bt01)にエージェントをインストールする。

3  前提条件

3.3 管理対象ノード

前提となるパッケージの有無を確認する。

[root@bt01]# rpm -qa | grep java-1.7.0-openjdk
[root@bt01]# rpm -qa | grep net-snmp
[root@bt01]# rpm -qa | grep tog-pegasus
[root@bt01]# rpm -qa | grep sblim-wbemcli
[root@bt01]# rpm -qa | grep sblim-cmpi-base
[root@bt01]# rpm -qa | grep sblim-cmpi-fsvol
[root@bt01]# rpm -qa | grep openlmi-storage

 

 Hinemosエージェントのインストーラをダウンロードしてインストールする。

[root@bt01]# yum install java-1.7.0-openjdk
(省略)
[root@bt01]# yum install net-snmp
(省略)

[root@bt01]# yum install tog-pegasus
(省略)
[root@bt01]# yum install sblim-wbemcli
(省略)
[root@bt01]# yum install sblim-cmpi-base
(省略)
[root@bt01]# yum install sblim-cmpi-fsvol
(省略)
[root@bt01]# yum install openlmi-storage
(省略)

 もう一度パッケージを確認する。

[root@bt01]# rpm -qa | grep java-1.7.0-openjdk
java-1.7.0-openjdk-headless-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-1.7.0.121-2.6.8.0.el7_3.x86_64

[root@bt01]# rpm -qa | grep net-snmp
net-snmp-libs-5.7.2-24.el7_2.1.x86_64
net-snmp-5.7.2-24.el7_2.1.x86_64
net-snmp-agent-libs-5.7.2-24.el7_2.1.x86_64

[root@bt01]# rpm -qa | grep tog-pegasus
tog-pegasus-libs-2.14.1-3.el7.x86_64
tog-pegasus-2.14.1-3.el7.x86_64

[root@bt01]# rpm -qa | grep sblim-wbemcli
sblim-wbemcli-1.6.2-10.el7.x86_64

[root@bt01]# rpm -qa | grep sblim-cmpi-base
sblim-cmpi-base-1.6.2-8.el7.x86_64

[root@bt01]# rpm -qa | grep sblim-cmpi-fsvol
sblim-cmpi-fsvol-1.5.1-11.el7.x86_64

[root@bt01]# rpm -qa | grep openlmi-storage
openlmi-storage-0.8.0-2.el7.noarch

 

6 管理対象ノード(Linux版エージェント)

6.1 Linux版エージェントのインストール

6.1.1 インストーラの実行

インストール前にロケールを確認する。

[root@wb01]# locale | grep LANG
LANG=ja_JP.UTF-8

Hinemosエージェントをダウンロードしてインストールする。インストールするとき、マネージャのホスト名またはIPアドレスを指定する。この時点でマネージャが決まっていない場合は省略可。あとから設定もできる。

[root@bt01]# cd /tmp/
[root@bt01]# wget https://ja.osdn.net/dl/hinemos/hinemos-agent-5.0.2-1.el.noarch.rpm

[root@bt01]# HINEMOS_MANAGER=192.168.100.31 rpm -ivh hinemos-agent-5.0.2-1.el.noarch.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:hinemos-agent-0:5.0.2-1.el ################################# [100%]
Redirecting to /bin/systemctl status rsyslog.service
Redirecting to /bin/systemctl restart rsyslog.service

情報:'systemctl enable snmpd.service'へ転送しています。
Created symlink from /etc/systemd/system/multi-user.target.wants/snmpd.service to /usr/lib/systemd/system/snmpd.service.
Redirecting to /bin/systemctl start snmpd.service

 ここで指定したHINEMOS_MANAGERは、ここに反映される。あとで変更したい場合はこのファイルを編集すれば良い。

[root@bt01]# cat /opt/hinemos_agent/conf/Agent.properties | grep managerAddress
managerAddress=http://192.168.100.31:8081/HinemosWS/

 

6.2 Linux版エージェントの起動と停止

6.2.1 Hinemosエージェントの起動

例によって手順書通り serviceコマンドで起動する。

[root@bt01]# service hinemos_agent start
Starting hinemos_agent (via systemctl): [ OK ]

6.2.2 NET-SNMPの起動

手順では、ここでsnmpdをstartさせることになっているがデフォルトで起動しているのでステータスを確認するだけ。

[root@bt01]# service snmpd status
Redirecting to /bin/systemctl status snmpd.service
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2017-01-02 11:47:50 JST; 1min 6s ago
Main PID: 1316 (snmpd)
CGroup: /system.slice/snmpd.service
└─1316 /usr/sbin/snmpd -LS0-6d -f

1月 02 11:47:49 bt01 systemd[1]: Starting Simple Network Management Protocol (S......
1月 02 11:47:50 bt01 snmpd[1316]: NET-SNMP version 5.7.2
1月 02 11:47:50 bt01 systemd[1]: Started Simple Network Management Protocol (SN...n..
Hint: Some lines were ellipsized, use -l to show in full.

 6.2.3 Hinemosエージェントの停止

例によって、起動したら停止方法を確認。

[root@bt01]# service hinemos_agent stop
Stopping hinemos_agent (via systemctl): [ OK ]

 

 

Hinemos Webクライアントの構築

 さて、最後にHinemos Webクライアントを構築。これまではHinemosクライアントはWindowsアプリしかなかったが、Webクライアントで操作できるようになっている。かつてのWindowsアプリをリッチクライアントと呼び、いずれかの方法でHinemosマネージャを操作できる。

今回は、MacBookProからHinemosマネージャを操作したいので、Webクライアントサービスを提供するWebクライアントのサーバを構築する。また、手順書は前後するが、前提条件でWebクライアントのサーバの前提確認しておく。

 

3  前提条件

3.3 管理対象ノード

前提となるパッケージの有無を確認する。

[root@wb01]# rpm -qa | grep java-1.7.0-openjdk
[root@wb01]# rpm -qa | grep unzip
[root@wb01]# rpm -qa | grep vlgothic-p-fonts
[root@wb01]# rpm -qa | grep java-1.7.0-openjdk-devel

 不足しているパッケージをインストールする。

[root@wb01]# yum install java-1.7.0-openjdk
(省略)
[root@wb01]# yum install unzip
(省略)

[root@wb01]# yum install vlgothic-p-fonts
(省略)
[root@wb01]# yum install java-1.7.0-openjdk-devel
(省略)

 もう一度パッケージの有無を確認する。

[root@wb01]# rpm -qa | grep java-1.7.0-openjdk
java-1.7.0-openjdk-headless-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-1.7.0.121-2.6.8.0.el7_3.x86_64
java-1.7.0-openjdk-devel-1.7.0.121-2.6.8.0.el7_3.x86_64


[root@wb01]# rpm -qa | grep unzip
unzip-6.0-16.el7.x86_64

 

[root@wb01]# rpm -qa | grep vlgothic-p-fonts
vlgothic-p-fonts-20130607-2.el7.noarch

 

[root@wb01]# rpm -qa | grep java-1.7.0-openjdk-devel
java-1.7.0-openjdk-devel-1.7.0.121-2.6.8.0.el7_3.x86_64

8 Webクライアント

8.1 Hinemos Webクライアントのインストール

8.1.1 全体構成

ブラウザ(MacBookPro)からWebクライアント(wb01)にアクセスしてマネージャを操作する。

f:id:jippahitokarage:20170102122752p:plain

リリース 11_hinemos_documents_japanese 5.0_20160805 - Hinemos - OSDN

 8.1.2 インストーラの実行

インストール前にロケールを確認する。

[root@wb01]# locale | grep LANG
LANG=ja_JP.UTF-8

 Webクライアントをダウンロードしてインストールする。

[root@wb01]# cd /tmp/
[root@wb01]# wget https://ja.osdn.net/dl/hinemos/hinemos-web-5.0.2-1.el7.x86_64.rpm
[root@wb01]# rpm -ivh hinemos-web-5.0.2-1.el7.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:hinemos-web-0:5.0.2-1.el7 ################################# [100%]

意図した通りの言語が設定されていることを確認する。

[root@wb01]# cat /opt/hinemos_web/conf/hinemos_web.cfg | grep LANG
export LANG=ja_JP.UTF-8

 

 8.2 Hinemos Webクライアントの起動

8.2.1 起動方法

Hinemos Webクライアントを起動する。

[root@wb01]# service hinemos_web start
Starting hinemos_web (via systemctl):                      [  OK  ]

 内側からアクセスしてみる。いけたっぽい。

[root@wb01]# curl localhost

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

  <head>

    <title>Hinemos クライアント</title>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    <meta name="apple-mobile-web-app-capable" content="yes">

    <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" >

(後略)

 外からアクセスしてみる。どうやらCentOS 7のデフォルトのfirewalldに止められている様子。

f:id:jippahitokarage:20170102125148p:plain

firewalldを止めて、ファイアウォールを無効化する。

[root@wb01]# systemctl stop firewalld
[root@wb01]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 月 2017-01-02 12:56:56 JST; 4s ago
Process: 4734 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 4734 (code=exited, status=0/SUCCESS)

1月 02 12:47:51 wb01 systemd[1]: Starting firewalld - dynamic firewall daemon...
1月 02 12:47:51 wb01 systemd[1]: Started firewalld - dynamic firewall daemon.
1月 02 12:56:56 wb01 systemd[1]: Stopping firewalld - dynamic firewall daemon...
1月 02 12:56:56 wb01 systemd[1]: Stopped firewalld - dynamic firewall daemon.

 もう一度外からアクセスしてみると、Hinemos Webクライアントの画面にアクセスできた。接続先URLにHinemosマネージャのホストを指定してログインする。デフォルトでユーザIDはhinemos パスワードもhinemos。

f:id:jippahitokarage:20170102130650p:plain

ログインしてみるもログインに失敗。jm01もfirewalldで止められている様子。

f:id:jippahitokarage:20170102130229p:plain

Hinemosマネージャに入り、こちらもfirewalldを止める。

[root@jm01 ~ 2017/01/02 13:02:09]# systemctl stop firewalld

もう一度ログインしてみると、

f:id:jippahitokarage:20170102130818p:plain

か、かわいい…。なにこのキャラクター。

f:id:jippahitokarage:20170102130838p:plain

Hinemos公認キャラクター「もにた」らしい。まあ、Monitoringのモニタなんでしょう。では、さっそくHinemos WebクライアントでHinemosマネージャを操作してみるもに!

f:id:jippahitokarage:20170102131057p:plain

【お知らせ】Hinemos公認キャラクター「もにた」 誕生! | Hinemos | クラウド時代の統合運用管理

 

ここで手順書は終わりなので、 Hinemos ver.5.0 入門編① Hinemos ver.5.0を使ってみよう | Hinemos | クラウド時代の統合運用管理 に従って実際にHinemosであそんでみる。

リポジトリパースペクティブを開き、Hinemosマネージャの監視対象にbt01(192.168.100.51)を追加する。またしてもfirewalldに止められたので、bt01のfirewalldも止める。最初から全部止めておけばよかった。

f:id:jippahitokarage:20170102131647p:plain

もう一度bt01(192.168.100.51)をSearchすると各種属性が自動的に入力されるので「登録」をクリックする。

f:id:jippahitokarage:20170102131827p:plain

f:id:jippahitokarage:20170102131909p:plain

リポジトリ(監視対象)にbt01が追加された。

f:id:jippahitokarage:20170102131938p:plain

次に、監視パースペクティブでPING監視を追加する。f:id:jippahitokarage:20170102133132p:plain

監視項目ID(システム内でユニークの監視ID)、スコープ(監視の対象範囲)、条件、通知ID(検知したときに、どこに通知するのか)、アプリケーション(運用用文字列。運用上検知したメッセージがわかるような文字列を設定)を定義してOKをクリック。

f:id:jippahitokarage:20170102133255p:plain

監視項目が作成されたことを確認し、OKをクリックする。

f:id:jippahitokarage:20170102133316p:plain

また、ここで通知ID STATUS_FOR_POLLINGのステータス通知の種類に「情報」を追加しておく。これを追加しておかないと、PING監視に失敗してステータスが「危険」になった後、再びPING監視に成功したときにステータスが「危険」になったまま戻らなくなってしまう。

f:id:jippahitokarage:20170102143023p:plain

監視履歴パースペクティブを確認する。PING_TEST_001の監視によりbt01にPINGが通ることが確認されている。

f:id:jippahitokarage:20170102143121p:plain

ここで、bt01を落としてみる。

[root@bt01]# shutdown -h now

PING監視によって危険を検知して「ステータス」と「イベント」に通知される。「ステータス」に出すのか、「イベント」に出すのか、あるいは「メールで通知」するのかは通知IDによって設定を変更できる。

今回設定した通知ID「EVENT_FOR_POLLING」と「STATUS_FOR_POLLING」では、1分間隔でPINGして結果が変わってから2回同じ結果担った場合にそれぞれ「監視履歴 (ステータス)」と「監視履歴(イベント)」に通知するようになっている。

f:id:jippahitokarage:20170102143427p:plain

bt01のダウンをPING監視によって検知できたので、bt01をもう一度起動して、Hinemosエージェントを起動してみる。もちろんfirewalldも止めておく。(実運用ではHinemosエージェントの自動起動、firewalldのを起動しない設定を入れ込んでおくべき)

f:id:jippahitokarage:20170102143803p:plain

PING監視を再開し、PINGが通ったのでbt01の復活が確認されステータスが「情報」に更新された。

Hinemosではその他、ログ監視、プロセス監視、リソース監視、ディスク監視などシステム運用上必要とされる監視は一揃えあるので、Hinemosだけ入れておけば監視まわりは十分と言って良い。もっと言うと、任意のSQLを投げて、その結果を監視するSQL監視も作り込めるようになっているので、DBの中の監視もHinemosに任せて良い。

バッチサーバでCPUフル回転で使用率が正しく100%になっているものまでアラートが上がってしまうなど、拾わなくても良いアラートについては、時間であったり、何分間隔で、何回検知したときにアラートとして上げるのかなど多少テクニックはいるが、監視のチューニングをすることで、欲しいアラートだけ拾うということもそれなりにできる。

 

ジョブも動かしてみよう。

 

お試しジョブとして、日付と時刻を出力するシェルを用意する。

[root@bt01]# cat /tmp/hello-world.sh
echo `date +%Y-%m-%d\ %H:%M:%S` Hello World ! >> /tmp/result.txt
echo OK
exit 0

 ジョブ設定パースペクティブを開く。f:id:jippahitokarage:20170102171125p:plain

 

ジョブユニットを作成する。
f:id:jippahitokarage:20170102171959p:plain

 

ジョブIDとジョブ名を定義する。
f:id:jippahitokarage:20170102171900p:plain

 

作成済みのジョブユニット内にジョブネットを作成する。
f:id:jippahitokarage:20170102171822p:plain

 

ジョブIDとジョブ名を定義する。

f:id:jippahitokarage:20170102172042p:plain

 

コマンドジョブを作成する。
f:id:jippahitokarage:20170102172113p:plain

ジョブIDとジョブ名を定義し、コマンドタブを開く。

f:id:jippahitokarage:20170102172144p:plain

実行するホストをスコープで定義し、実行するシェルのパスを起動コマンドに定義してOKをクリックする
f:id:jippahitokarage:20170102172236p:plain

登録アイコンをクリックして、ジョブの設定を登録する。ここで登録しなければ編集した内容はなかったことになるので注意。

f:id:jippahitokarage:20170102171454p:plain

ジョブ登録して良いか確認されるのでYesをクリック。
f:id:jippahitokarage:20170102172333p:plain

ジョブの登録成功のメッセージが表示されたらOKをクリックする。f:id:jippahitokarage:20170102172342p:plain

登録した「お試しジョブ」を実行する。

f:id:jippahitokarage:20170102172413p:plain

実行の仕方を確認されるので何もチェックを入れずに「実行」をクリックする。

f:id:jippahitokarage:20170102171731p:plain

ジョブ履歴パースペクティブを開き、右上の更新アイコンをクリックすると実行されたジョブが履歴に表示される。指定したジョブが実行され正常終了していることを確認する。

f:id:jippahitokarage:20170102172457p:plain

実際にbt01にログインし、ファイルに結果が出力されていることを確認する。

[root@bt01]# cat /tmp/result.txt
2017-01-02 17:08:31 Hello World !

試しに、「お試しジョブ」をもう一度実行してみる。

f:id:jippahitokarage:20170102172628p:plain

同様の手順で、チェックをせずに「実行」をクリック。

f:id:jippahitokarage:20170102172632p:plain

もう一度実行されたことを確認する。

f:id:jippahitokarage:20170102172636p:plain

bt01上ではもう一度ジョブが実行されていることを確認する。 

[root@bt01]# cat /tmp/result.txt
2017-01-02 17:08:31 Hello World !
2017-01-02 17:09:40 Hello World !

過去にHinemos 3.xのときにリッチクライアントを触っていたが、Webクライアントでできることとリッチクライアントでできることに差がないように感じた。わざわざ端末ごとにインストールが必要なリッチクライアントを入れるくらいなら、Webクライアントを用意したほうが運用上楽ができると思う。

とりあえず、監視できること、ジョブを動かせることまで確認したので今度はエンタープライズオプションも試してみたい*3