環境
- 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 の設定は済
データベース設定
「MariaDB インストール ( Ubuntu 18.04 / 20.04 / 22.04 LTS , Raspberry Pi OS)」
https://qiita.com/nanbuwks/items/c98c51744bd0f72a7087
の通りに行いました。
Zabbix のインストール
https://zabbix.com/download で以下のように選ぶと、インストール方法が表示されるのでそれを元に進める。
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
にアクセスすると以下の画面が見えます。
Default languageを日本語にして進むと進み、チェックがすべてOKであることを確認します。
データベース接続設定に先程決めたパスワードを入力します
サーバ名、タイムゾーンを入力。
確認して「次のステップ」を押すと初期設定完了です。
そのまま進み、ユーザ名:Admin 、パスワード: zabbix でログインします。
以下の画面になったらインストール終了です。
いくつかの修正 (2021/8/19追記)
Zabbixサーバの設定を修正
以下のように「Zabbixサーバーの起動」が「いいえ」になっていました。
/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 に設定を加える必要があります。
「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>、さもなければ選択肢の番号のキーを押してください:
これでうまくいきました。
実は、最初以下のように Noto フォントを使ってみたら
sudo update-alternatives --install /usr/share/zabbix/fonts/graphfont.ttf zabbix-frontend-font /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc 60
グラフに文字が出てこなくなってしまいました。
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に設定しようとしたらエラーが出ました。
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 を指定することになります。
「追加」ボタンを押すと、リストに追加されます。追加された名前の「アイテム」をクリック。
右上の「アイテムの作成」
名前をわかりやすい名前にし、キーを適切に入れ、OID を入れ「追加」します。キーはZabbixエージェントの値を参考にしてみました。
「監視データ」-「最新データ」から
該当ホストと名前を選び、「グラフ」を押します。
表示されました
zabbix_sender 使ってみる
Ubuntu20.04 の PC から、zabbix_sender で値を送ってみます。
まずは PC用に Zabbix をダウンロード
インストール
$ 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 サーバ側で以下のようにアイテムを作成します。
ダミー値を送ってみる
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 なくても成功しましたね。アイテムを作って有効になるのにチョット時間がかかっているのかな?
何回か、値を変更して送ってみると、グラフに反映できてました。
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% 程度の値に変更されているのがわかります。
Raspberry Pi OS で Zabbix2 Agent を使ってみる
ダウンロード
インストール
$ 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 サーバ側で以下のようにアイテムを作成します。
ダミー値を送ってみる
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