コンテナでの監視機能の実装とproblemテーブル肥大化問題の事例紹介
2021年11月18日
エヌ・ティ・ティ・コミュニケーションズ株式会社
名倉 堂心（なくら たかみ）

© NTT Communications Corporation All Rights Reserved.

自己紹介
名倉 堂心（なくら たかみ）
【経歴】
2020年4月

新卒でNTTコムソリューションズ入社（入社2年目）

2020年9月～ Zabbixの構築・運用業務に従事
2021年7月

NTTコミュニケーションズ合併後もZabbixに関わる【スポーツ歴】
サッカー歴9年、空手歴9年、ラグビー歴8年目（継続中）© NTT Communications Corporation All Rights Reserved.

2

会社紹介
NTT コミュニケーションズ株式会社(https://www.ntt.com/)・2008年より、Zabbix社と提携したZabbix関連事業を開始
・ZABICOMソリューションの導入/運用/製品供給などのサービスを提供

https://www.zabicom.com© NTT Communications Corporation All Rights Reserved.

3

目次
1. コンテナでの監視機能の実装について
2. problemテーブル肥大化に関する事例と対応について
3. ちょっとだけ宣伝
4. まとめ© NTT Communications Corporation All Rights Reserved.

4

コンテナでの監視機能の実装について© NTT Communications Corporation All Rights Reserved.

5

どんな要件があるのか？
要件① ネットワーク・システムの監視をしたい② オンプレ、仮想環境の監視にZabbixを導入したい

監視システムとして、Zabbixを物理サーバまたは仮想サーバで導入するケースがほとんど© NTT Communications Corporation All Rights Reserved.

6

Zabbixの導入時に用いるプラットフォームは？

物理マシン© NTT Communications Corporation All Rights Reserved.

仮想マシン

コンテナ

7

今回お話するケースでは…

検証環境でOKが出たものを、本番環境に適用したいという要件も…

検証環境から本番環境へ移植・適用する作業が必要© NTT Communications Corporation All Rights Reserved.

8

ギモン＆ツッコミ
コンテナ使うのになんでひとまとめにしてんの？

オンプレでの設計と変わんなくない？

コンテナ使う意味wwA.ごもっともです。。。

© NTT Communications Corporation All Rights Reserved.

9

仮にマイクロサービス化した場合で、保守・運用どうするの？

たしかに(;’∀’)
実績もないしどうしよう。。。

© NTT Communications Corporation All Rights Reserved.

10

All in One構成にするメリット
1台に複数のマイクロサービスコンテナでZabbixを構築する場合との比較メリット

 オンプレとほぼ同様の構築手順
 オンプレ構築と変わらない保守性、運用性

自分たちが保守・運用をするにあたっても確実な手段© NTT Communications Corporation All Rights Reserved.

11つまるところ…
運用実績の多さ

物理マシン

仮想マシン

いいとこどり◎

持ち運びのしやすさ

コンテナ© NTT Communications Corporation All Rights Reserved.

12

まとめると
 検証環境から本番環境への適用がスムーズ 自分たちが保守・運用するにあたっても安心

All in Oneコンテナが最適だった© NTT Communications Corporation All Rights Reserved.

13

problemテーブル肥大化に関する事例と対応について© NTT Communications Corporation All Rights Reserved.

14

problemテーブルとは？
データベース内の「障害中」のイベントデータを格納する場所（テーブル）「監視データ」→「障害」画面の最近の障害または障害が参照するテーブル※参考※https://assets.zabbix.com/img/zabconf2020_jp/presentations/02_2zabconf2020.pdf© NTT Communications Corporation All Rights Reserved.

15

Zabbix4.0以降の「正常イベント」の考え方「絶賛障害中のイベントが復旧したよ！」が正常イベントの定義

障害中のデータは復旧しない限りデータの保存期間を過ぎてもテーブルに残り続ける© NTT Communications Corporation All Rights Reserved.

16

「problemテーブル肥大化問題」ってナニ？
障害イベントが蓄積することでZabbixのWeb画面の表示が遅くなる、あるいは、表示できなくなる問題© NTT Communications Corporation All Rights Reserved.

17

problemテーブルが肥大化する原因
復旧しない障害イベントが蓄積すること イベント生成モード：複数 手動クローズを行わない運用原因になりやすい監視 ログ監視 SNMPTrap監視© NTT Communications Corporation All Rights Reserved.

18

problemテーブルを肥大化させないために 復旧イベントを生成する
 定期的に手動クローズを行う© NTT Communications Corporation All Rights Reserved.

19

復旧条件式の設定方法（regexp関数を使用する際）監視するログファイル

監視するログファイルに存在する正規表現

障害条件式 {HostA:log[/var/log/messages,“ERROR”].regexp(”ERROR”,30)}=1
アイテムキーregexp関数：最新の値に第1引数の正規表現が、直近の第2引数に指定した期間内に存在するか判定する関数

重要

復旧条件式 {HostA:log[/var/log/messages,“ERROR”].nodata(30)} = 1
アイテム：監視データ取集の定義
トリガー：アイテムの障害判定の定義

nodata関数：特定の期間内にアイテムを取得してないかどうかを判定する関数※引用元※
https://assets.zabbix.com/img/zabconf2020_jp/presentations/02_2zabconf2020.pdf© NTT Communications Corporation All Rights Reserved.

20

regexp関数の第2引数がなぜ必要になるのか
障害条件式 {HostA:log[/var/log/messages,“ERROR”].regexp(“ERROR”,30)}= 1
復旧条件式 {HostA:log[/var/log/messages,“ERROR”].nodata(30)} = 1
復旧イベントが生成される条件は…

障害条件式が成立しない、かつ、復旧条件式が成立する場合のみ最新値の検索期間を制限する必要がある© NTT Communications Corporation All Rights Reserved.

21

実際に出会った事象
problemテーブル内にデータが200万件以上溜まりWeb画面にアクセスできなくなる

DBから直接データの削除を試みるも事態は好転せず…
MySQL [zbx0003je]> select count(*) from problem where r_clock=0 ;DBの作り直し+----------+| count(*) |+----------+

ﾆﾋｬｸﾏﾝ…

| 2441611 |+----------+
1 row in set (5.844 sec)
© NTT Communications Corporation All Rights Reserved.

22どう対応したのか

一定期間データを取得しない場合に、自動で復旧させる条件式を設定
nodata関数を使用

現在は正常に運用ができている◎© NTT Communications Corporation All Rights Reserved.

23

自動復旧条件式の設定のしかた注意！

ログ監視で、第2引数を指定しないでアイテムを取得することはよくありますよね？

アイテム: log[/var/log/messages]
トリガー①：{HostA:log[/var/log/messages].regexp(“ERROR”)} = 1
トリガー②：{HostA:log[/var/log/messages].regexp(“CRITICAL”)} = 1© NTT Communications Corporation All Rights Reserved.

24自動復旧条件式の設定のしかた注意！
同じアイテムに複数のトリガーを設定する場合
トリガー①

障害条件式 {HostA:log[/var/log/messages].regexp(“ERROR”,30)}=1
復旧条件式 {HostA:log[/var/log/messages].nodata(30)} = 1
トリガー②

障害条件式 {HostA:log[/var/log/messages].regexp(“CRITICAL”,30)}=1
復旧条件式 {HostA:log[/var/log/messages].nodata(30)} = 1© NTT Communications Corporation All Rights Reserved.

25

どんなことが起こるか？
2021/11/18 12:00:00 → ERROR → ERROR の障害を検知
2021/11/18 12:00:01 → ERROR → ERROR の障害を検知
2021/11/18 12:00:02 → CRITICAL → CRITICALの障害を検知はにゃ？

© NTT Communications Corporation All Rights Reserved.

ERRORの障害も検知

26

原因は何？？
トリガー①

障害条件式 {HostA:log[/var/log/messages].regexp(“ERROR”,30)} = 1
トリガー②

障害条件式 {HostA:log[/var/log/messages].regexp(“CRITICAL”,30)}=1
2021/11/05 12:00:00 “ERROR”

障害！

2021/11/05 12:00:01 “ERROR”
2021/11/05 12:00:02 “CRITICAL”

直近の30秒間に“ERROR”アルネ© NTT Communications Corporation All Rights Reserved.

27

このような誤検知が起きないようにするためにアイテムキーの第２引数を指定！

データ収集の段階で、取り込むデータを絞り込む！

© NTT Communications Corporation All Rights Reserved.

28

忘れてはいけないのは…
目的はproblemテーブルを肥大化させないこと

復旧イベントを正しく生成することが大事！

© NTT Communications Corporation All Rights Reserved.

29

ちょっと宣伝© NTT Communications Corporation All Rights Reserved.

30

手動での障害復旧って大変ですよね…
 特にログやTrapのバースト時は確認や復旧に時間がかかる そもそも通知が多くて重要な障害を見落とす可能性もある

アラートの集約機能＆自動クローズ可能なツール「GatherAlert」があります！

© NTT Communications Corporation All Rights Reserved.

31

何ができるの？
一定期間おきに、障害内容をまとめて通知できる© NTT Communications Corporation All Rights Reserved.

32

32

何ができるの？

csv出力可能！

© NTT Communications Corporation All Rights Reserved.

33

通知イメージ（Teams）© NTT Communications Corporation All Rights Reserved.

34

通知イメージ（Slack）© NTT Communications Corporation All Rights Reserved.

35

通知イメージ（LINE）© NTT Communications Corporation All Rights Reserved.

36

さらに営業日と営業時間を自由に設定することができる

カレンダー機能実装してますが何か？

© NTT Communications Corporation All Rights Reserved.

37

どんなメリットがある？
1. アラートがまとまって通知される
2. 営業日・営業時間に応じて通知先を振り分けられる
3. 通知した障害については自動でクローズする© NTT Communications Corporation All Rights Reserved.

38

まとめ

© NTT Communications Corporation All Rights Reserved.

39

発表内容のまとめ

 何でAll in Oneコンテナで実装したの？
 problemテーブル肥大化に関する事例と対応について
 GatherAlertの紹介© NTT Communications Corporation All Rights Reserved.

40

ご聴講ありがとうございました！

© NTT Communications Corporation All Rights Reserved.