VirtualBoxのCentOS7にZabbixを導入する

#サマリ
監視ソフトを使ってみたかったので、VirtualBoxのCentOSにインストールしてみました。
（ダッシュボードを開くところまで実施。実際の監視設定については後日予定）
自分の備忘のために記録しておきます。
だれかのお役に立てることがあれば幸いです。


#対象読者
- 自分自身
- CUIやVirtualBoxについて基本的な知識がある方（簡単なコマンドはわかる、VirtualBoxの概要・インストール方法がわかる）
- Zabbixが気になるがインストール方法がわからない方（コアすぎる…）

#前提
- VirtualBoxはすでにインストール済み
- CentOS7はインストール済み     

#環境
- ホストOS：Window10 Home
- VirtualBox：バージョン6.1.14 r140239(Qt5.6.2)
- VirtualBox内のCentOS：CentOS7

#背景
自分の仕事の都合上監視システムの開発にかかわるため、OSSであるZabbixを自分でも実際に使ってみようと思いでトライしてみました。

#ゴール
ZabbixをCentOSにインストール、ログインしダッシュボードを見られるところまで実施する。

#手順
基本的には下記の記事を参考にさせていただきました。

https://atsushinotes.com/procedure_zabbix_install_to_login_centos-mysql-apache/


ありがとうございました。

基本は上記のサイトに従っていけば問題ないので、詳細な手順は割愛させていただきます。（おい）

本記事では大きな流れと、実施する中で自分が躓いたこと・その対処法を残したいと思います。

##大きな流れ

1. Zabbixアカウント作成
1. MySQLインストール
1. Zabbixインストール
1. ZabbixDB作成
1. Zabbixフロントエンドにアクセス


##自分が躓いたこと

### KEY問題

MySQLのインストールでいきなり躓いてしまいました。。
エラーが出てインストールに失敗です。
エラーイメージは以下です。

```
Public key for mysql-community-client-8.0.28-1.el7.x86_64.rpm is not installed

 Failing package is: mysql-community-client-8.0.28-1.el7.x86_64
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
```

どうやらGPGキーというものが古く、ファイルが正当なものか判断できずインストール失敗したようです。
GPGキーは自分も知らなかったのですが、下記にわかりやすく説明されていました。

> 「GnuPG」（GNU Privacy Guard）という暗号化ソフトで生成される公開鍵です。Linuxの場合，apt-getコマンドやyumコマンドを使ってインターネットから入手できるパッケージが正しい配布先のものかどうかのチェックなどに利用しています。

https://xtech.nikkei.com/it/article/Keyword/20091204/341579/#:~:text=%E3%80%8CGnuPG%E3%80%8D%EF%BC%88GNU%20Privacy%20Guard,%E3%81%AB%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82


対処としては、下記の記事を参考にさせていただき、解消しました。

https://qiita.com/portfield_slash/items/737c2cc8a103bec0a7c1


### mysqlパスワード問題

恥ずかしながらmysqlをインストールしたのも初めてなので、rootのデフォルトパスワードを変更する際も少しだけ躓きました。
パスワードのポリシーを知らなかったためです。

以下の公式ドキュメントを見る限りは、MySQLではパスワードの命名規則に関して3つのポリシーがあり、
デフォルトではMEDIUMということでした。
（＝最低1つの数値、1つの小文字、1つの大文字、1つの特殊文字を含む）

> LOW ポリシーは、パスワードの長さのみテストします。パスワードは少なくとも 8 文字の長さでなければなりません。
> 
> MEDIUM ポリシーは、パスワードが最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む必要があるという条件を追加します。
> 
> STRONG ポリシーは、パスワードの 4 文字以上の部分文字列が、(辞書ファイルが指定された場合に) 辞書ファイル内の単語と一致してはならないという条件を追加します。

https://dev.mysql.com/doc/refman/5.6/ja/validate-password.html

### symlink張れない問題→無視してOK

