LoginSignup
9
6

More than 1 year has passed since last update.

Zabbix を Raspberry Pi にインストール

Last updated at Posted at 2022-08-17

環境

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

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

  • sudo apt updatesudo 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

データベース設定

「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

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
Default languageを日本語にして進むと進み、チェックがすべてOKであることを確認します。
image.png
データベース接続設定に先程決めたパスワードを入力します
image.png
サーバ名、タイムゾーンを入力。
image.png
確認して「次のステップ」を押すと初期設定完了です。
image.png
image.png
そのまま進み、ユーザ名:Admin 、パスワード: zabbix でログインします。
image.png

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

image.png

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

Zabbixサーバの設定を修正

以下のように「Zabbixサーバーの起動」が「いいえ」になっていました。
image.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

日本語フォントの設定

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

image.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

実は、最初以下のように 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

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

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
「追加」ボタンを押すと、リストに追加されます。追加された名前の「アイテム」をクリック。
image.png
右上の「アイテムの作成」
image.png
名前をわかりやすい名前にし、キーを適切に入れ、OID を入れ「追加」します。キーはZabbixエージェントの値を参考にしてみました。
image.png
「監視データ」-「最新データ」から
image.png
該当ホストと名前を選び、「グラフ」を押します。
image.png
表示されました

image.png

zabbix_sender 使ってみる

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

まずは PC用に Zabbix をダウンロード
image.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

ダミー値を送ってみる

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

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=0cpu=-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

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

ダウンロード

image.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

image.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
9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6