Zabbixを動かそうと、久方ぶりにFreeBSD 11.1をインストールしました。
その記録です。

OSインストール前に

インストーラを用意します。

  1. USBメモリ用のイメージをダウンロードします。
  2. dd if=イメージファイル of=/dev/USBメモリのデバイス bs=1M conv=syncとしてブータブルUSBメモリを作成します。

OSインストール

昔と比べて、ウィザード形式っぽい一方通行のインストーラになりました。
画面に従っていけば終わっちゃいました。

以下は、インストール途中で寄り道したぶんです。

ルートファイルシステムのミラー化

HDDを2個付けてミラー化しました。

Partitioning画面で、「ZFS(Auto)」を選びます。
ZFS Configuration画面で次のように設定しました。

項目 内容
Pool Type/Disks mirrorを選ぶ
Force 4K Sectors 古いHDDなのでNoにしました
Partition Schema GPT
Swap Size 0(あとで作ります)
Mirro Swap No

メモリ3GBしかないので、ZFSのプリフェッチは使わないようにするよ、と言われてしまいました。

起動するサービス

System Configuration画面で以下のようにしました。

項目 設定
local_unbound  
sshd x
moused  
ntpd  
powerd x
dumpdev  

OSインストール後

グループ/ユーザの追加

pw group add mygroup -g 1000
adduser

プロキシ環境変数の設定

/etc/csh.cshrc

set proxy = http://proxy.local:8080     
setenv http_proxy $proxy                     
setenv https_proxy $proxy                    
setenv ftp_proxy $proxy                    

スワップの追加

zfs create -V 4G zroot/SWAP
zfs set org.freebsd:swap=on checksum=off compression=off dedup=off sync=disabled primarycache=none zroot/SWAP

再起動して確認

# swapctl -s -h -l
Device:            Bytes      Used:
/dev/zvol/zroot/SWAP       4.0G         0B
Total:              4.0G         0B

参照: https://wiki.freebsd.org/RootOnZFS#ZFS_Swap_Volume

アップグレード

freebsd-update fetch
freebsd-update install
reboot

portsの更新

portsnap fetch
portsnap extract

pkg使うから、いらなかったかも。。。

パッケージ管理システム

pkgコマンドを実行したら、自動的にインストールされました。便利極まりないですね。

# pkg 
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/quarterly, please wait...
Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done
Installing pkg-1.10.1...
Extracting pkg-1.10.1: 100%
pkg: not enough arguments
Usage: pkg [-v] [-d] [-l] [-N] [-j <jail name or id>|-c <chroot path>|-r <rootdir>] [-C <configuration file>] [-R <repo config dir>] [-o var=value] [-4|-6] <command> [<args>]

For more information on available commands and options see 'pkg help'.

sudoをインストール

pkg install sudo
visudo

引き継ぐ環境変数と、sudoを使用できるグループを追記しました。

sudoers

Defaults env_keep += "http_proxy https_proxy ftp_proxy"

%wheel ALL=(ALL) ALL

root宛のメールを自分宛てに

vi /etc/aliases

root:自分のメールアドレスを追記します。

newaliases

メールをすべて特定ホストへ転送

cd /etc/mail
sudo make `hostname`.mc
sudo make `hostname`.mc

SMART_HOSTを追記します。

sudo vi `hostname`.mc

/etc/mail/ホスト名.mc

