Status Code 303 - See Other

サーバサイド、iOS・アンドロイドアプリ、インフラレベルの話まで幅広くやってます。情報の誤りや指摘・意見などは自由にどうぞ。

Raspberry PI に Zabbix Server 導入まで

概要

Raspberry pi に Zabbix Server を追加した経験談。
自身の失敗をメモしておくとともに、自身の失敗が誰かの救いになれば良い。

・・知識がないとこれほど大変だとは思わなかった。

事の発端

過去に購入したRaspberry Pi

Raspberry Pi 2 Model B (1)

Raspberry Pi 2 Model B (1)

監視カメラを作っている記事を見つけ、実践するつもりだったが、ただ動画キャプチャするだけだと
何か異常が起こっても分からないし、動画全部見るなんて結構面倒くさい。
そこで、状況に応じて、色んな制御を内部で組み込みたいと思っていた。

そして、Zabbix サーバというかなり高機能な運用監視サーバを導入しようと思いたち開始。

立ち上げまでの経緯

MySQL が動かない

MySQL のインストールがうまくいっていない。どうやら MySQL サーバが起動できないらしい。
すでにパッケージはインストールされているが、どうやら起動に毎回失敗している。
mysql のログは /var/log/syslog に出るらしいので、見てみると。

Feb 14 11:40:35 www mysqld: 160214 11:40:35 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
Feb 14 11:40:35 www mysqld: 160214 11:40:35 [ERROR] Do you already have another mysqld server running on port: 3306 ?
Feb 14 11:40:35 www mysqld: 160214 11:40:35 [ERROR] Aborting

とにかく接続できないらしい。netstat -t -a -n で調べるが、ポートは問題ない。
どうやら、curl http://127.0.0.1/ping 127.0.0.1 で失敗することから、127.0.0.1 が認識できていないようだ。
とりあえず /etc/mysql/my.cnf にある、bind-address を 127.0.0.1 → 192.168.0.xx に変えてみたら動いた。
確認してみると、過去に SSH の設定したときに、ネットワーク設定を間違ったようだ。
/etc/network/interfaces を確認すると、ループバックアドレス設定が間違っていた。

auto l0
iface lo inet loopback

なぜ今まで気づかなかったのか・・。bind-address も 127.0.0.1 に直して動くことを確認。

apt-get の Zabbix Server のバージョンが古い

無事 zabbix のインストールができたのだが、apt-get で導入した zabbix-server のバージョンが 1.8 。
あまりに古すぎるため、apt-get のミラーサイト変えてみたりして、色々試してみたもののどうしようもなかった。
調べてみると、ソースコードをビルドする方法で、最新バージョンを導入できそうなので (動作するか分からないけど)
今回はとりあえず、apt-get の推奨する動作環境で確認して、後で入れ替えて見ることに。

しかし、Zabbix の初期設定画面がうまくいかなかった。なんか mysql への接続に失敗しているみたい。
理由が分からなかっため、1週間以上放置してしまう。

Raspberry pi だからこそ起こる問題発覚

再開しようと思ってたおり、調査していると現状のままでは色々まずいことを web で発見する。
Zabbix サーバは監視データを逐一記録するため、数多くデータを書き込むが、
SD カード(Raspberry pi記憶媒体)の寿命は書き換え回数ので数千回くらいなんだとか。
SD書き換え回数制限について - その他(ハードウェア) [解決済 - 2015/03/14] | 教えて!goo

ってことは、1分に1回データ書き込んでいたら、書き込み回数が一日 60 * 24 = 1460回 だから、一週間持たないということになる。
ってことで、データは外付け HDD に格納しなければならないと思い購入。

Raspberry Pi のコンパクトさを維持するため、なるべくかさばらないものを選択。
また、対象機種は Windows だけでなく Mac OS X も含まれていると Linux でも動作は問題ないだろうと判断。
容量としては500GB あれば十分と思い、メーカーと値段を考慮して以下に決定。

HDD を認識しない

注文から3日後、HDD が届く。Raspberry pi の USB に HDD を差し込み、起動。
どうやら最初から NTFS でフォーマットされているらしく、フォーマットとかパーティション切らなくていいらしい。
Linux コマンドの分からない自分にとっては調べる手間が省けて嬉しい。

・・・しかし。df コマンド叩くも、50GB くらいの ディスクが出てこない。
マウントしてないから? → fdisk -l コマンドを叩く。→ そもそも外付け HDD の情報がない。

おまけに HDD からカチッカチッと音がする。よくわからないが Raspberry pi は問題なく動作しているように見える。
HDD の初期不良かと思って、 Windows PC に差してみたが動作する。仕方がないので調査。
Raspberry pi 2が外付けHDDを自動認識してくれなかった - Qiita

同じ症状が出てる人結構いるみたいです。
/etc/fstab down't work with RPI2 · Issue #824 · raspberrypi/linux

  • raspi2では起動プロセスが複数コアで並列して行われてる
    • /etc/fstabのパースがHDD認識と同時またはそれ以前に行われてしまう
    • /etc/fstabを読んでる段階ではUUIDとHDDが紐ついていないので、そんなHDDないよってことですっとばされる

各HDDのUUIDが判明するまでマウント作業を待ってもらえばいい。
/boot/cmdline.txtにrootdelay=5を追記。

上記を試してみるも、変化なし。

調べてみると電源が原因の可能性が浮上。私が使っている電源は 1.8A 出力するので、問題ないと思っていたが、
Windows PC に差したときにはカチッカチッという音はしなかったため、この可能性が高いと思い電源ハブを購入。

NTFS じゃだめだった?

電源ハブが届き、apt-get から ntfs-3g パッケージをインストールし、NTFS も読めるようにした。
すると、HDD を認識した。どうやら原因は電源だったようだ。ファイルの一覧も表示できており、動作は問題なさそうだ。

Zabbix サーバでは、監視データなどは基本的に、データベース内に作成するということで、mysql が本来ある場所に
シンボリックリンクを張って、mysql 自体を HDD に移動。
kakakikikekeのブログ: 【CentOS】zabbixのmysqlデータの保存先を変更する方法

service mysqld stop
cd /var/lib
mv mysql [HDD パス]
ln -s [HDD パス]/mysql mysql
service mysqld start

すると。【Can't connect to local MySQL server through socket '/var/lib/mysqld/mysqld.sock'】が出た。
そして、調べてみると、mysqlのファイル/フォルダの所有者が mysql ではなく pi になっている。
なので、chown を使って mysql に変更しようとするが、できない。

エラーが出ていないのに、実行しても所有者が変わらない?・・権限?
念のため、chmod ・・・が、アクセス権自体が変更できない。なんだこれは?

どうやら、ntfs では、マウント後でアクセス権変更したりとかできないらしい。
chmod で変更できません。 - linux 初心者ですlinux mint 14 を... - Yahoo!知恵袋

なので、ディスクを NTFS から ext4 に変更。参考にしたのは以下。
Raspberry Piでファイルサーバ、Part2 外付けハードディスクの導入編 | ものづくりエクスペリメント

UUID 調べて、etc/fstab に設定。

Zabbix も最新バージョンに移行

古いバージョンの zabbix を念のため、全て削除。
Zabbix の本家から最新ソースコードをダウンロードして、適用する。

下記の記事は、Zabbix 2.4.7 環境についてだったが、2.4.7 でも同様の手順で立ち上げられた。
端的にやることとコマンドだけ書かれているため、動かすことを目的としている私にはとても助かった。
raspberry2B/zabbix2.4.4

しかし、動かすことを優先しすぎて設定内容がよくわかってないため、これから設定内容は見直してみようと思う。