なぜなにZabbix
2020年 11月 13日
NTTコムソリューションズ株式会社
プラットフォームソリューション部
Transform your business, transcend expectations with our technologically advanced solutions.

Copyright © NTT Communications
Corporation.AllAllrights
rightsreserved.
reserved.
Com Solutions Corporation.

今日のお題日々マイナーバージョンアップ
半年ごとにメジャーバージョンアップして驚異的な速度で進化していくZabbix

進化した内容についてはマニュアルの「What’s New」で語られているけど正直、何がどう変わったのかわからないまま使ってる人も多いと思います。
ここでは、そんなZabbixの秘密をみなさんと一緒に見ていきたいと思います。
Copyright © NTT Com Solutions Corporation. All rights reserved.

2

『驚異の部屋』をご案内いたします

Copyright © NTT Com Solutions Corporation. All rights reserved.

3

【第1の部屋】
いとおかし

Copyright © NTT Com Solutions Corporation. All rights reserved.

4

第1の部屋Zabbixとお菓子の間には何か関係があるのか？

Copyright © NTT Com Solutions Corporation. All rights reserved.

5

第1の部屋これは有名な話ですね。

Copyright © NTT Com Solutions Corporation. All rights reserved.

6

第1の部屋Zabbix1.8.4に内包されていた、重大なバグが発祥

Copyright © NTT Com Solutions Corporation. All rights reserved.

7

Commercial Message

最適なICTソリューションで、明日のビジョンをカタチにする

Copyright © NTT Com Solutions Corporation. All rights reserved.

8

【第2の部屋】『切り捨て御免』はレバー1回転＋P

Copyright © NTT Com Solutions Corporation. All rights reserved.

9

第2の部屋

扱えない精度の数値を送り込むとDBが勝手に丸める※ historyテーブルの定義より抜粋

Copyright © NTT Com Solutions Corporation. All rights reserved.

10

第2の部屋ほらね

Copyright © NTT Com Solutions Corporation. All rights reserved.

11

第2の部屋つまりこんなトリガーを作るとヒストリがコレ⇒だから

Copyright © NTT Com Solutions Corporation. All rights reserved.

12

第2の部屋あ、あれ？？

Copyright © NTT Com Solutions Corporation. All rights reserved.

13

第2の部屋Copyright © NTT Com Solutions Corporation. All rights reserved.

14

第2の部屋アイエェェェェ！！

ニンジャ！？

ニンジャナンデ！？

Zabbix内部では、数値はdouble型データとして扱われる↓DBはdouble(16,4)なので、小数点以下第5位で四捨五入される↓
ヒストリの画面で見ると小数第4位までのデータになる
Copyright © NTT Com Solutions Corporation. All rights reserved.

15

第2の部屋

その秘密はここにCopyright © NTT Com Solutions Corporation. All rights reserved.

16

第2の部屋historyテーブルでは double(16,4)
itemsテーブルでは varchar(255)↓なので、itemsテーブルの中では丸めが発生しない↓

