zabbix メモ

# 事前準備

・Ubuntu16/CentOS7
・パッケージのアップデート
・vimの導入

# zabbixのバージョン

3.4

# リポジトリの追加

```
http://repo.zabbix.com/zabbix
から、望みのdebファイルのURLを見つける
```

```:Ubuntu
cd /path/to/zabbix3.4
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb
sudo apt -y update
```

```:CentOS
sudo rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
sudo yum -y update
```

# 必要なパッケージのインストール

```
sudo apt/yum -y install zabbix-server-mysql zabbix-agent zabbix-get zabbix-sender
```

```:Ubuntu
sudo apt -y install zabbix-frontend-php language-pack-ja
```

```:CentOS
sudo yum -y install zabbix-web-mysql zabbix-web-japanese 
```

# DBの設定

インストール

```:Ubuntu
sudo apt -y install mariadb-server 
```

```:CentOS
sudo yum -y install mariadb mariadb-server
```

CentOSのみ、`/etc/my.cnf`の`[mysqld]`ブロック（の中の2018年現在`symbolic-links=0`の次の項）に

```
character-set-server=utf8
```

を追記。

Ubuntuは`/etc/mysql/mariadb.conf.d/50-server.cnf`の`[mysqld]`ブロック内に`character-set-server  = utf8mb4`と最初から書いてあるためノータッチ。

`mariadb`のstartとenable

```:Ubuntu
sudo systemctl start mysql.service
sudo systemctl enable mysql.service
```

```:CentOS
sudo systemctl start mariadb
sudo systemctl enable mariadb
```

DBに接続

```
sudo mysql -u root -p
```

パスワード作成

```
set password = password('hogehoge');
quit;
```

再接続

```
sudo mysql -u root -p
```

utf8でDBを作成

```
create database zabbix character set utf8 collate utf8_bin;
```

zabbixユーザを作成
「zabbix.*」にマッチする権限を「zabbix@localhost」に与える

```
grant all on zabbix.* to zabbix@localhost identified by "<password>";
quit;
```

公式が用意してくれているzabbixの初期状態のDBを流し込む

```:Ubuntu
cd /usr/share/doc/zabbix-server-mysql/ #現在
```

```:CentOS
cd /usr/share/doc/zabbix-server-mysql-3.4.7/ #現在
```

```
sudo gzip -d create.sql.gz
cat create.sql | sudo mysql -u zabbix -p zabbix #-u=zabbix, -p, 第一引数:zabbix
```

# zabbixサーバーの設定

`sudo vim /etc/zabbix/zabbix_server.conf`（2018年現在）

```
DBUser=zabbix

### Option: DBPassword
#       Database password. Ignored for SQLite.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
- #DBPassword=
+ DBPassword=hoge
```

# httpdの設定を変更

```:Ubuntu
sudo vim /etc/apache2/conf-available/zabbix.conf
```

```:CentOS
sudo vim /etc/httpd/conf.d/zabbix.conf
```

```
<IfModule mod_php5.c>
       php_value max_execution_time 300
       php_value memory_limit 128M
       php_value post_max_size 16M
       php_value upload_max_filesize 2M
       php_value max_input_time 300
       php_value always_populate_raw_post_data -1
-       # php_value date.timezone Europe/Riga
+       php_value date.timezone Asia/Tokyo
</IfModule>
```

Ubuntuはなぜかphp7も設定しないとダメだった

```:Ubuntu
<IfModule mod_php7.c>
...
+       php_value date.timezone Asia/Tokyo
```

# zabbixサーバーの起動と自動起動設定

```
sudo systemctl start zabbix-server #SELinuxが有効だとここでエラーになるので後述の方法で対処
sudo systemctl enable zabbix-server
```

# apache httpdの再起動と自動起動設定

```:Ubuntu
sudo systemctl restart apache2
sudo systemctl enable apache2
```

```:CentOS
sudo systemctl restart httpd
sudo systemctl enable httpd
```

# 確認用にzabbixエージェントも起動しておく

```
sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent
```

# 一応バージョンを確認

```
zabbix_get -s 127.0.0.1 -k agent.version
```

# firewallの設定を良い感じにする

firewalldが原因で次の手順を行ってもうまくいかない可能性があるので、
https://qiita.com/miyagaw61/items/1dd937f1c6d9341e5635
あたりの記事を参考にしながら良い感じにしてください

ポイントとしては、ZabbixのWebUIを見るためにhttp（80番ポート）、zabbix-serverが10051番ポート、zabbix-agentが10050番ポートを使用します。

# Zabbix の初期設定

https://blog.apar.jp/zabbix/8070/#Zabbix-3

# ユーザーパスワードと言語の変更

https://blog.apar.jp/zabbix/8070/#i-3

# リロード

F5


# SELinux

しかし、このままではSELinuxが有効になっている場合、zabbix-serverのstartに失敗することがある。
以下のようにSELinuxを完全に無効化してもいいが...

```
vim /etc/selinux/config
```

```
- SELINUX=enforcing
+ SELINUX=disable
```

SELinuxと共存するには以下のようにSELinuxを設定する必要がある。

# SELinuxの設定を変える

httpdによる書き込み権限をSELinuxに付与

```
setsebool -P httpd_can_network_connect on
```

zabbixがネットワークを用いてDBを更新する権限をSELinuxに付与

```
setsebool -P zabbix_can_network on
```

# SELinuxの設定を追加するために設定作成を補助するツールをインストール

```
yum install policycoreutils-python
```

policycoreutils-pythonはSELinux の操作および管理用のsemanage、audit2allow、audit2why、chcatといった各種ユーティリティーを提供する。

# `/var/log/audit/audit.log`から情報収集

auditとは：[Audit ってなんだ - ゆらろぐ](http://yurakawa.hatenablog.jp/entry/what-is-audit) ( [archive](http://archive.is/hMQEs) )


```
grep zabbix_server /var/log/audit/audit.log | audit2allow
```

```
#============= zabbix_t ==============
allow zabbix_t self:process setrlimit;

#!!!! The file '/run/zabbix/zabbix_server_preprocessing.sock' is mislabeled on your system.
#!!!! Fix with $ restorecon -R -v /run/zabbix/zabbix_server_preprocessing.sock
#!!!! This avc can be allowed using the boolean 'daemons_enable_cluster_mode'
allow zabbix_t self:unix_stream_socket connectto;
allow zabbix_t zabbix_var_run_t:sock_file create;
```

# ポリシーファイルを生成、読み込み

`grep zabbix_server /var/log/audit/audit.log | audit2allow -M zabbix-limit`

```
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i zabbix-limit.pp
```

```
semodule -i zabbix-limit.pp
```

# 再起動

再起動を行う

# 参考

・[Zabbix 3.4 を yumでインストール（CentOS 7） | あぱーブログ](https://blog.apar.jp/zabbix/8070/#Zabbix_34-3) ( [archive](http://archive.is/bS8AQ) )