Zabbix を Raspberry Pi にインストール

# 環境

- Raspberry Pi OS Lite
- Release date: April 4th 2022
- System: 32-bit
- Kernel version: 5.15
- Debian version: 11 (bullseye)

事前に以下の作業を終わらせている

- `sudo apt update` や `sudo apt upgrade`
- `sudo raspi-config` で Locale に ja_JP.UTF-8 および en_US.UTF-8 を追加、ja_JP.UTF-8 をデフォルトに設定
- 同じくTimezone を Asia/Tokyo に設定
- vim インストールして `echo "set mouse=" > ~/.vimrc` でマウス無効化済


# LAMP インストール


```

$ sudo apt install php apache2 php-gd php-bcmath php-xml php-mbstring php-mysql mariadb-server mariadb-client
```


# php 動作確認

```
$ sudo vim /var/www/html/test.php
```

として、
```
<?php
phpinfo();
?>
```
という内容のファイルを作成、保存。

`http://<RaspberryPI IPアドレス>/test.php`

をブラウザから開き、以下のような表示が出れば php の設定は済
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/4405ff89-d28d-1e1b-6dd2-836ac8863f09.png)

# データベース設定
「MariaDB インストール ( Ubuntu 18.04 / 20.04 / 22.04 LTS , Raspberry Pi OS)」
https://qiita.com/nanbuwks/items/c98c51744bd0f72a7087

の通りに行いました。

# Zabbix のインストール

https://zabbix.com/download で以下のように選ぶと、インストール方法が表示されるのでそれを元に進める。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/3866e758-145e-2258-f9d7-0203f193726b.png)


## Zabbixリポジトリの追加

```
$ wget https://repo.zabbix.com/zabbix/6.2/raspbian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian11_all.deb
$ sudo dpkg -i zabbix-release_6.2-1+debian11_all.deb
$ sudo apt update
```

## apt で zabbix パッケージをインストール
```
$ sudo  apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
```

## zabbix 用 mysql 設定

今回はパスワードを "password" としています。各位の状況に合わせて変更してください。

```
$ mysql -u root -p
MariaDB [(none)]> create database zabbix character set utf8mb4 collate utf8mb4_bin;
MariaDB [(none)]> create user zabbix@localhost identified by 'password';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
MariaDB [(none)]> SET GLOBAL log_bin_trust_function_creators = 1;
MariaDB [(none)]> quit;
$ zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix
```

/etc/zabbix/zabbix_server.conf の該当箇所を以下のように編集

変更前
```
### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
```
↓変更後
```
### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=password

```
## 起動
```
$ sudo systemctl restart zabbix-server zabbix-agent apache2
$ sudo systemctl enable zabbix-server zabbix-agent apache2
```

# Webブラウザから初期設定

`http://<Raspberry Pi IPアドレス>/zabbix` にアクセスすると以下の画面が見えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/e388792b-2af1-e0dc-7a32-445f6e5abd06.png)
Default languageを日本語にして進むと進み、チェックがすべてOKであることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/b119ea3c-d1ce-b7ea-22fd-518ec6ceb212.png)
データベース接続設定に先程決めたパスワードを入力します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/0c7d7265-e999-b915-ab64-e53e1c2175ab.png)
サーバ名、タイムゾーンを入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/41fab936-f5c8-9669-dbe8-5538d5f0d25d.png)
確認して「次のステップ」を押すと初期設定完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/8cec349e-67a7-3a80-b01d-6b303f3f5072.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/7e5691c1-3348-886c-80f7-fa77e5cefbe2.png)
そのまま進み、ユーザ名：Admin 、パスワード： zabbix でログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/52ac07cf-b084-332c-ab2c-d6f321d56542.png)

以下の画面になったらインストール終了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/91aa3154-fe74-a8e2-f333-2e37b73ed3bc.png)


# いくつかの修正 (2021/8/19追記)

## Zabbixサーバの設定を修正

以下のように「Zabbixサーバーの起動」が「いいえ」になっていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/9141f32d-9657-8a24-b6b5-a5837a55df04.png)

