Mac開発環境も無料で監視出来る！MacにZabbix 3.2をインストールしてOSとMySQLを監視

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/8967a78a-04f4-7b29-6cf9-f66958991783.png)


zabbixを実践投入しようかなと思ってまして、 ローカルでいろいろ試したいので、Macに入れてみました。
homebrewでいれようと思ったのですが、インストールはできるのですが、zabbix_serverが起動しないので、ソースから入れています。

# 環境
* OS X EI Captian (10.11.6)
* Zabbix 3.2.1
* MySQL 5.6.31-log (homebrewでインストール)
* PHP 5.5.38 (homebrewでインストール): zabbixのUI用. 特にこのバージョンでなくても動くと思います。

# Macの設定

デフォルトのまま、Zabbixサーバを起動すると、shared memoryが足りないと言われるので以下の設定をして、Macを再起動します。

```
sudo vi /etc/sysctl.conf  # 以下のように設定する
kern.sysv.shmall=2097152
kern.sysv.shmmax=134217728
```

# Zabbixインストール

まず、[Download](http://www.zabbix.com/jp/download.php)からZabbixのソースを任意の位置にダウンロードします.

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/e2d89b96-fb8b-ffeb-bfcf-4a044c203bd3.png)

各種必要なパッケージがあれば、インストールしておきます。自分は以下が必要でしたが環境によるかなと思うので、のちほど実行する、 ```./configureが``` がこけたら適宜エラーをみて、実行してください。

```
brew install libxml2
brew install gnutls
```

ソースの解凍先のディレクトリで、configureを実行し、エラーがなければmake installします。なお、 ```--with-gnutls``` はPSKでクライアント認証をするためです。

```
./configure --enable-server --enable-agent --with-mysql=/usr/local/bin/mysql_config --with-net-snmp --with-libcurl --with-gnutls
make install
```

すると以下の位置に各種インストールされます

```
/usr/local/sbin/zabbix_*  # Zabbixのagentとserverの実行スクリプト
/usr/local/share/zabbix/externalscripts
/usr/local/share/zabbix/alertscripts  # アラート用スクリプト. 
/usr/local/etc/zabbix_*  # 設定ファイル
```

なおログファイルはデフォルトで/tmp以下にできます。

# データベースの設定

[1 Database creation scripts](https://www.zabbix.com/documentation/3.2/manual/appendix/install/db_scripts)に書いてあるように、データベースのスキーマを作成します。

ソースを解凍したディレクトリ以下で以下のコマンドを実行します。なお、MySQLのパスワードは各自変えてください。

```
cd database/mysql
mysql -uroot zabbix < schema.sql
mysql -uroot zabbix < images.sql
mysql -uroot zabbix < data.sql
```

# Zabbixの設定

## Zabbix Agentの設定

```/usr/local/etc/zabbix_agentd.conf``` の以下の部分のみを変更します。

```
Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
```

## Zabbix Serverの設定

```/usr/local/etc/zabbix_server.conf``` の以下の部分のみを変更します。
なお、データベースのユーザ名が違ったり、パスワードがある方は適宜変更してください。

```
DBUser=root
Include=/usr/local/etc/zabbix_server.conf.d/*.conf
```

## 起動して確認

ここまでで動くはずなので以下のように、まずフォアグラウンドで起動する

```
zabbix_agentd -f 
zabbix_server -f 
```

```/tmp``` 以下にあるログを見ながら正しく動いているか確認する.

# Zabbix Web UIの設定

ZabbixのWeb UIは別途、PHPのフロントエンドを動かして確認する。
PHPの設定をしてから、PHPのビルドインサーバで動かす。

## PHPの設定

```/usr/local/etc/php/5.5/php.ini``` の以下の部分のみを変更します。PHPのバージョンが違う場合は、5.5の部分を変更してください。

```
date.timezone = "Asia/Tokyo"
post_max_size = 16M
default_socket_timeout = 300
max_input_time = 300
max_execution_time = 300
```

## Web UIの起動

解凍したソース以下に移動し、以下のコマンドを実行します。ポートは8001としてますが好きなのを使ってください。

```
cd frontends/php/ 
php -S localhost:8001 
```

起動後、ブラウザで、http://localhost:8001にアクセスすると、設定画面が現れるので、設定します。
設定すると、```frontends/php/conf/zabbix.conf.php```というファイルができています。
ログイン時の最初のパスワードはadmin/zabbixです。

## グラフの日本語の文字化けを修正する

Web UIで日本語に設定した際に、グラフの日本語部分が文字化けするので修正します。
[IPAフォント ダウンロードページ](http://ipafont.ipa.go.jp/old/ipafont/download.html)から、「IPAゴシック(Ver.003.03)」をダウンロ度して、解凍されたソース以下の ```frontends/php/fonts/ipag.ttf``` にコピーします。

その後、設定ファイル ```frontends/php/include/defines.inc.php``` で、フォントの変更を以下のようにします。
再度、 ```php -S localhost:8001``` の起動をし直すと、日本語が正しく表示されています。

```
define('ZBX_GRAPH_FONT_NAME',		'ipag'); // font file name
define('ZBX_FONT_NAME', 'ipag');
```

## Mac起動時に常に起動されるように設定する。

launchdの設定で、常に起動時に、起動されるようにします。今回はLington Xで設定したのでそのスクショをのせておきます。
再起動して、正しく起動し、http://localhost:8001にアクセスした際にZabbixのWeb UIが表示されていたら正しく設定できています。

### Agent

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/9d8ac08c-fd18-9627-c14f-efd810cdfb4e.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/a975daca-7eff-c2da-7d4b-924d2162c7ad.png)

### Server

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/4b267235-1cca-8111-80b1-b4230e0632f9.png)


![image](https://qiita-image-store.s3.amazonaws.com/0/30079/750c58b7-dddd-7e70-313a-69e2a5b99a59.png)


### Web UI

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/d3352273-7707-8684-b5be-2739142a0e5c.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/9094ee8b-c2e3-44f3-27df-d7ad043ecff8.png)

WorkingDirectoryは解凍先以下のfrontends/phpに設定する。

# MySQL Templateの設定

Zabbixにはデフォルトで以下のようなMySQLのテンプレートが設定されているので試しに設定してみます。

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/85d18a3d-e640-6782-9814-f0fd301f8d2f.png)

## 設定ファイルの作成

```/usr/local/etc/zabbix_agentd.conf.d/userparameter_mysql.conf``` を作成し、以下のように設定します。

```
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/usr/local/var/lib/zabbix mysql -N | awk '{print $$2}'
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/usr/local/var/lib/zabbix -N'
UserParameter=mysql.ping,HOME=/usr/local/var/lib/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V
```

つぎに、 ```/usr/local/var/lib/zabbix/.my.cnf``` を作成し、上記のuserparameterで使用するmysqlの設定を記載します。
適宜、アカウント、パスワードは読み替えてください。

```
[client]
user=root
password=
```

以下のように値が取れています。

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/59629d3e-9a9a-a6df-dc6f-f6dc2d898d7c.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/dc98b755-39da-c7e1-8e57-e5c0475ea4d3.png)


# 参考
* ログレベルを変更したいときはagent, serverともに、DebugLevelの設定値を変更する