実施環境:
[root@testhost ~]# uname -a
Linux testhost 4.18.0-338.el8.x86_64 #1 SMP Fri Aug 27 17:32:14 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@testhost ~]# cat /etc/redhat-release
CentOS Stream release 8
[root@testhost ~]# yum list installed | grep hinemos
hinemos-7.0-agent.noarch 7.0.1-1.el @@commandline
hinemos-7.0-manager.x86_64 7.0.1-1.el8 @@commandline
hinemos-7.0-web.x86_64 7.0.1-1.el8 @@commandline
0. 概要
企業などの団体が所有する大規模な IT システムでは、システム全体をいかに効率よく管理するかが非常に重要な問題になります。
そのような巨大なシステムを一元的に管理するためのソフトが、統合運用管理ソフトです。
統合運用管理ソフトは主にジョブ管理やホスト監視などの機能を備えており、大規模システムを安定して稼働させるのに今や必要不可欠の存在といえます。
代表的な統合運用管理ソフトの1つが、今回紹介する Hinemos (ヒネモス)です。
Hinemos は NTT データ開発の統合運用管理ソフトで、複数のホストをグループ化し、グループ単位で監視やジョブ実行などを行うのが特徴です。
また、 Hinemos はオープンソースソフトウェアであり、 GitHub から無料でダウンロード、構築することが可能です。
今回は、単一の Linux サーバに Hinemos をインストールし、単独のジョブを手動実行させてみることを目標とします。
なお、インストールの手順や要件は以下のマニュアルから確認できます。
Hinemos には3つのコンポーネントが存在します。
管理機能を提供する「マネージャ」、マネージャが管理する対象となる「エージェント」、操作端末となる「クライアント」です。
実際の運用では3つとも別々のホストにインストールされることが多いですが、今回はすべて同じホストにインストールします。
1. SELinux の無効化
インストールの前に、 SELinux を無効化します。
SELinux は Linux のセキュリティ機能の1つで、アクセス可能な対象を制限するものです。
ただ、 Hinemos のマネージャまたはクライアントをインストールするホストにおいては無効化しなければならないことがマニュアルにも記載されており、有効な状態だと Hinemos をインストールすることができません。
無効化するには、以下の通り /etc/selinux/config
の SELINUX
を disabled
に 書き換えてホストを再起動します。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@testhost ~]# cp -p /etc/selinux/config /etc/selinux/config.old
[root@testhost ~]# vi /etc/selinux/config
[root@testhost ~]# diff /etc/selinux/config /etc/selinux/config.old
7c7
< SELINUX=disabled
---
> SELINUX=enforcing
[root@testhost ~]# shutdown -r now
再起動後に getenforce コマンドを実行し、 Disabled
と表示されれば OK です。
[root@testhost ~]# getenforce
Disabled
2. マネージャインストール
では、いよいよ Hinemos をインストールしていきます。
まずは、管理の中心となるマネージャをインストールします。
Hinemos は rpm パッケージでインストールできます。
今回は yum コマンドで github から直接 rpm をダウンロードしてインストールしました。
[root@testhost ~]# yum install -y https://github.com/hinemos/hinemos/releases/download/v7.0.1/hinemos-7.0-manager-7.0.1-1.el8.x86_64.rpm
メタデータの期限切れの最終確認: 1 day, 3:50:30 時間前の 2023年08月19日 10時07分48秒 に実施しました。
hinemos-7.0-manager-7.0.1-1.el8.x86_64.rpm 14 MB/s | 155 MB 00:11
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
インストール:
hinemos-7.0-manager x86_64 7.0.1-1.el8 @commandline 155 M
(省略)
完了しました!
[root@testhost ~]# yum list installed | grep hinemos
hinemos-7.0-manager.x86_64 7.0.1-1.el8 @@commandline
3. エージェントインストール
次に、管理対象となるエージェントをインストールします。
[root@testhost ~]# yum install -y https://github.com/hinemos/hinemos/releases/download/v7.0.1/hinemos-7.0-agent-7.0.1-1.el.noarch.rpm
メタデータの期限切れの最終確認: 2:56:20 時間前の 2023年08月20日 18時17分16秒 に 実施しました。
hinemos-7.0-agent-7.0.1-1.el.noarch.rpm 4.4 MB/s | 22 MB 00:05
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
インストール:
hinemos-7.0-agent noarch 7.0.1-1.el @commandline 22 M
(省略)
完了しました!
[root@testhost ~]# yum list installed | grep hinemos
hinemos-7.0-agent.noarch 7.0.1-1.el @@commandline
hinemos-7.0-manager.x86_64 7.0.1-1.el8 @@commandline
4. クライアントインストール
最後に、操作端末となるクライアントをインストールします。
[root@testhost ~]# yum install -y https://github.com/hinemos/hinemos/releases/download/v7.0.1/hinemos-7.0-web-7.0.1-1.el8.x86_64.rpm
メタデータの期限切れの最終確認: 1:59:14 時間前の 2023年08月20日 18時17分16秒 に 実施しました。
hinemos-7.0-web-7.0.1-1.el8.x86_64.rpm 12 MB/s | 67 MB 00:05
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
インストール:
hinemos-7.0-web x86_64 7.0.1-1.el8 @commandline 67 M
(省略)
完了しました!
[root@testhost ~]# yum list installed | grep hinemos
hinemos-7.0-agent.noarch 7.0.1-1.el @@commandline
hinemos-7.0-manager.x86_64 7.0.1-1.el8 @@commandline
hinemos-7.0-web.x86_64 7.0.1-1.el8 @@commandline
5. JAVA インストール
さて、ここまでで Hinemos の本体はインストールできましたが、まだ現状だと起動できません。
実際、起動してみようとすると以下のようなエラーメッセージが出力されます。
[root@testhost ~]# systemctl start hinemos_manager.service
Job for hinemos_manager.service failed because the control process exited with error code.
See "systemctl status hinemos_manager.service" and "journalctl -xe" for details.
[root@testhost ~]# systemctl status hinemos_manager.service
(省略)/usr/lib/jvm/jre-1.8.0-openjdk/bin/java: (省略)
Hinemos の必須パッケージの1つに、 JAVA ( java-1.8.0-openjdk ) があります。
現在このホストには JAVA がインストールされていないため、上記のようなメッセージが出力されてしまっています。
これを解消するため、 JAVA をインストールします。
なお、バージョンはマニュアルで指定されているので、それと同じバージョンをインストールするようにしてください。
[root@testhost ~]# yum -y install java-1.8.0-openjdk
メタデータの期限切れの最終確認: 1 day, 4:14:36 時間前の 2023年08月19日 10時07分48秒 に実施しました。
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン Repo サイズ
================================================================================
インストール:
java-1.8.0-openjdk x86_64 1:1.8.0.362.b08-3.el8 appstream 544 k
(省略)
完了しました!
[root@testhost ~]# yum list installed | grep openjdk
java-1.8.0-openjdk.x86_64 1:1.8.0.362.b08-3.el8 @appstream
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.362.b08-3.el8 @appstream
6. Hinemos 起動
インストールした Hinemos の起動停止は、 systemctl で行います。
マネージャは hinemos_manager.service
、エージェントは hinemos_agent.service
、クライアントは hinemos_web.service
です。
Hinemos が使用するデータベースの hinemos_pg.service
はマネージャを起動すれば一緒に起動しているはずですが、もし起動していなければ同様に systemctl で起動してください。
[root@testhost ~]# systemctl list-unit-files -t service | grep hinemos
hinemos_agent.service generated
hinemos_manager.service enabled
hinemos_pg.service enabled
hinemos_web.service enabled
[root@testhost ~]# systemctl start hinemos_manager.service
[root@testhost ~]# systemctl is-active hinemos_manager.service
active
[root@testhost ~]# systemctl is-active hinemos_pg.service
active
[root@testhost ~]# systemctl start hinemos_agent.service
[root@testhost ~]# systemctl is-active hinemos_agent.service
active
[root@testhost ~]# systemctl start hinemos_web.service
[root@testhost ~]# systemctl is-active hinemos_web.service
active
7. ファイアウォールの穴あけ
Hinemos 自体は前段で起動できましたが、そこへアクセスするルートの穴あけをしないと意味がありません。
今回はマネージャ、エージェント、クライアントがすべて同じホスト上にあるので、クライアントへの接続に必要な 80 番ポートのみを穴あけします。
各コンポーネントが異なるホストにある場合はそれぞれのコンポーネント間の穴あけも必要になりますが、その際必要なポート番号はマニュアルを参照してください。
[root@testhost ~]# systemctl is-active firewalld
active
[root@testhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s25
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@testhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@testhost ~]# firewall-cmd --reload
success
[root@testhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s25
sources:
services: cockpit dhcpv6-client ssh
ports: 80/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@testhost ~]#
8. ログイン
これで、 Hinemos を利用するための準備が整いました。
さっそくクライアントに接続して、マネージャにログインしてみましょう。
ブラウザを開いて、http://<対象ホストのIPアドレス>
に接続します。
80番ポートは http の標準のポートなので、ほとんどの場合ポート番号の指定は不要です。
初期構築時のユーザ ID とパスワードは、どちらも「 hinemos 」と入力すればログインできます。
接続先 URL には本来マネージャの URL を指定しますが、マネージャとクライアントは今回同じホスト上にあるのでデフォルトの http://localhost:8080/HinemosWeb/
のままでよいです。
正常にログインできれば、以下のようなメッセージが表示されます。
これで、 Hinemos のマネージャにログインできました。
9. エージェント登録
次に、マネージャとエージェントの紐づけを行います。
左上の「パースペクティブ」⇒「リポジトリ」を選択してください。
リポジトリ画面が開きます。
デフォルトで「リポジトリ[ノード]」のタブが選択されていることを確認して、追加ボタンを押します。
ノードの設定画面が開くので、以下の通り設定を入力します。
IP アドレスは 127.0.0.1 などではなく、きちんとホストの IP アドレスを指定しないとうまくいかない場合があります。
名前 | 値 |
---|---|
ファシリティ ID | manager |
ファシリティ名 | マネージャ |
プラットフォーム | Linux(LINUX) |
IPv4 のアドレス | <対象ホストの IP アドレス> |
ノード名 | <対象ホストのホスト名> |
その他の設定はデフォルトのままでよいです。
「登録」ボタンを押して登録します。
登録したノードが一覧に追加されていることがわかります。
ここで正常にマネージャがエージェントを認識できていれば、「リポジトリ[エージェント]」タブに登録したノードが表示されます。
表示されていない場合は右上の更新ボタンを押してみてください。
何度更新しても「リポジトリ[エージェント]」タブに登録したノードが表示されない場合は、上記の設定を見直すか、 OS 側からエージェントの設定ファイルを確認してください。
<エージェントインストールフォルダ>/conf
にある Agent.properties
ファイルの managerAddress
が http://<対象ホストの IP アドレス>:8083/HinemosWeb/
となっていない場合、修正してエージェントを再起動してください。
(省略)
## connection
user=HINEMOS_AGENT
password=HINEMOS_AGENT
managerAddress=http://127.0.0.1:8083/HinemosWeb/
topic.interval=30000
connect.timeout=10000
request.timeout=60000
#facilityId=
10. ジョブ登録
先ほど登録したノードに対して、ジョブを登録してみましょう。
左上の「パースペクティブ」⇒「ジョブ設定」を選択してください。
ジョブの設定画面が開きます。
さて、 Hinemos のジョブは階層構造の上位から、「ジョブユニット」「ジョブネット」「ジョブ」の3層構造となっています。
まずは最上位のジョブユニットを作成します。
マネージャ(マネージャ1)を選択し、「ジョブユニットの作成」ボタンを押します。
ジョブ ID に「 job_unit_test 」、ジョブ名に「ジョブユニット_テスト」と入力します。
それ以外の設定はすべてデフォルトでよいです。
入力したら「 OK 」を押します。
この時点で、ジョブユニットは編集モードになっています。
「ジョブネットの作成」ボタンを押してジョブネットを作成しましょう。
ジョブネットのジョブ ID は「 jobnet_test 」、ジョブ名は「ジョブネット_テスト」にしましょう。
それ以外の設定はすべてデフォルトで「 OK 」を押します。
次に「コマンドジョブの作成」ボタンを押してジョブを追加します。
ジョブ ID は「 job_test 」、ジョブ名は「ジョブ_テスト」にしましょう。
「コマンド」タブを選択し、起動コマンドに今回以下のコマンドラインを指定します。
date >> /tmp/test.log
スコープは固定値で、「参照」⇒「マネージャ( manager )」を選択してください。
これはジョブが実行されるホストのグループ(ファシリティ)で、今回は先ほど作成したもの( manager )を使用しています。
ここまででジョブの設定は完了ですが、最後に設定を明示的に保存、反映する必要があります。
「登録」ボタンを押してください。
確認メッセージが出るので、「 Yes 」を押します。
これでジョブが登録できました。
11. ジョブ実行
早速、登録したジョブを実行してみましょう。
「実行」ボタンを押して実行します。
確認メッセージが出るので、「実行」を押します。
これでジョブが実行できました。
12. ジョブ実行結果確認
ジョブの実行結果は、また別の画面から確認します。
左上の「パースペクティブ」⇒「ジョブ履歴」を選択してください。
ジョブの履歴画面が開きます。
ジョブの実行状況一覧を見て、先ほど実行したジョブの実行状態が「終了」、終了状態が「正常」となっていることを確認します。
もし実行中の場合は、右上の「更新」ボタンを押して画面を更新してみてください。
OS 側からも、コマンドラインで出力したファイルを確認します。
[root@testhost ~]# ls -l /tmp/test.log
-rw-r--r-- 1 root root 86 8月 22 20:32 /tmp/test.log
[root@testhost ~]# cat /tmp/test.log
2023年 8月 22日 火曜日 20:32:20 JST
指定したコマンドラインが正常に動作していることが確認できました。
13. 備考
インストールの手順や要件以外にも、基本的な情報はだいたいが最初に紹介したマニュアルにまとまっています。
わからないことがあればまずはこのマニュアルを調べてみてもよいかと思います。