/etc/zabbix/zabbix_server.conf の該当箇所を以下のように編集します。

```

### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=password
```
zabbix-server を再起動すると

```
$ sudo service zabbix-server restart

```
「Zabbixサーバの起動」が正常になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/dbb991f1-8129-e5f6-3ad2-be301a3e7461.png)

## 日本語フォントの設定

以下のように日本語であるところが四角になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/3f9b52c5-ff86-609a-dea5-fab51fe999b1.png)

日本語フォントをインストールして Zabbix に設定を加える必要があります。
「Linux で標準的に使われるフリー日本語フォント」
https://qiita.com/nanbuwks/items/611bf7392c3b8f0dd4ea

これらのリストから、fonts-ipafont-gothic を選んでみました。


```
$ sudo apt install fonts-ipafont-gothic
```
今回は、fontconfig をインストールしてインストールされたフォント情報を確認します。
```
$ sudo apt install fontconfig


```
alternatives で管理できるそうなので、やってみます。
```
$ sudo update-alternatives --install /usr/share/zabbix/fonts/graphfont.ttf zabbix-frontend-font /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf 20

```

```
$ sudo update-alternatives --config zabbix-frontend-font
alternative zabbix-frontend-font (/usr/share/zabbix/assets/fonts/graphfont.ttf を提供) には 2 個の選択肢があります。

  選択肢    パス                                           優先度  状態
------------------------------------------------------------
* 0            /etc/alternatives/fonts-japanese-gothic.ttf       20        自動モード
  1            /etc/alternatives/fonts-japanese-gothic.ttf       20        手動モード
  2            /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf   10        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 
```
これでうまくいきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/b6c3abe0-d129-becb-33cb-77fb240d6b45.png)

実は、最初以下のように Noto フォントを使ってみたら

```
sudo update-alternatives --install /usr/share/zabbix/fonts/graphfont.ttf zabbix-frontend-font /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc 60
```
グラフに文字が出てこなくなってしまいました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/d8c13e37-8514-8d5e-8777-00d3390c04f7.png)

 mplus や VLGothic をインストールしたり DejaVe に戻したりしてみましたがダメ。
一度  ` sudo  apt purge zabbix-frontend-php ` して zabbix-frontend-php の設定をインストールからやり直し、更に zabbix-apache-conf が消えてしまったので再インストール、apache2再起動してうまく表示できるようになりました。ダメだったのが以下の状態です。

```
$ sudo update-alternatives --config zabbix-frontend-font
alternative zabbix-frontend-font (/usr/share/zabbix/fonts/graphfont.ttf を提供) には 5 個の選択肢があります。

  選択肢    パス                                                     優先度  状態
------------------------------------------------------------
  0            /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf           60        自動モード
  1            /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf           60        手動モード
  2            /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc      20        手動モード
* 3            /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf             10        手動モード
  4            /usr/share/fonts/truetype/mplus/mplus-1c-black.ttf          30        手動モード
  5            /usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf   40        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 1

```


今からして思うと Noto フォントが ttc になっていますね。 ttc 形式が混ざっていたのがダメだったのかな?


# ロケール設定
UI を USに設定しようとしたらエラーが出ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/98116b47-04b5-38b2-6e9c-997f2163a206.png)

> Locale for language "en_US" is not found on the web server. Tried to set: en_US, en_US.utf8, en_US.UTF-8, en_US.iso885915, en_US.ISO8859-1, en_US.ISO8859-2, en_US.ISO8859-4, en_US.ISO8859-5, en_US.ISO8859-15, en_US.ISO8859-13, en_US.CP1131, en_US.CP1251, en_US.CP1251, en_US.CP949, en_US.KOI8-U, en_US.US-ASCII, en_US.eucKR, en_US.eucJP, en_US.SJIS, en_US.GB18030, en_US.GB2312, en_US.GBK, en_US.eucCN, en_US.Big5HKSCS, en_US.Big5, en_US.armscii8, en_US.cp1251, en_US.eucjp, en_US.euckr, en_US.euctw, en_US.gb18030, en_US.gbk, en_US.koi8r, en_US.tcvn. Unable to translate Zabbix interface.