define(`SMART_HOST', `my.smtp.server')

ビルドしてsendmailを再起動します。

sudo make install
sudo make restart

Zabbixのインストールと設定

やっとこ本題のZabbixです。

MySQL/Zabbix/Nginxのインストール

MySQL/Zabbix/Nginxをインストール

sudo pkg install mysql56-server
sudo pkg install zabbix34-server
sudo pkg install zabbix34-frontend
sudo pkg install nginx

/etc/rc.conf.localファイルに追記します。

/etc/rc.conf.local

mysql_enable="YES"                           
zabbix_server_enable="YES"                   
php_fpm_enable="YES"                         
nginx_enable="YES"        

データベース作成

zabbix34-serverインストール時に、以下のメッセージが表示されました。

For Zabbix server and proxy daemons, as well as Zabbix frontend, a database is                                                                                                      
required. It is not needed to run Zabbix agent.                                                                                                                                     
                                                                                                                                                                                    
% cd /usr/local/share/zabbix34/server/database                                                                                                                                      
                                                                                                                                                                                    
MySQL:                                       
shell> mysql -u<username> -p<password>       
mysql> create database zabbix character set utf8;                                         
mysql> quit;                                 
shell> mysql -u<username> -p<password> zabbix < database/mysql/schema.sql                 
shell> mysql -u<username> -p<password> zabbix < database/mysql/images.sql                 
shell> mysql -u<username> -p<password> zabbix < database/mysql/data.sql             

指示に従ってデータベースを作成します。

MySQLを起動

sudo service mysql-server start

MySQLへ接続

mysql -u root

データベースとユーザを作成

create database zabbix character set utf8;
grant all on zabbix.* to `zabbix_user`@`localhost` identified by 'zabbix_pass';

テーブル等を作成

cd /usr/local/share/zabbix34/server/database/
mysql -u zabbix_user -p zabbix < mysql/schema.sql
mysql -u zabbix_user -p zabbix < mysql/images.sql
mysql -u zabbix_user -p zabbix < mysql/data.sql 

Zabbixサーバの設定と起動

/usr/local/etc/zabbix34/zabbix_server.conf

LogFile=/tmp/zabbix_server.log               

DBName=zabbix                                
DBUser=zabbix_user                           
DBPassword=zabbix_pass                       

Timeout=4                                    

LogSlowQueries=3000        

zabbixサーバを起動

sudo service zabbix_server start

Nginxの設定と起動

Zabbixフロントエンドを動かすためNginxを設定します。

ドキュメントルートを/usr/local/wwwにしました。
*.phpへのアクセスは、PHP FPMへ回すようにしました。

/usr/local/etc/nginx/nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout 65;
    
    server {
        listen 80;
        root /usr/local/www;
        index index.html index.htm index.php;

        location ~ [^/]\.php(/|$) {
             fastcgi_split_path_info ^(.+?\.php)(/.*)$;

             if (!-f $document_root$fastcgi_script_name) {
                 return 404;
             }

             fastcgi_index index.php;
             fastcgi_pass 127.0.0.1:9000;
             fastcgi_param HTTP_PROXY "";
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

             # include the fastcgi_param setting
             include fastcgi_params;
        }
    }
}

php-fpmとnginxを起動

sudo service php-fpm start
sudo service nginx start

ブラウザからhttp://ホスト名/zabbix34/へアクセスすると、こんな画面が表示されます。

image.png

Zabbixフロントエンドの設定

設定を進めると、こんなメッセージが表示されました。

  • Minimum required size of PHP post is 16M (configuration option “post_max_size”).
  • Minimum required limit on execution time of PHP scripts is 300 (configuration option “max_execution_time”).
  • Time zone for PHP is not set (configuration parameter “date.timezone”).
  • PHP option “always_populate_raw_post_data” must be set to “-1”

指示に従い設定します。

/usr/local/etc/php/zabbix-required.ini

post_max_size = 16M
max_execution_time = -1
always_populate_raw_post_data = -1

[Date]
date.timezone = Asia/Tokyo

php-fpmを再起動

sudo service php-fpm restart

All OKになりました。

image.png

データベース接続先を設定します。

image.png

Zabbixサーバを指定します。

image.png

確認。

image.png

設定ファイル書き込めないから、自前でダウンロードして置きなさいと言われてしまいました。

image.png

ファイルを自前で置いて、[Finish]をクリック。
終わりました〜〜 :smile:

image.png

おしまい

初期パスワードはadmin/zabbixです。

image.png

ログインしたら、せっせと監視対象を追加していきましょう。

image.png