Linux: 統合運用管理ソフト「Hinemos」を無料インストールしてみた


###### 実施環境：

```Linux:Linux
[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 から無料でダウンロード、構築することが可能です。

[Hinemos](https://www.hinemos.info/)

今回は、単一の Linux サーバに Hinemos をインストールし、単独のジョブを手動実行させてみることを目標とします。
なお、インストールの手順や要件は以下のマニュアルから確認できます。

[Releases](https://github.com/hinemos/hinemos/releases)

![WS000516.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e61cd33f-4289-4c5d-c36b-4308b439af88.jpeg "マニュアル")

 Hinemos には3つのコンポーネントが存在します。
管理機能を提供する「マネージャ」、マネージャが管理する対象となる「エージェント」、操作端末となる「クライアント」です。
実際の運用では3つとも別々のホストにインストールされることが多いですが、今回はすべて同じホストにインストールします。

[Hinemosの導入構成](https://www.hinemos.info/env/composition)

### 1. SELinux の無効化

インストールの前に、 SELinux を無効化します。
 SELinux は Linux のセキュリティ機能の1つで、アクセス可能な対象を制限するものです。
ただ、 Hinemos のマネージャまたはクライアントをインストールするホストにおいては無効化しなければならないことがマニュアルにも記載されており、有効な状態だと Hinemos をインストールすることができません。

無効化するには、以下の通り `/etc/selinux/config` の `SELINUX` を `disabled` に 書き換えてホストを再起動します。

```config:/etc/selinux/config
# 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
```

```Linux:Linux
[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 です。

```Linux:Linux
[root@testhost ~]# getenforce
Disabled
```

### 2. マネージャインストール

では、いよいよ Hinemos をインストールしていきます。
まずは、管理の中心となるマネージャをインストールします。
 Hinemos は rpm パッケージでインストールできます。
今回は yum コマンドで github から直接 rpm をダウンロードしてインストールしました。

```Linux:Linux
[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 の本体はインストールできましたが、まだ現状だと起動できません。
実際、起動してみようとすると以下のようなエラーメッセージが出力されます。

```Linux:Linux
[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 をインストールします。
なお、バージョンはマニュアルで指定されているので、それと同じバージョンをインストールするようにしてください。

```Linux:Linux
[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 で起動してください。

```Linux:Linux
[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 番ポートのみを穴あけします。
各コンポーネントが異なるホストにある場合はそれぞれのコンポーネント間の穴あけも必要になりますが、その際必要なポート番号はマニュアルを参照してください。

```Linux:Linux
[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 の標準のポートなので、ほとんどの場合ポート番号の指定は不要です。

![WS000475.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ed789078-0ba7-2402-c211-822206520a18.jpeg "ログイン")

初期構築時のユーザ ID とパスワードは、どちらも「 hinemos 」と入力すればログインできます。
接続先 URL には本来マネージャの URL を指定しますが、マネージャとクライアントは今回同じホスト上にあるのでデフォルトの `http://localhost:8080/HinemosWeb/` のままでよいです。
正常にログインできれば、以下のようなメッセージが表示されます。

![WS000476.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/50f55b28-ce08-5aa4-1d4a-4881ad721899.jpeg "ログイン成功")

これで、 Hinemos のマネージャにログインできました。

![WS000478.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f98d61da-f565-1e4f-ac2e-a231465c113c.jpeg "スタートアップ")

### 9. エージェント登録

次に、マネージャとエージェントの紐づけを行います。
左上の「パースペクティブ」⇒「リポジトリ」を選択してください。

![WS000479.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/927a42b8-d910-2583-b75b-5dda99da1334.jpeg "リポジトリ")

リポジトリ画面が開きます。

![WS000523.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f52bc1b8-421d-c509-ed54-f4d4140eba70.jpeg "リポジトリの設定")

デフォルトで「リポジトリ[ノード]」のタブが選択されていることを確認して、追加ボタンを押します。

![WS000480.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ad15db92-99f9-a693-6ea7-f2f13afdb602.jpeg "ノード追加")

ノードの設定画面が開くので、以下の通り設定を入力します。
 IP アドレスは 127.0.0.1 などではなく、きちんとホストの IP アドレスを指定しないとうまくいかない場合があります。

|名前|値|
|:-|:-|
|ファシリティ ID | manager |
|ファシリティ名|マネージャ|
|プラットフォーム| Linux(LINUX) |
| IPv4 のアドレス|<対象ホストの IP アドレス>|
|ノード名|<対象ホストのホスト名>|

その他の設定はデフォルトのままでよいです。

![WS000481.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ba8647fa-81ee-d277-aa52-2557b438be64.jpeg "ノード設定1")

![WS000484.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/aed7f21c-5049-dbf0-f642-a2be7fb31d50.jpeg "ノード設定2")

「登録」ボタンを押して登録します。
登録したノードが一覧に追加されていることがわかります。

![WS000489.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/304ef1be-3dc0-1f6e-25ef-a123967efa38.jpeg "ノード追加後")

ここで正常にマネージャがエージェントを認識できていれば、「リポジトリ[エージェント]」タブに登録したノードが表示されます。
表示されていない場合は右上の更新ボタンを押してみてください。

![WS000512.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/0d6fc45a-ef68-9814-9574-efd153af7200.jpeg "エージェント追加")

何度更新しても「リポジトリ[エージェント]」タブに登録したノードが表示されない場合は、上記の設定を見直すか、 OS 側からエージェントの設定ファイルを確認してください。
 `<エージェントインストールフォルダ>/conf` にある `Agent.properties` ファイルの `managerAddress` が `http://<対象ホストの IP アドレス>:8083/HinemosWeb/` となっていない場合、修正してエージェントを再起動してください。

```properties:Agent.properties
(省略)
## 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. ジョブ登録

先ほど登録したノードに対して、ジョブを登録してみましょう。
左上の「パースペクティブ」⇒「ジョブ設定」を選択してください。

![WS000490.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/2aabe8ec-117a-fd29-6cf9-1e4d202d9289.jpeg "ジョブ設定")

ジョブの設定画面が開きます。

![WS000518.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a203249b-f55d-021b-9824-fe4712c39980.jpeg "ジョブの設定")

さて、 Hinemos のジョブは階層構造の上位から、「ジョブユニット」「ジョブネット」「ジョブ」の3層構造となっています。

[ジョブ](https://www.hinemos.info/technology/special_content/job)

まずは最上位のジョブユニットを作成します。
マネージャ(マネージャ1)を選択し、「ジョブユニットの作成」ボタンを押します。

![WS000517.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/fa07e6d5-2706-7e44-a142-197f708d2a36.jpeg "ジョブユニットの作成")

ジョブ ID に「 job_unit_test 」、ジョブ名に「ジョブユニット_テスト」と入力します。
それ以外の設定はすべてデフォルトでよいです。
入力したら「 OK 」を押します。

![WS000492.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/2c019193-3d0e-7680-96cd-e34819921567.jpeg "ジョブユニット")

この時点で、ジョブユニットは編集モードになっています。
「ジョブネットの作成」ボタンを押してジョブネットを作成しましょう。

![WS000493.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/a7944ab1-9fb3-9045-f1a0-e192648fd573.jpeg "ジョブネットの作成")

ジョブネットのジョブ ID は「 jobnet_test 」、ジョブ名は「ジョブネット_テスト」にしましょう。
それ以外の設定はすべてデフォルトで「 OK 」を押します。

![WS000494.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e079255b-17b4-6597-911b-fbb49046ccbc.jpeg "ジョブネット")

次に「コマンドジョブの作成」ボタンを押してジョブを追加します。

![WS000495.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/de663f2e-0c24-12b3-51ad-19ef2f9b444a.jpeg "コマンドジョブの作成")

ジョブ ID は「 job_test 」、ジョブ名は「ジョブ_テスト」にしましょう。
「コマンド」タブを選択し、起動コマンドに今回以下のコマンドラインを指定します。

```Linux:起動コマンド
date >> /tmp/test.log
```

スコープは固定値で、「参照」⇒「マネージャ( manager )」を選択してください。
これはジョブが実行されるホストのグループ(ファシリティ)で、今回は先ほど作成したもの( manager )を使用しています。

![WS000496.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f30427ac-5702-6a56-0f24-b0ab03d337e7.jpeg "ジョブ設定1")

![WS000497.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/43ed2cab-3ac5-0bce-f102-a6641ce681ce.jpeg "ジョブ設定2")

ここまででジョブの設定は完了ですが、最後に設定を明示的に保存、反映する必要があります。
「登録」ボタンを押してください。

![WS000500.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e416f57e-a33b-0be7-48f2-cbcee0a52666.jpeg "保存")

確認メッセージが出るので、「 Yes 」を押します。

![WS000501.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/37ef35e0-67c0-208e-0363-e7b0cf55a039.jpeg "ジョブ登録確認1")

これでジョブが登録できました。

![WS000502.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/0b66beae-2a0d-b997-e90e-93ebcc0f472a.jpeg "ジョブ登録確認2")

### 11. ジョブ実行

早速、登録したジョブを実行してみましょう。
「実行」ボタンを押して実行します。

![WS000503.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/238a0036-eae7-8929-5dcc-2cd167c1f2bd.jpeg "ジョブ実行
")

確認メッセージが出るので、「実行」を押します。

![WS000504.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/83b4b176-9e69-88ae-b83c-97e2a1d7f187.jpeg "ジョブ実行確認")

これでジョブが実行できました。

### 12. ジョブ実行結果確認

ジョブの実行結果は、また別の画面から確認します。
左上の「パースペクティブ」⇒「ジョブ履歴」を選択してください。

![WS000505.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/db2fe95f-0f97-8605-a11f-2d6e0a7be6f4.jpeg "ジョブ履歴")

ジョブの履歴画面が開きます。

![WS000519.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/3db724a5-9a10-4c33-080a-0f31377b0b6d.jpeg "ジョブの履歴")

ジョブの実行状況一覧を見て、先ほど実行したジョブの実行状態が「終了」、終了状態が「正常」となっていることを確認します。
もし実行中の場合は、右上の「更新」ボタンを押して画面を更新してみてください。

![WS000520.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/d79577ce-50a3-0939-f29f-f89795007d5f.jpeg "正常終了")

 OS 側からも、コマンドラインで出力したファイルを確認します。

```Linux:Linux
[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. 備考

インストールの手順や要件以外にも、基本的な情報はだいたいが最初に紹介したマニュアルにまとまっています。
わからないことがあればまずはこのマニュアルを調べてみてもよいかと思います。

[Releases](https://github.com/hinemos/hinemos/releases)

![WS000516.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e61cd33f-4289-4c5d-c36b-4308b439af88.jpeg "マニュアル")