itemsテーブルの情報を使うlast(#1)/ last(#2) / prevとHistoryテーブルの情報を使うlast(#3)ではトリガー判定の根拠となるヒストリがそもそも違う
Copyright © NTT Com Solutions Corporation. All rights reserved.

17

第2の部屋

さらに Zabbix2.2以降だと……
■Itemsテーブルに lastvalue / prevvalue が無くなったので⇒ Value Cache が使われる場合はdouble精度での判定⇒ 一回でもDBに格納されると(16,4)に丸められるなので、再起動やValueCacheのLowMemoryModeによって判定結果がブレる
Copyright © NTT Com Solutions Corporation. All rights reserved.

18

第2の部屋Zabbix5.0の新機能より5.0でこの新機能追加(というか機能改善)が行われたのでもうこんな空間の歪みは発生しない
Copyright © NTT Com Solutions Corporation. All rights reserved.

19

最新バージョンのZabbix 使おうぜ！！

Copyright © NTT Com Solutions Corporation. All rights reserved.

20

Commercial Message

お客さまや社会とともに理想と未来を追求します。

Copyright © NTT Com Solutions Corporation. All rights reserved.

21

【第3の部屋】『メロンフロートアイスをダブルで』って言ってみたい
Copyright © NTT Com Solutions Corporation. All rights reserved.

22

第3の部屋日本人ってUIの言語を英語にしたりしないですよね。

Copyright © NTT Com Solutions Corporation. All rights reserved.

23

第3の部屋ん！？

Copyright © NTT Com Solutions Corporation. All rights reserved.

24

第3の部屋

昔からずっと「Numeric(float)」って書いてあったけど※ Oracle社 「The Java™ Tutorials」より引用
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Copyright © NTT Com Solutions Corporation. All rights reserved.

25

第3の部屋

3行以上の文章は読めないのでわかりやすくまとめると
float

単精度浮動小数点数(4bytes)

double

倍精度浮動小数点数(8bytes)

Copyright © NTT Com Solutions Corporation. All rights reserved.

26

第3の部屋float

単精度浮動小数点数(4bytes)

3.4028234

doublex 10の38乗

倍精度浮動小数点数(8bytes)1.7976931348623157

Copyright © NTT Com Solutions Corporation. All rights reserved.

x 10の308乗

27

あれれーー？
おっかしいぞーー!?
by 体は大人、頭脳は子供の名探偵。
じっちゃんの名に懸けて 真実は一つ

Copyright © NTT Com Solutions Corporation. All rights reserved.

28

第3の部屋Zabbix5.0の新機能より

net.tcp.service[ntp] がnet.udp.service[ntp]に変わったようにNumeric(float) も Numeric(double) に改名しようぜ！
Copyright © NTT Com Solutions Corporation. All rights reserved.

29

Commercial Message

すべてはお客さまと社会のために

Copyright © NTT Com Solutions Corporation. All rights reserved.

30

【第４の部屋】
ダブルアップ！
俺がお前で！お前が俺で！
マイティ！マイティ！ブラザーズ！
ダブルエーックス！
Copyright © NTT Com Solutions Corporation. All rights reserved.

31

第4の部屋Zabbixの内部処理では時刻表現を・clockという「UNIX時間(POSIX time) 」・nsという「ナノ秒」の２つを組み合わせて行っているのは有名な話

Copyright © NTT Com Solutions Corporation. All rights reserved.

32

第4の部屋
1.8までは、時刻はclockでしか管理していなかったので１つのアイテムが1秒以内に複数のヒストリを収集すると{ITEM.VALUE} のマクロの値が入れ替わってしまう問題がありました。

これも有名な話ですね

Copyright © NTT Com Solutions Corporation. All rights reserved.

33

第4の部屋Copyright © NTT Com Solutions Corporation. All rights reserved.

34

第4の部屋
こんな大事な機能改善なのに、What’s Newでの扱いはひどい問題を解決するため、時刻情報の解像度を拡張し更に詳細な時刻情報としてナノ秒を導入しました。

https://www.zabbix.com/documentation/2.0/manual/introduction/whatsnew200#nanosecond_support

Copyright © NTT Com Solutions Corporation. All rights reserved.

35

第4の部屋なので代わりに説明するとナノ秒レベルで時刻情報を管理するために追加の時刻情報「ns」を追加することにより従来の1秒以内という広い範囲ではなく１ナノ秒以内という非常に短い期間に複数のヒストリが収集されない限りは{ITEM.VALUE} のマクロの値が入れ替わるような事象が起こらないように改善されました。

Copyright © NTT Com Solutions Corporation. All rights reserved.

36

Commercial Message

私たちは現在と未来を「つなぐ」
イノベーションパートナーです。

Copyright © NTT Com Solutions Corporation. All rights reserved.

37

【第５の部屋】
nanosecに単位をそろえると蒸着は 50,000,000ns赤射は 1,000,000ns
焼結は 1,000,000ns
Copyright © NTT Com Solutions Corporation. All rights reserved.

38

第5の部屋あれ？
そもそもnanosecって何桁まで入るんだ？

Copyright © NTT Com Solutions Corporation. All rights reserved.

39

第5の部屋

簡単だよ。11桁入るんだ。
つまり 99,999,999,999 だね。

Copyright © NTT Com Solutions Corporation. All rights reserved.

40

第5の部屋Copyright © NTT Com Solutions Corporation. All rights reserved.

41

第5の部屋じゃ『 11 』って何よ！？
PostgreSQLだとただの int じゃん

サバダバサバダバ～

Copyright © NTT Com Solutions Corporation. All rights reserved.

42

第5の部屋・ZEROFILLするときの桁数指定

つまり 99,999,999,999
なんて絶対入らないんですね・丸カッコの中身を増減しても確保されるデータ領域は同じサイズ
・MySQLのintの上限と下限は-2,147,483,648～2,147,483,647 (10桁)Copyright © NTT Com Solutions Corporation. All rights reserved.

43

第5の部屋【 お手紙で聞いてみました 】
Dear Alexei,This year‘s Zabbix Summit was held online.
So I am very sad that I couldn't go to Latvia.
I want to go to Latvia next year,

so please hold the Zabbix Summit 2021 offline.
Thank you and best regards,
Powered by Google翻訳
Copyright © NTT Com Solutions Corporation. All rights reserved.

44

第5の部屋【 返事が来たよ！ 】
謹啓 深秋のみぎり、ZabbixConferenceJapan2020にご参加いただいている皆様におかれましてはいよいよご隆盛の由、大慶の至りと存じます。
さて、議論も活発な nanosec の桁数の件ですがZabbixのソースコード内で9桁に制限しています。

だって、ナノ秒は10のマイナス9乗でしょ？

ざびっくすのえらいひと Alexei Vladishev より
Copyright © NTT Com Solutions Corporation. All rights reserved.

45

Commercial Message

新たなバリューを創造する「イノベーションパートナー」
をめざしますCopyright © NTT Com Solutions Corporation. All rights reserved.

46

【第6の部屋】
電波時計って精確なイメージがあるけど標準電波の速度が光の速度なので300kmで1msくらいズレるらしいよ
Copyright © NTT Com Solutions Corporation. All rights reserved.

47

第6の部屋Zabbixのヒストリデータにはその値が収集された時間が『タイムスタンプ』として付与されています。
コレ

Copyright © NTT Com Solutions Corporation. All rights reserved.

48

第6の部屋あれ？
このタイムスタンプって誰が付与してるんだ？

Copyright © NTT Com Solutions Corporation. All rights reserved.

49

第6の部屋タイムスタンプを付与する人はアイテムタイプによって違います。
・Zabbixエージェント(アクティブ)→ エージェントが付与
・それ以外 (つまりポーリングタイプ)→ 基本的にサーバが付与※zabbix_senderとか例外はあるよ

Copyright © NTT Com Solutions Corporation. All rights reserved.

50

第6の部屋

パッシブ
サーバが取得した時間がタイムスタンプ

Zabbixサーバ

Zabbix
エージェントアクティブ
エージェントが取得した時間がタイムスタンプ

Copyright © NTT Com Solutions Corporation. All rights reserved.

51

第6の部屋あれ？
じゃ エージェント側のOSの時刻が狂ってたらタイムスタンプってヘンな時間にならないか？

Copyright © NTT Com Solutions Corporation. All rights reserved.

52

第6の部屋
OSの時刻：13:00(JST)

OSの時刻：14:00(JST)パッシブ

Zabbixサーバ

サーバが取得した時間がタイムスタンプ
13:00(JST)Zabbixエージェント
アクティブ
エージェントが取得した時間がタイムスタンプ
14:00(JST)同じタイミングのヒストリなのにタイムスタンプが違う！？
Copyright © NTT Com Solutions Corporation. All rights reserved.

53

第6の部屋
そうならないように・Zabbixサーバ
・Zabbixプロキシ
・Zabbixエージェント(アクティブ)には、時刻を補正する機能が付いています。いました。

Copyright © NTT Com Solutions Corporation. All rights reserved.

54

第6の部屋
OSの時刻：13:00(JST)

OSの時刻：14:00(JST)アクティブ
14:00(JST)に送信しました。
アイテムA
タイムスタンプ 14:00
データxxxx
アイテムB
タイムスタンプ 14:00
データxxxx
アイテムC
タイムスタンプ 14:00
OSの時刻が俺の時間と比べて+01:00だからデータxxxx
こいつの言ってるタイムスタンプもZabbix
サーバ

エージェントが取得した時間がタイムスタンプ
14:00(JST)Zabbix
エージェント

きっと1時間進んでるな？
じゃ格納するときに1時間引くかサーバの時刻を正としてヒストリのタイムスタンプは調整される
Copyright © NTT Com Solutions Corporation. All rights reserved.

55

第6の部屋

素晴らしい機能なのに、なぜかZabbix4.0で削除されました。

※ 『What’s new in Zabbix 4.0.0』に見当たらなかったのでChangeLogからCopyright © NTT Com Solutions Corporation. All rights reserved.

56

第6の部屋
-01:00の補正だな① 1nsで送信完了-01:01の補正だな

Zabbixサーバ-01:00の補正だな② 1secで送信完了

Zabbix
エージェントアクティブ③ 1nsで送信完了

時刻補正の影響でヒストリが入れ替わる！？
Copyright © NTT Com Solutions Corporation. All rights reserved.

57

第6の部屋
【結論】
Zabbix4.0以降を利用している場合はこれがChronyらしいです

Zabbixサーバだけではなく被監視対象もちゃんと時刻同期をしましょう！と言うか、すべてのサーバが同じ時を刻むようにするのはシステムを構成する際の基本ですよね

Copyright © NTT Com Solutions Corporation. All rights reserved.

58

ご清聴ありがとうございました【お問い合わせ先】

NTTコムソリューションズ
マネジメントソリューション本部

メール： zbcm-sales@ntt.com
ZABICOM公式サイト： https://www.zabicom.com/
Zabbix Enterprise Applianceも扱っておりますZabbix導入のお手伝い/保守サポート/カスタマイズ開発など承ります
詳細につきましてはお問い合わせください

Copyright © NTT Com Solutions Corporation. All rights reserved.

59