FreeBSDでZABBIX3を動かす

# 前提環境

LinuxでDocker使うと簡単に環境作れるのは分かってるけど、FreeBSD使いたいので、ちまちまと。
2017/9/21 追記：SNMP Trapを受けられるように変更
2018/7/25 追記：fping 4.0からIPv4/IPv6どちらもサポートするようになり、JailのネットワークI/FにIPv6アドレスを付けないと動作しないため、その部分を追記

- OS
    - FreeBSD 11.1R
    - qjail
- IPアドレス
    - 192.168.10.121を想定

- データベース
    - MySQL(別サーバで構築済みを想定)
    - 192.168.10.120を想定
    - innodb_file_per_table オプションが必要な事を忘れない事！
- Webサーバ
    - lighttpd

# ホストの設定

```
# sysctl security.jail.sysvipc_allowed=1
# sysrc jail_sysvipc_allow=YES
```

# Jailを作る

```
# qjail create -4 192.168.10.121 -6 fe80::121 -n hn0 zabbix
# qjail config -y zabbix
# qjail config -k zabbix
```

これ以降はJailの中の操作

# インストール

```
# pkg install zabbix3-server
# pkg install zabbix3-frontend
# pkg install zabbix3-agent
# pkg install lighttpd
# pkg install ja-font-ipa-uigothic
```

# 設定

## PHP

```
# cp -p /usr/local/etc/php.ini-production /usr/local/etc/php.ini
```

変更箇所のみ


```php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Tokyo
always_populate_raw_post_data = -1
```

## ZABBIX Server

```
# cd /usr/local/share/zabbix3/server
# mysql -h 192.168.10.120 -uzabbix3 -p zabbix3 < database/mysql/schema.sql
# mysql -h 192.168.10.120 -uzabbix3 -p zabbix3 < database/mysql/images.sql
# mysql -h 192.168.10.120 -uzabbix3 -p zabbix3 < database/mysql/data.sql

# cd /usr/local/etc/zabbix3/
# cp zabbix_server.conf.sample zabbix_server.conf
```

変更箇所のみ
別で構築済みのMySQLサーバの情報を設定

```zabbix_server.conf
LogFile=/var/log/zabbix_server.log
DBHost=192.168.10.120
DBName=zabbix3
DBUser=zabbix3
DBPassword=foobar
Fping6Location=/usr/local/sbin/fping6
FpingLocation=/usr/local/sbin/fping
ListenIP=192.168.10.121
```

```
# sysrc zabbix_server_enable=YES
# touch /var/log/zabbix_server.log
# chown zabbix:zabbix /var/log/zabbix_server.log
# service zabbix_server start

# cd /usr/local/www/zabbix3/fonts/
# ln -s /usr/local/share/font-ipa-uigothic/ipagui.ttf ipagui.ttf
```

```/usr/local/www/zabbix3/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'ipagui');
```

## ZABBIX Agent

```
# cd /usr/local/etc/zabbix3
# cp zabbix_agentd.conf.sample zabbix_agentd.conf
```

変更箇所のみ

```zabbix_agentd.conf
LogFile=/var/log/zabbix_agentd.log
Server=192.168.10.121
```

```
# sysrc zabbix_agentd_enable=YES
# touch /var/log/zabbix_agentd.log
# chown zabbix:zabbix /var/log/zabbix_agentd.log
# service zabbix_agentd start
```

## lighttpd

変更箇所のみ

```lighttpd.conf
var.log_root    = "/var/log/lighttpd"
server.use-ipv6 = "disable"
server.bind = "192.168.10.121"
server.document-root = "/usr/local/www/zabbix3/"
$SERVER["socket"] == "192.168.10.121:80" { }
```

```modules.conf
include "conf.d/fastcgi.conf"
```

```conf.d/fastcgi.conf
fastcgi.server = ( ".php" =>
                   ( "php-local" =>
                     (
                       "socket" => socket_dir + "/php-fastcgi-1.socket",
                       "bin-path" => "/usr/local/bin/php-cgi",
                       "max-procs" => 1,
                       "broken-scriptfilename" => "enable",
                     )
                   ),
)
```

```
# mkdir -p /var/spool/lighttpd/sockets/
# sysrc lighttpd_enable=YES
# service lighttpd start
```
 
## ZABBIX Frontendの設定

- http://192.168.10.121/ へアクセス
- データベース名・ユーザ名・パスワードなどを入力(別で構築済みのMySQLサーバの情報を設定)

# ZABBIX Frontendへアクセス

- http://192.168.10.121/
- ユーザ名：admin/パスワード：zabbixでログイン

あとは普通にZABBIXを設定

# SNMP Trapを受けられるようにする

```
# cd ~
# fetch http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.2/zabbix-3.2.2.tar.gz/download
# tar xvzf download
# rm download
# cd zabbix-3.2.2/
# cp misc/snmptrap/zabbix_trap_receiver.pl /usr/local/share/zabbix3/
# chmod 755 /usr/local/share/zabbix3/zabbix_trap_receiver.pl
# sysrc snmptrapd_enable=YES
```

```/usr/local/share/zabbix3/zabbix_trap_receiver.pl
$SNMPTrapperFile = '/var/log/zabbix_snmptrap.log';
```

```/usr/local/share/snmp/snmptrapd.conf
authCommunity log,execute,net private
authCommunity log,execute,net public

perl do "/usr/local/share/zabbix3/zabbix_trap_receiver.pl"

disableAuthorization yes
pidfile /var/run/snmptrapd.pid
donotlogtraps no
logoption f /var/log/snmptrap.log
```

```/usr/local/etc/zabbix3/zabbix_server.conf
SNMPTrapperFile=/var/log/zabbix_snmptrap.log
StartSNMPTrapper=1
```

```
# service snmptrapd start
```

SNMP Trapのテンプレートを作成し、該当ホストへ適用
- https://gist.github.com/tatsuyaueda/dabe513853f49f07527f9ef120e1374b

ZABBIXの監視データ→最新データでSNMP Trapの情報が確認出来ればOK