Zabbix 4.0 LTS リリース!

ここ数年の飯のネタとなってる Zabbix 。
いよいよ長期サポート版としての 4.0 がリリースとなりました。(パチパチ)

2.0 から使い始めて、仕事では 2.2 から 3.4 へと(さらに 4.0 にすることを見据た上で)移行が進みつつあり、自宅でも時々ハマりながら、

実際、 Zabbix がそうだったんですが、 Zabbix が公式に用意している Zabbix 3.4 / pre-4.0 のパッケージを sid にインストールするために stretch 対応のものでよかったのですけど、 sid の curl のバージョンが上がったことで libcurl3 から libcurl4 への変更が発生。

[From Debian sidに公式配布版のZabbixパッケージがインストールできなかったので - Soukaku's HENA-CHOKO Blog]

順次バージョンアップしなから使い続けてきているわけで、当然のことながら 4.0 へのアップデートをしたわけですよ…。


で、まぁハマるわけですよ

自宅で使っている目的には、仕事で活かすためのノウハウ集めという面もあるので、ハマる事自体も経験値稼ぎではあるんですけど、案の定 4.0 にアップデートしてみたらハマったわけでして。

Zabbix 4.0 のパッケージ自体は、 Zabbix から公式として配布されるものと Debian 側でパッケージングされたもののどちらかを使えばいいわけですが、 sid 向けにでパッケージングされたものが 4.0 LTS リリースとほぼ同時に用意されたので、Debian 側のものを使うことに。
3.4 (独自ビルドではあったけど)を使っていたので、基本的にはそのままパッケージのアップデートすれば終わるはずなんですけど、そこはまぁお約束どおりにいくつかハマりました。

まず、Zabbix 公式にしても Debian 提供のものにしても、 zabbix-getzabbix-sender は個別のパッケージになっていたのが、 Debian 版の 4.0 に関しては zabbix-get は zabbix-[server|proxy]-* パッケージに、zabbix-sender は zabbix-agent パッケージに含まれる形に変更されたようです。(ずっとこのままなのかは、不明だけど。)
これは、zabbix-getzabbix-sender をアップデートの際に削除すればいいので、軽微っちゃ軽微な内容。

次に、 zabbix-server パッケージのアップデートに絡んで、 起動時に DB 周りのエラーメッセージが出て、 zabbix-server が起動しない、というもの。

  7044:20181004:011629.901 [Z3005] query failed: [1118] 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. [alter table `interface` modify `dns` varchar(255) default '' not null]

/va/log/zabbix/zabbix_server.log に記録されていたエラーメッセージで、いろいろとググってみたところ、以下のような方法で対処が可能なようなのがわかったので、早速対処。

マジですか。これが噂の「InnoDB 8KBの壁」ですか。。。

設計段階であればテーブル縦分割とかテーブル構造自体を変えちゃえ!ってなるかもしれないですが、運用中のサービスですし、できるだけ全体へのインパクトは少なくしたい(アプリケーションは改修したくない)。って時にテーブルのROW_FORMATを変更して対応しましたよ、って話です。

[From InnoDBの8KBの壁にぶち当たったら。 – sawara.me]

実のところ、 MariaDB 上にある Zabbix 用の各 table は "ROW_FORMAT=COMPRESS" にしてあったんですが、それで駄目ということだったので、エラーの出ている interface テーブルだけ "ROW_FORMAT=DYNAMIC" に変更して

root@vpsdb02:/etc/mysql# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 164
Server version: 10.1.35-MariaDB-1 Debian unstable

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [zabbix]> alter table interface row_format=dynamic
-> ;
Query OK, 0 rows affected, 1 warning (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 1

MariaDB [zabbix]> quit
Bye

zabbix-server を起動してみたところ、正常に起動。これで、バージョンアップ時に行われるデータフォーマットの変換も完了して問題なく動作するように…。

で、もう一つ。
監視の一部を zabbix-proxy を経由する形で行っていたのですが、4.0 LTS へのアップデート直後から zabbix-proxy が動くサーバ自身に対する監視が出来なくなるという事象が発生。 /var/log/zabbix/zabbix_agent.log には

  3096:20181004:010535.499 Message from ::1 is missing header. Message ignored.
3095:20181004:010635.533 Message from ::1 is missing header. Message ignored.
3096:20181004:010735.841 Message from ::1 is missing header. Message ignored.
3096:20181004:010835.869 Message from ::1 is missing header. Message ignored.
3094:20181004:010935.911 Message from ::1 is missing header. Message ignored.

というログが吐き出されているのがわかったので、zabbix-proxy サーバの監視を zabbix-proxy 経由ではなく zabbix-server からの直接監視となるように監視対象の IP アドレスを変更したら、問題なく監視できる状態に復帰。監視対象としての登録時に「localhostに対する監視だから ::1 でも問題ないよね?」ということで登録してあったので、まさかねぇと思いつつ設定を変えてみたんですが、どうやらアタリだったようです。
ただ、設定を変えても "Message from ::1 is missing header. 〜" のエラーは止まることなく出力され続けているので、何かしらの不具合はありそう…。(これに関しては、もっと詳細にデータを集めた上で、バグレポートしたほうがいいのかな?)

ということで、当面の問題は解消したので、このまま使い続けてみたいと思います。> 4.0 LTS

トラックバック(0)

コメントする