2021年7月3日土曜日

Pi zero+zabbix server(構築編)

今回は

M5stackのmqtt送信を試験していますが、不定期で送信停止状態になってることがあります。何が原因なのか調べるためにzabbixで監視したいというのがとっかかりです。ちゃちゃっとdockerで構築のつもりが...

Pizeroの準備

Pizeroは、半年ほど温度湿度センサーの値をambientへ送り続ける役目で連続運用してました。たまにapt updateしましたが、基本放置。久しぶりにupdateしてdockerをインストールしようとするも、errorが大盛です。やりたくないけど、SDカードをフォーマットして再構築です。

Pizeroは、ご存じのとおりUSBがマイクロ、HDMIもminiとアダプターが必要なので、出来ればキーボードや画面を接続せずに再設定したいところ。

「Pizero 配線レスインストール」など、いい感じの先人はいますが、簡単にはいかず。結局、キーボードと画面接続して、再設定完了です。

dockerとdocker-composeの設定

Pizeroは、debian 32-bitです。dockerのインストールは簡単です。参考リンクにあるスクリプトを動かせば、以下のとおり設定完了です。時間もそうかかりません。

Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:57:27 2021
 OS/Arch:           linux/arm
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.7
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       b0f5bc3
  Built:            Wed Jun  2 11:55:25 2021
  OS/Arch:          linux/arm
  Experimental:     false
 containerd:
  Version:          1.4.6
  GitCommit:        d71fcd7d8303cbf684402823e425e9dd2e99285d
 runc:
  Version:          1.0.0-rc95
  GitCommit:        b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

 docker-composeは、$sudo apt-get install docker-composeです。

pi@raspberrypi:~/docker $ docker-compose -v
docker-compose version 1.21.0, build unknown

ユーザーpiのpermission問題等を片付けて、dockerの動作確認です。

pi@pizero:~/docker $ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm32v5)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 <https://hub.docker.com/>

For more examples and ideas, visit:
 <https://docs.docker.com/get-started/>

 

おーー。ちゃんと動いてます。

この調子でzabbixもちゃちゃっといきましょう。参考リンクのとおり進めます。

pi@pizero:~ $ docker run --name zabbix-appliance -t -p 10051:10051 -p 80:80 -p 443:443 -d zabbix/zabbix-appliance:latest
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v6) and no specific platform was requested
c5e82cf34de3b3d1202c469ca27acff11d01836c8ea234974acbe1f51fa3474b

そういうことね、64bit用でしたか。残念。はぁ~。

dockerよりapt-getでしょ

気を取り直してdockerに固執せず、pkgをインストールしてみます。必要なのは、以下のの2つのようです。

  1. zabbix-server-mysql
  2. zabbix-frontend-php

pizeroの状況もモニタするために、以下もインストールします。

  1. zabbix-agent

pkgをインストールしただけ動きません。参考リンクのとおりmysqlに手動でDBの設定が必要です。MySQLにZabbixデータベースを作成します。

# mysql -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> exit
 

初期スキーマとデータをインポートします。

# cd /usr/share/zabbix-server-mysql/
# mysql -uroot zabbix < schema.sql
# mysql -uroot zabbix < images.sql
# mysql -uroot zabbix < data.sql
 

順調かと思ってるとここで止まります。 

pi@pizero:~/docker/zabbix $ mysql -uroot zabbix < schema.sql
ERROR 1118 (42000) at line 1278: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
 

mysql(mariaDB)のバージョンによって解決方法が違うようです。schema.sqlの先頭に以下の2行を入れると解決できました。

SET GLOBAL innodb_default_row_format='dynamic';
SET SESSION innodb_strict_mode=OFF;
 

ここまでたどり着くのは長かったです。mysqlもはまりどころ満載でした。無事DBは構成できました。あと少しです。このモジュールを入れます。

$sudo apt-get install libapache2-mod-php

このコマンドを打つと、zabbix-frontend-php関連のconfをapache2のモジュールフォルダーにリンクを張ってくれます。

$sudo a2enconf zabbix-frontend-php

ようやくこの画面にたどり着きました

ブラウザーからhttp://IP_address/zabbixをたたくと、このように設定画面に移行します。

dockerで15分と妄想してましたが、がっつり週末をかかりました。やってみるといろいと勉強にはなります。このように考えないと心が折れそうです。これからZabbixの使い方を勉強します。

インストールの振り返り

Pizeroは、シングルコアでarmv6と世代が古いためVScodeが使えません。最近はVScodeと拡張機能におんぶにだっこでしたが、久しぶりのCLIは手間と時間がかかります。昔はこれしかなかったのでカチカチコマンド叩いてました。emacs+lispに乗り換えた時、ちょっと便利になったと思いましがVScodeはそれ以上です。

ここまでのまとめ

Pizeroにzabbix-serverをインストールしました。dockerでちゃちゃっとはいかず、pkgを入れてDBの構成や細かな設定が必要でした。先人の知恵は、zabbix,DB,phpのバージョンが異なるネタが各種あるので、選別する必要があります。それがわかるまで結構時間を要しました。次は、使い方を勉強したいと思います。

参考リンク

pizero doker

Raspberry Pi Zero WでDockerを使う - みーのぺーじ

zibbix

DockerのZabbixをRaspberry Pi上で運用する

Zabbix 5.0 LTSをコマンド2つで構築する - Opensourcetechブログ

zabbixをpkgインストール

Zabbix Documentation 5.4

0 件のコメント:

コメントを投稿

ページ引っ越しました

このページは、以下に引っ越しました。内容も逐次移行中です。引き続きよろしくお願いします。  https://hkaji.github.io →こちら