LoginSignup
4
1

SpeedTest CLI結果をZabbixで定期観測する(Raspberry Pi3B+)

Last updated at Posted at 2022-05-16

概要

住んでいるマンションで標準提供されているインターネットサービスの「通信速度」が予想以上に低速で、この通信速度の推移を計測していたのですが、これをZabbixで自前に管理しようというのが、本件です。

前提条件

  • Raspberry Pi 3B+
  • Raspbian(bullseye)
pi@raspberrypi:~ $ sudo cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

前置き

実は、速度計測は、下記の記事を参考にMackrel( https://ja.mackerel.io/ )で計測してました。

が、自宅のラズパイの計測をしているだけ(いわゆる1台の監視)なのに、月1833円を払うのは流石にないな、、、ということで、2週間のトライアル期間を終えてフリーで使うことを決めたんです。

st001.PNG

ところが、、、思った以上にフリー版だと制限があって(単に自分が比較表をしっかりみてなかっただけ)、このままでは計測になってないなということから、代替手段を考えることにしました。

  • 主な制限事項
    • カスタムダッシュボードが使えない(bpsではなくBpsで計測されるのでbps変換がカスタムダッシュボードではできる)
    • 表示期間が1日(24H)しかできない

致命的だったのは、表示期間1日という制限。
これ、表示は1日。というのが、週や月では見れないけど、日付を変えれば昨日や一昨日が見れると思っていたんですが、そうではなくDBに記録されるのが1日分しかしないということのようで、一日区切り(つまり最大47時間59分間)が見れるのかと思ったら、きっちり24時間しかみれない。
現在時刻からー24時間しかみれないのだ、、、、。

早速Zabbix版を作る

■Zabbix
https://www.zabbix.com/jp

ひとまず、ラズパイなので、こんな構成でやってみる
st002.PNG

手順1:MySQLをインストールする(ラズパイなのでMariaDB)

※すでにインストール済みの人は不要です。

pi@raspberrypi:~ $ sudo apt install mariadb-server

インストールが済んだら、セキュリティだけ確保します。

pi@raspberrypi:~ $ sudo /usr/bin/mysql_secure_installation

そして、MariaDBを起動します。

pi@raspberrypi:~ $ sudo systemctl start mariadb.service

手順2:Zabbixをインストールする

基本的には、Zabbixのインストール手順説明の通りでOKです。

Zabbixリポジトリをインストールする

pi@raspberrypi:~ $ sudo wget https://repo.zabbix.com/zabbix/6.0/raspbian/pool/main/z/zabbix-release/zabbix-release_6.0-2+debian11_all.deb
pi@raspberrypi:~ $ sudo dpkg -i zabbix-release_6.0-2+debian11_all.deb
pi@raspberrypi:~ $ sudo apt update

Zabbixサーバー、フロントエンド、エージェントをインストールします

pi@raspberrypi:~ $ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

初期データベースを作成する

pi@raspberrypi:~ $ sudo mysql -uroot -p
MariaDB> create database zabbix character set utf8mb4 collate utf8mb4_bin;
MariaDB> create user zabbix@localhost identified by '(パスワード)';
MariaDB> grant all privileges on zabbix.* to zabbix@localhost;
MariaDB> quit;

Zabbixサーバーホストで初期スキーマとデータをインポートします。新しく作成したパスワードを入力するように求められます。

pi@raspberrypi:~ $ sudo zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
設定した「(パスワード)」を入力する

Zabbixサーバー用にデータベースを設定する

pi@raspberrypi:~ $ sudo vi /etc/zabbix/zabbix_server.conf

# DBPassword=password
 ↓
DBPassword=password

Zabbixフロントエンド用にPHPを設定する

pi@raspberrypi:~ $ sudo vi /etc/zabbix/nginx.conf

# listen 80;
# server_name example.com;
 ↓
listen 80
server_name raspberrypi.local

★追記
ローカル内でサーバを立てていると、iPhoneやiPadなどからアクセスするとZabbixのログインページではなくApache2のデフォルトページが表示されることがあります。
原因は、IPv4ではなくIPv6でアクセスするため、上記の設定ではIPv6のアクセスに応答できません。
そこで、下記のように設定を変更します。

pi@raspberrypi:~ $ sudo vi /etc/zabbix/nginx.conf

# listen 80;
 ↓
listen 80;
listen [::]:80;

これで、IPv6でも応答します。
あとは、nginxを再起動します。

pi@raspberrypi:~ $ sudo systemctl reload nginx 

----追記ここまで----

Zabbixサーバーとエージェントのプロセスを開始します

pi@raspberrypi:~ $ sudo systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
pi@raspberrypi:~ $ sudo systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm

手順3:Zabbixフロントエンドの設定をする

Webブラウザを開いて、「http://raspberrypi.local 」へアクセスします。

st003.PNG

後は、Zabbixの手順書( https://www.zabbix.com/documentation/6.0/en/manual/installation/frontend )を読みながら進めます。

st004.PNG
st005.PNG
st006.PNG
これで、設定は終了です。
st007.PNG

早速、Zabbixへログインしようと、、、、と思ったら、ID/PWが一致しない人、、、、
よく読もう。
st008.PNG

手順4:Zabbixに日本語表示を・・・・

Zabbixへログインします。

ぎゃぁ!
st009.PNG

当然、あるだろうと思っていたLocaleもないのか、、、、

しょうがない。追加しよう。
まずは、Locale情報をインストールする

pi@raspberrypi:~ $ sudo dpkg-reconfigure locales

まずは、en_US。(あれ、en_GBはもともと入ってたのか・・・)
st011.PNG

せっかくなので、日本語も入れておく
st010.PNG

で反映。
st012.PNG

そしてラズパイを再起動する
で、再度Zabbixのページへアクセスして、左側のメニューの「User settings」-「Profile」と選択し、「Language」から「j_JP」を選択して更新すると、日本語になります。

st013.PNG

SpeedTest CLIをインストールする

■SpeedTest CLI
https://www.speedtest.net/ja/apps/cli

RaspbianにインストールするSpeedtest CLIは「armhf」用が必要なので、下記からDLします。
st014.PNG

DLしてきた「ookla-speedtest-1.1.1-linux-armhf.tgz」を解凍して、/ur/binに配置します。

pi@raspberrypi:~ $ sudo tar -xzvf ookla-speedtest-1.1.1-linux-armhf.tgz
pi@raspberrypi:~ $ sudo mv speedtest* /usr/bin/

これでSpeedTest CLIの配置完了です。

pi@raspberrypi:~ $ /usr/bin/speedtest

   Speedtest by Ookla

     Server: Cloudflare - Osaka (id = 48296)
        ISP: NTT
    Latency:    17.44 ms   (3.37 ms jitter)
   Download:   250.11 Mbps (data used: 254.7 MB )
     Upload:    76.62 Mbps (data used: 133.6 MB )
Packet Loss: Not available.
 Result URL: https://www.speedtest.net/result/c/be38028d-e738-450b-84ec-cb4abca57b77

ZabbixとSpeedTest CLIを連携する

参考:Zabbixで自宅のインターネット回線速度を監視する – Speedtest CLI
https://devlog.arksystems.co.jp/2021/03/23/14553/

まずは、Speedtestの通信先を設定します

pi@raspberrypi:~ $ /usr/bin/speedtest -L
Closest servers:

    ID  Name                           Location             Country
==============================================================================
 48296  Cloudflare                     Osaka                Japan
  6527  kdatacenter.com                Seoul                South Korea
 48292  Cloudflare                     Seoul                South Korea
  8407  Allied Telesis Capital Corporation Sagamihara           Japan
  6087  Allied Telesis Capital Corporation Fussa-shi            Japan
 30230  Lequios                        Naha City            Japan
 21118  GLBB Japan                     Naha                 Japan
 44285  Active Style Inc               Naha                 Japan
 31181  Allied Telesis Capital Corp.   Okinawa              Japan
 44988  Misaka Network, Inc.           Tokyo                Japan

続いて、Zabbix_Senderをインストールする

pi@raspberrypi:~ $ sudo apt install zabbix-sender
pi@raspberrypi:~ $ which zabbix_sender
/usr/bin/zabbix_sender

実行するShと、定期実行するshを作成する。

実行するshellスクリプト

pi@raspberrypi:~ $ vi zabbix_sender_speedtest.sh

スクリプトはこんな感じ。(Mackerel版でServerのIDを固定していたので、こっちも同じにしている)

#!/bin/bash
 
SPEEDTEST_RESULT=`/usr/bin/speedtest -f json -p no -s 14623`
 
ZABBIX_SERVER=127.0.0.1
ZABBIX_HOSTNAME=speedtest.net
ZABBIX_ITEMKEY=speedtest.json
 
/usr/bin/zabbix_sender -z $ZABBIX_SERVER -s $ZABBIX_HOSTNAME -k $ZABBIX_ITEMKEY -o "$SPEEDTEST_RESULT"

一応、実行権限を付与する

pi@raspberrypi:~ $ chmod +x zabbix_sender_speedtest.sh

そして、定期実行のスクリプト

pi@raspberrypi:~ $ sudo vi /etc/cron.d/zabbix-speedtest

中身はこんなの

SHELL=/bin/sh
PATH=/usr/bin
*/5 * * * * root cd /home/pi && ./zabbix_sender_speedtest.sh

これで、5分おきにZabbixへ送ってくる

Zabbix側の待ち受け

Zabbix側に勝手に送っても受け取れないので、処理できるようにします。

もともとZabbixのServerと同居する状態なので、Host情報が同じです。
なので、ホストもSpeedtest用に作ります。

「設定」から「ホスト」を選択し、右側に表示されたホストの設定画面の右上から「ホストの作成」をクリックします。
st015.PNG

「ホスト名」には適当な名前をつけます。
「グループ」も必須になっているので「選択」ボタンを押して、適当に(いいのか?)選びます。
そして「追加」ボタンをクリック!
st016.PNG

続いて、「アイテム」を追加します。
「アイテム」の追加は、下記のリンクをクリックして、開いた画面の右上から「アイテムの追加」です。

st017.PNG

あとは、参考サイト( https://devlog.arksystems.co.jp/2021/03/23/14553/ )を見ながら、追加していけばOKです。
st018.PNG
一旦、これくらいアイテムとして追加しました。

グラフは、Download/Upload/Packet Loss/Latencyの4つをひとまず表示してます。
st019.PNG

最後に

気になったので、修正しておきます。
そう、この豆腐。

st020.PNG

ん~、やりたいこと全部書いてあるサイトみつけたので貼っておきます。
■Raspberry Pi 【Zabbix編】グラフの文字化けを解消する方法
https://www.ingenious.jp/articles/howto/zabbix-howto/zabbix-graph-garbled/

pi@raspberrypi:~ $ sudo apt list | grep ipafont

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

fonts-ipafont-gothic/stable 00303-21 all
fonts-ipafont-mincho/stable 00303-21 all
fonts-ipafont-nonfree-jisx0208/stable,oldstable 1:00103-7 all
fonts-ipafont-nonfree-uigothic/stable,oldstable 00203-26 all
fonts-ipafont/stable 00303-21 all
pi@raspberrypi:~ $ sudo apt install fonts-ipafont-gothic
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
(省略)
pi@raspberrypi:~ $ sudo ln -s /usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf /usr/share/zabbix/assets/fonts/ipagp.ttf
pi@raspberrypi:~ $ sudo vi /usr/share/zabbix/include/defines.inc.php

82行目と127行目付近
define('ZBX_GRAPH_FONT_NAME', 'graphfont');
define('ZBX_FONT_NAME', 'graphfont');
 ↓
define('ZBX_GRAPH_FONT_NAME', 'ipagp');
define('ZBX_FONT_NAME', 'ipagp');

表示を確認します。
st021.PNG

おぅいえぃ!

さて、これでしばらく観察しよう。

4
1
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
4
1