これは RaspberryPi に en_US が設定されていなかったのが原因です。 en_US.UTF-8 を 
` sudo raspi-conig `  で設定しました。


# 監視してみる

## snmp で CPUアベレージを見てみる
「Ubuntu や Raspberry Pi に snmp をインストール」
https://qiita.com/nanbuwks/items/3632b3180e587152bfc7

で試した、CPU の使用率の取得

> 以下では CPU コアそれぞれの利用率の値が取得できるようです。
>
> ```
> $ snmpwalk -v1 192.168.42.100 -c public 1.3.6.1.2.1.25.3.3
> iso.3.6.1.2.1.25.3.3.1.1.196608 = OID: ccitt.0
> iso.3.6.1.2.1.25.3.3.1.1.196609 = OID: ccitt.0
> iso.3.6.1.2.1.25.3.3.1.2.196608 = INTEGER: 5
> iso.3.6.1.2.1.25.3.3.1.2.196609 = INTEGER: 4
> ```

これを Zabbix で見えるようにしてみます。


「設定」「ホスト」から右上の「ホストの作成」で、ホスト名、ホストグループ、インターフェースをsnmp、snmpのパラメータを指定します。($SNMP_COMMUNITY) にすると public を指定することになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/64173808-0ef6-5ae9-0397-3b2a41521b48.png)
「追加」ボタンを押すと、リストに追加されます。追加された名前の「アイテム」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/c8d763a1-f520-2948-40b4-2fe290388bc8.png)
右上の「アイテムの作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/f7db208c-6c87-b885-d1f1-9cfc6a205245.png)
名前をわかりやすい名前にし、キーを適切に入れ、OID を入れ「追加」します。キーはZabbixエージェントの値を参考にしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/4322eebb-a4f6-117a-4734-19fed3317472.png)
「監視データ」-「最新データ」から
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/632b4074-b945-c437-dd40-5f1d528ee6b8.png)
該当ホストと名前を選び、「グラフ」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/1540203f-05da-491f-0fb6-a43a203a072f.png)
表示されました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/ef727b1a-d0f0-c097-5b0c-f8351c6164bf.png)

# zabbix_sender 使ってみる

Ubuntu20.04 の PC から、zabbix_sender で値を送ってみます。

まずは PC用に Zabbix をダウンロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/2cfd34f2-e1f0-caa5-f73d-c3083812db66.png)
インストール
```
$  wget https://repo.zabbix.com/zabbix/6.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.2-1+ubuntu20.04_all.deb
$ sudo dpkg -i zabbix-release_6.2-1+ubuntu20.04_all.deb 
$ sudo apt update
$ sudo apt install  zabbix-sender
```
RaspberryPi の Zabbix サーバ側で以下のようにアイテムを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/6ce51834-2657-48a9-4064-0297fcc26129.png)

# ダミー値を送ってみる

PC側から以下のようにテスト送信してみます。
```
$ zabbix_sender -z 192.168.42.20 -s 100server -k "system.cpu.load.cpu.0" -o 99
Response from "192.168.42.20:10051": "processed: 0; failed: 1; total: 1; seconds spent: 0.000504"
sent: 1; skipped: 0; total: 1
```

あれ? fail になってますね。 -vv オプションをつけてデバッグ情報を表示してみます。

```
$ zabbix_sender -vv -z 192.168.42.20 -s 100server -k "system.cpu.load.cpu.0" -o 99
zabbix_sender [675188]: DEBUG: In zbx_connect_to_server() [192.168.42.20]:10051 [timeout:60, connection timeout:3]
zabbix_sender [675188]: DEBUG: In is_ip4() ip:'192.168.42.20'
zabbix_sender [675188]: DEBUG: End of is_ip4():SUCCEED
zabbix_sender [675188]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.002274"}]
Response from "192.168.42.20:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.002274"
sent: 1; skipped: 0; total: 1
```

