[Zabbix] ゼロから始めるZabbix -構築-

#はじめに
NW監視の学習として、監視用ツールとして良く使われている「Zabbix」とネットワーク監視方法で良く使われている「snmp」と「snmptrap」の監視環境を構築をしてみる。それらの内容を数回に分けて掲載していく。

**■掲載内容**
1 - **ゼロから始めるZabbix -構築-  （本記事）**
2 - [ゼロから始めるZabbix -SNMP-](https://qiita.com/CyberFortress/items/3d06ceaa11ed3793b04a)
3 - [ゼロから始めるZabbix -SNMPTrap-](https://qiita.com/CyberFortress/items/9a0133c6596bc864d975)

#Zabbixとは？
Zabbix はアレクセイ・ウラジシェフ(Alexei Vladishev)によって作られた、ネットワーク管理ソフトウェアである。様々なネットワークサービス、サーバ 、その他のネットワークハードウェアのステータスを監視・追跡できる。現在はウラジシェフが設立したZabbix社によって開発が継続されている。（フリー百科事典『ウィキペディア（Wikipedia）』より）

■筆者のZabbixに対する認識
・オープンソースのネットワーク管理ソフトウェア
・色々なプラットフォームに対応している
・GUIで操作が可能
・全世界で30万以上インストールして使用されている為、調べるにあたり情報が多い
<img width="500" alt="構成.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570011/236a8d93-887c-0a9d-1890-fc09e8145480.jpeg">

#構築環境
・Centos 7
・zabbix 4.0 LTS
　2020/3/5現在の最新バージョンは4.4になるが、
　LTS(Long Term Support)バージョンの最新は4.0を選択。

#作業
1.Zabbixリポジトリをインストール

```
# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.kt5NZI: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zabbix-release-4.0-2.el7         ################################# [100%]
```



2.Zabbix server(本体)、frontend(Webインターフェース)、agent(自分を監視するエージェント)をインストール

```
2-1 yumコマンドを実施
# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent 
※ログが多いので選択項目以外は省略

2-2 yを押下しenter
Total download size: 13 M
Installed size: 47 M
Is this ok [y/d/N]: y

2-3　yを押下しenter
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
Importing GPG key 0x79EA5ED4:
 Userid     : "Zabbix SIA <packager@zabbix.com>"
 Fingerprint: fbab d5fb 2025 5eca b22e e194 d13d 58e4 79ea 5ed4
 Package    : zabbix-release-4.0-2.el7.noarch (installed)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
Is this ok [y/N]: y

2-4　yを押下しenter
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-6.1810.2.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Is this ok [y/N]: y
```

3.Webインターフェースで日本語フォントを使用できるようにするためにzabbix-web-japaneseをインストール

```
3-1 yumコマンドを実施
# yum install zabbix-web-japanese
※ログが多いので選択項目以外は省略

3-2 yを押下しenter
Total download size: 2.2 M
Installed size: 4.0 M
Is this ok [y/d/N]: y
```

4.MariaDBサーバをインストール
※CentOS7からは、標準ではDBのパッケージはMysqlではなく、
　MariaDBを使用しているとのことで、MariaDBをインストールする

```
4-1 yumコマンドを実施
# yum install mariadb mariadb-server
※ログが多いので選択項目以外は省略

4-2 yを押下しenter
Total download size: 2.2 M
Installed size: 4.0 M
Is this ok [y/d/N]: y
```

5.MariaDB設定
server.cnfの[mysqld]に下記設定を追加
※Zabbixで日本語が文字化けしないように文字コードをutf8に設定。
※innodb~はONにするとファイルI/O分散や、DBAの管理性向上が見込まれるので設定。

```
# vi /etc/my.cnf.d/server.cnf

[mysqld]
character-set-server = utf8
collation-server     = utf8_bin
skip-character-set-client-handshake
innodb_file_per_table
```

6.MariaDBの起動

```
6-1 MariaDBの起動
# systemctl start mariadb

6-2 MariaDBのenable化
# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
```

7.初期パスワード設定

```
7-1 mysql_secure_installationを実行
#mysql_secure_installation
※ログが多いので選択項目以外は省略

7-2 MariaDBのrootパスワードを設定している場合は入力。していない場合はenterを押下。
Enter current password for root (enter for none):

7-3 rootパスワードを設定しますか。
Set root password? [Y/n] Y

7-4 新しいパスワードを（任意）を入力
New password:【rootパスワード】

7-5 新しいパスワードを（任意）を再度入力
Re-enter new password:【rootパスワード】

7-6 匿名ユーザの削除をしますか。
Remove anonymous users? [Y/n] Y

7-7 リモートからの root ログインを禁止しますか？
Disallow root login remotely? [Y/n] n

7-8 テストデータベースとそのアクセスを削除しますか。
Remove test database and access to it? [Y/n] Y

7-9 設定を反映してリロードしますか。
Reload privilege tables now? [Y/n] Y
```


8.初期DBとユーザの作成

```
8-1 DBにログイン
#mysql -uroot -p
Enter password:【rootパスワード】（7-4で設定したパスワードを使用）

8-2 DBを作成
> create database 【DB名】;
Query OK, 1 row affected (0.00 sec)

8-3 作成したDBを確認
> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
|【DB名】            |
+--------------------+
4 rows in set (0.00 sec)

8-3 作成したDBにアクセスするユーザを作成
> grant all privileges on 【DB名】.* to 【DBユーザ名】@localhost identified by '【DBパスワード】';
Query OK, 0 rows affected (0.00 sec)

8-4 作成したホストとユーザが紐づいたことを確認
> select user, host from mysql.user;
+----------------+------------+
| user           | host       |
+----------------+------------+
| root           | 127.0.0.1  |
| root           | ::1        |
| root           | localhost  |
|【DBユーザ名】  | localhost  |
+----------------+------------+
4 rows in set (0.00 sec)
 
8-5 DBから抜ける
> exit
```

9.初期データをインポート

```

9-1 zabbix-server-mysql-X.X.X のファイル名（バージョン）を確認
#ls -l /usr/share/doc | grep zabbix-server-mysql
drwxr-xr-x   2 root root  100 Mar 13 15:40 zabbix-server-mysql-4.0.18

⇒zabbix-server-mysql-4.0.18だということが分かる

9-2上記のファイル名を4.0.18に置き換え、DB名を入れて実行
#zcat /usr/share/doc/zabbix-server-mysql-4.0.18/create.sql.gz | mysql -u【DBユーザ名】 -p 【DB名】
Enter password:【DBパスワード】
```

10.Zabbixサーバのデータベース設定

```:
10-1 viでファイルを開き、下記を変更する
#vi /etc/zabbix/zabbix_server.conf

10-2 DBHostのコメントアウトを取る
[before]
# DBHost=localhost
[after]
DBHost=localhost

10-3 DBNameがzabbixではない場合は修正
[before]
DBName=zabbix
[after]
DBName=【DB名】

10-4 DBuserがzabbixではない場合は修正
[before]
DBUser=zabbix
[after]
DBUser=【DBユーザー名】

10-5  DBPasswordのコメントアウトを取り、設定したパスワードを入力
[before]
# DBPassword=
[after]
DBPassword=【DBパスワード】

10-6  StatsAllowedIPを下記の様に変更
[before]
# StatsAllowedIP=
[after]
StatsAllowedIP=127.0.0.1
```

11.zabbixフロントエンドのタイムゾーン設定

```
11-1 viでzabbix.confを開く
# vi /etc/httpd/conf.d/zabbix.conf

11-2　php_value date.timezone を下記の様に変更
[before]
 # php_value date.timezone Europe/Riga
[after]
php_value date.timezone Asia/Tokyo
```
12.各種デーモンを起動

```
12-1 Zabbixサーバを起動
# systemctl start zabbix-server

12-2 Zabbixエージェンントを起動
# systemctl start zabbix-agent

12-3 Webサーバを起動
# systemctl start httpd

12-4 Zabbixサーバをenable化
# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.

12-5 Zabbixエージェントをenable化
# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

12-6 Webサーバをenable化
# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

```

13.Webインターフェースを開く
インストールしたzabbixのページにを下記手順でアクセスし、Next stepを押下
アドレス：http://【自分のIP】/zabbix
<img width="423" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570011/c502d3fd-6033-2889-0396-3476bff21972.png">

14.全てOKであることを確認し、Next stepを押下
<img width="424" alt="2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570011/a0d9fcd0-065b-e9d8-9e93-7b26b327ff95.png">

15.下記を入力し、Next stepを押下

| 項目 | 値 |
|:-:|:-:|
| Database name | 【DB名】 |
| User | 【DBユーザ名】 |
| Password | 【DBパスワード】 |

<img width="426" alt="DB_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570011/ca3fb5df-d9da-0f62-f1f2-a17c232bb690.png">

16.Next stepを押下
<img width="421" alt="4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570011/b0b3a785-99d9-630d-100f-c1899a496040.png">

17.入力した内容に不備がないことを確認し、Next stepを押下
<img width="419" alt="6_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570011/7604da0c-9d7b-ad04-d235-966094426e91.png">

18.finishを押下
<img width="424" alt="7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570011/b0ef7ec6-c27c-1361-f8fc-da3edc0b21c6.png">

19.下記を入力してログイン

| 種別 | 値 |
|:-:|:-:|
| USERNAME | Admin |
| PASSWORD | zabbix |

<img width="300" alt="10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570011/7ca9bf1c-ed76-2dbe-9d34-57c49370f01b.png">

20.Zabbixのダッシュボードが確認できれば構築完了
<img width="600" alt="end.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570011/d77018eb-9bae-5eab-5fba-16f17089801b.png">

#おわりに
Zabbixをサーバーにインストールすることが出来た。
これだけでは何も監視は出来ない為、監視対象を登録し、機器情報を受け取る設定が必要。
その為、次回は監視対象の登録と、監視をする上で必要なSNMPの設定を学習していく。


#参考文献
[Zabbix公式](https://www.zabbix.com/jp)
[Zabbixwiki](https://ja.wikipedia.org/wiki/Zabbix)
[【3分でわかるシリーズ】CentOSとは？](https://eng-entrance.com/what-is-centos)
[Zabbix 3.0をCentOS 7にインストール](https://qiita.com/atanaka7/items/294a639effdb804cfdaa)
[MariaDB](https://mariadb.com/kb/ja/mysql_secure_installation/)
[Zabbix用サーバでのMySQL my.cnf 設定](https://www.checksite.jp/zabbix-mysql-my-cnf/)