Zabbixのインストールも終わり、サーバやhttpdなどを有効化する手順があるのですが、
以下のコマンドを打つと、本当はシンボリックリンクが張られるようなのですが、自分は張られませんでした。

```
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
```

下記のサイトを見ましたが、コマンド実行時に絶対パスを指定するとうまくいくようです。
（最終的に自分はこの手順は無視して先に進めましたが、問題なかったです。（おい））

https://sunday-morning.app/posts/2019-08-05-systemd-symlink

### CentOS7GUIない問題

やっとZabbixを起動しこれからダッシュボードを見よう！
というところまできて気づきました…
「CentOSにGUI環境がない…」
この問題はZabbixの構築とは関係ないのですが、、
CentOS7のインストールをパッパッと進めていったため、
おそらく最小限のインストールになってしまいGUI環境がなかったことにいまさらながら気づきました（遅い）
そのため、下記を参考にGnome Desktopをインストールし起動すれば、簡単にGUI切り替えできました。

https://corgi-lab.com/linux/centos7-install-gui/



### 初期ログインのパスワードzabbix問題

ようやくブラウザにURLを打ち込み、画面表示までたどりつくことができました…！

![zabbix_gui.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/a65aabc0-7dfd-23ab-51f4-e3853f94d3b4.png)

最終セットアップを済ませ、ログインをしようとしたところ、初期固定のID/PWのはずなのになぜか失敗する。。
よくよく調べてみると、

[参考にしていたURL](https://atsushinotes.com/procedure_zabbix_install_to_login_centos-mysql-apache/)ではパスワードが**Zabbix**という記載があったのですが、実際は**zabbix**（一文字目が小文字）でした。

### 起動していない問題→SELinux無視、無理→LocalhostをIPに変換、無理→DBのPW変更、OK

無事ダッシュボードの画面を拝めました！

![zabbix_dashboard_incorrect.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/8abecda3-2f01-347b-7cee-c5fe38a2ccdf.png)

しかしよく見ると、「システム情報」の「パラメータ」のZabbixサーバーの起動の値が「いいえ」になっているではないか…
また、画面下部にも「**Zabbixサーバーが動作していません**」の文字が。。

以下のサイトを参照すると、原因は2つあるということ。
> 1つは/etc/zabbix/web/zabbix.conf.phpの15行目で、
> 
> $ZBX_SERVER = 'localhost'; となっていることにあります。
> 
> ※ディストリビューションやバージョンによっては、/etc/zabbix/zabbix.conf.phpかもしれません。
> 
> もう一つは、SELinuxによりプロセスに権限が不足しているものとなります。


https://www.opensourcetech.tokyo/entry/2018/10/06/Zabbix_4.0_LTS%E3%81%A7_%E3%80%8CZabbix%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%8C%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%EF%BC%88%E7%94%BB%E9%9D%A2%E3%81%AE

しかし、それぞれ対処法を試したのですがなぜかまだ改善されませんでした。。
原因としては、上記の対処法自体に問題があったわけではなく、
[参考元の手順]()でZabbixユーザのDBのパスワードを変更していたのを忘れており、
zabbix_server.confファイルに反映できていなかったためでした。
具体的には、
`/etc/zabbix/zabbix_server.conf`の`DBPassword`部分を以下のように修正しました。

```
DBPassword=Tobias-0627
```

と、いうわけで何とかZabbixが正常に起動し、ダッシュボードを見ることろまで来ることができました…！（ふう）
![zabbix_dashboard_correct.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/015ad2f3-df3f-76ac-4524-aa339b1eae41.png)


#まとめ
- なんやかんやこれだけでも達成できたらうれしい
- 次回はGNS3でネットワーク機器をエミュレートするか別VMでサーバを立てるかして、まずはSNMP監視にトライ
- その次はZabbixエージェントを入れてZabbix監視にトライ

ここまでご精読ありがとうございました。