あれ? 今度は processed になりましたね?? -vv をつけたら成功するのかな?

```
$ zabbix_sender -z 192.168.42.20 -s 100server -k "system.cpu.load.cpu.0" -o 99
Response from "192.168.42.20:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.002820"
sent: 1; skipped: 0; total: 1
```
今度は -vv なくても成功しましたね。アイテムを作って有効になるのにチョット時間がかかっているのかな?


何回か、値を変更して送ってみると、グラフに反映できてました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/fa728a48-66f4-1b47-8b29-6d73cd95f128.png)


# CPU使用率を送ってみる。


「mpstat を使って CPU コアの使用率を取得」
https://qiita.com/nanbuwks/items/274c46cb30470341359c

ここのワンライナーの結果を送ってみる。

sendcpuallzabbix.sh として以下を作成
```
load=`cpu=0; mpstat -P ALL | awk -v cpuno="$cpu" 'NR==cpuno+5 {print int(100-$12)}'`
zabbix_sender -z 192.168.42.20 -s 100server -k "system.cpu.load.cpu.0" -o $load
```

上記は、CPU0 の総使用率を送るスクリプトです。もし、全CPUの平均を送るには  `cpu=0` を `cpu=-1` にします。 
実行可能ファイルに変更し、実行してみる。
```
$ chmod 755 sendcpuallzabbix.sh 
$ ./sendcpuallzabbix.sh
Response from "192.168.42.20:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.001423"
sent: 1; skipped: 0; total: 1

```

問題ないようであれば、crontab に登録。

```
$ crontab -l
no crontab for nanbuwks
```

現在何も登録されていないので

```
$ echo "* * * * * /home/nanbuwks/Downloads/zabbix-sender/sendcpuallzabbix.sh" > cronset
$ crontab cronset
```
しばらくしたら先に送ったダミーデータから、正しい 6% 程度の値に変更されているのがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/9c390c9b-b91f-e507-a3eb-fc14e2ca9108.png)

# Raspberry Pi OS で Zabbix2  Agent を使ってみる

ダウンロード

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/a5f1e8c6-9d51-b5b4-a70e-bbfecd243319.png)

インストール
```
$ wget https://repo.zabbix.com/zabbix/6.2/raspbian/pool/main/z/zabbix-release/zabbix-release_6.2-1%2Bdebian11_all.deb
$ sudo dpkg -i zabbix-release_6.2-1+debian11_all.deb
$ sudo apt update
$ sudo apt install zabbix-sender
```
RaspberryPi の Zabbix サーバ側で以下のようにアイテムを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/7384f7ef-29dc-68f3-cda0-54050c79a40c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/493259c7-5635-9763-17b9-3b39308e6adc.png)


# ダミー値を送ってみる

Raspberry pi側から以下のようにテスト送信してみます
```
$ zabbix_sender -z 192.168.42.3 -s sensorgateway -k "sensor1.sensor.temp" -o 29
Response from "192.168.42.20:10051": "processed: 0; failed: 1; total: 1; seconds spent: 0.000504"
sent: 1; skipped: 0; total: 1
```

また fail になりましたが、今回も -vv を付けて一度送信すると受け付けられるようになりました。



```
$ zabbix_sender -vv -z 192.168.42.3 -s sensorgateway -k "sensor1.sensor.temp" -o 29
zabbix_sender [1969]: DEBUG: In zbx_connect_to_server() [192.168.42.3]:10051 [timeout:60, connection timeout:3]
zabbix_sender [1969]: DEBUG: In is_ip4() ip:'192.168.42.3'
zabbix_sender [1969]: DEBUG: End of is_ip4():SUCCEED
zabbix_sender [1969]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.001639"}]
Response from "192.168.42.3:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.001639"
sent: 1; skipped: 0; total: 1
pi@raspberrypi:~ $ zabbix_sender -z 192.168.42.3 -s sensorgateway -k "sensor1.sensor.temp" -o 29
Response from "192.168.42.3:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.001574"
sent: 1; skipped: 0; total: 1
```