CentOS 7 on Raspberry Pi 4 に zabbix4.4系列を入れた話

2020年春先は、ソースコードをコンパイルしてインストールしました。今回は、src.rpmファイルから rpm を作成してインストールしたことを記録として残しおきます。

src.rpm から rpm を作成するのに次の記事を参考にさせていただきました。

[【簡単に解説】RPMパッケージを作成する方法](https://eng-entrance.com/linux-package-rpm-create)


まずは、src.rpm から rpm を作成するための環境を揃えます。

```
[root@mame-c12 ~]# yum install rpm-build
[root@mame-c12 ~]# yum groupinstall 'Development tools'
```

続いて、zabbix の src.rpm をダウンロードします。
今回、CentOS へ 4.4系列 をインストールするので以下のURLから適当なマイナーリビジョンの src.rpm を選択しました。

[Zabbix Official Repository | Index of /zabbix/4.4/rhel/7/SRPMS/](https://repo.zabbix.com/zabbix/4.4/rhel/7/SRPMS/)

```
[root@mame-c12 ~]# wget https://repo.zabbix.com/zabbix/4.4/rhel/7/SRPMS/zabbix-4.4.10-1.el7.src.rpm
```

wget コマンドがインストールされていない場合は、以下を参考にyumでインストールおく。

```
[root@mame-c12 ~]# yum install wget
```

これでホームディレクトリに、zabbix-4.4.10-1.el7.src.rpm がダウンロードされています。

続いて、src.rpm を展開します。

```
[root@mame-c12 ~]# rpm -ivh zabbix-4.4.10-1.el7.src.rpm
```

展開途中に　警告　が出ますが気にしなくても大丈夫でした。

ホームディレクトリに、rpmbuild ディレクトリが作成されています。

```
[root@mame-c12 ~]# ls -l
合計 18824
-rw-r--r--. 1 root root      134 10月 30 01:29 README
-rw-r--r--. 1 root root     7302 10月 30 01:29 anaconda-ks.cfg
drwxr-xr-x  8 root root     4096  3月 12 07:34 rpmbuild
-rw-r--r--  1 root root 19256698  6月 29  2020 zabbix-4.4.10-1.el7.src.rpm
[root@mame-c12 ~]#
```

src.rpm から rpm を作成するには、◯◯◯.spec というファイルを読み込み、そのファイルに記載されている情報をもとに、コンパイル（make）などが実行されます。
spec ファイルのあるディレクトリへ移動します。

```
[root@mame-c12 ~]# cd rpmbuild/SPECS/
[root@mame-c12 SPECS]# ls
zabbix.spec
[root@mame-c12 SPECS]#
```

あとは、このspec ファイルを指定して、rpmbuild コマンドを実行するのみ。
と思っていたら、必要なライブラリが入っていなくビルドに失敗しました。

```
[root@mame-c12 SPECS]# rpmbuild -ba zabbix.spec
mysql-devel は zabbix-4.4.10-1.el7.aarch64 に必要とされています
postgresql-devel は zabbix-4.4.10-1.el7.aarch64 に必要とされています
net-snmp-devel は zabbix-4.4.10-1.el7.aarch64 に必要とされています
openldap-devel は zabbix-4.4.10-1.el7.aarch64 に必要とされています
gnutls-devel は zabbix-4.4.10-1.el7.aarch64 に必要とされています
sqlite-devel は zabbix-4.4.10-1.el7.aarch64 に必要とされています
unixODBC-devel は zabbix-4.4.10-1.el7.aarch64 に必要とされています
curl-devel >= 7.13.1 は zabbix-4.4.10-1.el7.aarch64 に必要とされています
OpenIPMI-devel >= 2 は zabbix-4.4.10-1.el7.aarch64 に必要とされています
libssh2-devel >= 1.0.0 は zabbix-4.4.10-1.el7.aarch64 に必要とされています
java-devel >= 1.6.0 は zabbix-4.4.10-1.el7.aarch64 に必要とされています
libxml2-devel は zabbix-4.4.10-1.el7.aarch64 に必要とされています
libevent-devel は zabbix-4.4.10-1.el7.aarch64 に必要とされています

```

ライブラリを一つ一つ確認しながらyum でインストールしました。

```
[root@mame-c12 SPECS]# yum install mysql-devel
[root@mame-c12 SPECS]# yum install postgresql-devel
[root@mame-c12 SPECS]# yum install net-snmp-devel
　：
　：
```

再度、rpmbuild コマンドで、src.rpm から rpm を作成し、rpm が完成です。結構、時間がかかりました。

```
[root@mame-c12 SPECS]# rpmbuild -ba zabbix.spec
　：
　：
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.SkQC7v
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd zabbix-4.4.10
+ rm -rf /root/rpmbuild/BUILDROOT/zabbix-4.4.10-1.el7.aarch64
+ exit 0
[root@mame-c12 SPECS]#

```

完成した rpm はディレクトリ　/root/rpmbuild/RPMS/aarch64　に格納されています。

```
[root@mame-c12 aarch64]# pwd
/root/rpmbuild/RPMS/aarch64
[root@mame-c12 aarch64]# ls
zabbix-agent-4.4.10-1.el7.aarch64.rpm         zabbix-proxy-pgsql-4.4.10-1.el7.aarch64.rpm
zabbix-debuginfo-4.4.10-1.el7.aarch64.rpm     zabbix-proxy-sqlite3-4.4.10-1.el7.aarch64.rpm
zabbix-get-4.4.10-1.el7.aarch64.rpm           zabbix-sender-4.4.10-1.el7.aarch64.rpm
zabbix-java-gateway-4.4.10-1.el7.aarch64.rpm  zabbix-server-mysql-4.4.10-1.el7.aarch64.rpm
zabbix-js-4.4.10-1.el7.aarch64.rpm            zabbix-server-pgsql-4.4.10-1.el7.aarch64.rpm
zabbix-proxy-mysql-4.4.10-1.el7.aarch64.rpm
[root@mame-c12 aarch64]#

```

rpm が作成できたので、agent も server も rpm コマンドでインストールすることができるようになりました。

```
[root@mame-c12 aarch64]# rpm -ivh zabbix-agent-4.4.10-1.el7.aarch64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:zabbix-agent-4.4.10-1.el7        ################################# [100%]
[root@mame-c12 aarch64]#
```

zabbix agent が ディレクトリ /etc/zabbix にインストールされます。

zabbix_agentd.conf の Server、Hostname、ServerActive 辺りの値は動かす環境に合わせて編集してください。

```
[root@mame-c12 zabbix]# pwd
/etc/zabbix
[root@mame-c12 zabbix]# ls -l
合計 20
-rw-r--r-- 1 root root 13936  3月 12 07:49 zabbix_agentd.conf
drwxr-xr-x 2 root root  4096  3月 12 07:49 zabbix_agentd.d
[root@mame-c12 zabbix]#
```

zabbix agent は、デフォルトでは、TCP 10050 ポートで、zabbix server と通信を行います。
そのため、firewall の設定で、10050 ポートを開けるか、firewall に予め用意されている、zabbix agent 用のサービスを firewall に登録する必要があります。

```
[root@mame-c12 zabbix]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports: 22/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

```

ポート番号指定で開ける場合

```
[root@mame-c12 zabbix]# firewall-cmd --zone=public --permanent --add-port=10050/tcp
success
[root@mame-c12 zabbix]# firewall-cmd --reload
success
[root@mame-c12 zabbix]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports: 22/tcp 10050/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

[root@mame-c12 zabbix]#
```

サービス登録する形でポートを開ける場合

```
[root@mame-c12 zabbix]# firewall-cmd --zone=public --add-service=zabbix-agent --permanent
success
[root@mame-c12 zabbix]# firewall-cmd --reload
success
[root@mame-c12 zabbix]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh zabbix-agent
  ports: 22/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

[root@mame-c12 zabbix]#
```

最後に、zabbix agent を起動します。

```
[root@mame-c12 zabbix]# systemctl start zabbix-agent
[root@mame-c12 zabbix]# systemctl status zabbix-agent
● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; disabled; vendor preset: disabled)
   Active: active (running) since 金 2021-03-12 08:46:46 UTC; 15s ago
  Process: 14534 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
 Main PID: 14536 (zabbix_agentd)
   CGroup: /system.slice/zabbix-agent.service
           tq14536 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
           tq14537 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
           tq14538 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
           tq14539 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
           tq14540 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
           mq14541 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]

 3月 12 08:46:46 mame-c12 systemd[1]: Starting Zabbix Agent...
 3月 12 08:46:46 mame-c12 systemd[1]: zabbix-agent.service: Supervising process 14536 which is...its.
 3月 12 08:46:46 mame-c12 systemd[1]: Started Zabbix Agent.
Hint: Some lines were ellipsized, use -l to show in full.
[root@mame-c12 zabbix]#
```

自動起動にしたい場合

```
[root@mame-c12 zabbix]#　systemctl enable zabbix-agent
```


サーバー側のインストールは、またの機会に記載します。