Zabbixにおけるデータ保護と安全な運用の手法

2023年11月16日

NTTコムエンジニアリング株式会社
岩島 琉偉© NTT Communications Corporation All Rights Reserved.

会社紹介
NTTコム エンジニアリング株式会社• NTTコミュニケーションズのサービスにおける、 提案コンサル、設計構築・保守運用を担うVC子会社• 自社の製品/サービスは「docomo Business」ブランドにて提供• NTTコミュニケーションズまたはドコモビジネスソリューションズより販売

製品/サービス提供

ZABICOM事業部門

製品/サービス販売

お客様
法人営業部門

法人営業部門© NTT Communications Corporation All Rights Reserved.

2

登壇者紹介
氏名 ： 岩島琉偉

所属 ： NTTコム エンジニアリング株式会社
スマートオペレーションサービス部
オペレーションマネジメント部門
出身 ： 新潟県上越市

経歴 ： 2022年 NTTコミュニケーションズ入社
Zabbix関連部署に所属
2023年 NTTコム エンジニアリング
引き続きZabbix関連部署に配属
システム監視の提案・構築の業務に従事© NTT Communications Corporation All Rights Reserved.

3

Zabbixのシステム構築において考慮することは？

© NTT Communications Corporation All Rights Reserved.

4

システム構築の流れ

RFP

要件定義

© NTT Communications Corporation All Rights Reserved.

設計

構築

監視設定

試験

5

RASISという設計要素がある

Reliability（信頼性）
Reliability（信頼性）
Availability（可用性）Availability（可用性）Serviceability（保守性）
Serviceability（保守性）

品質管理

バックアップ
監視

Integrity（完全性）
Integrity（完全性）

試験

冗長化

システム更新

暗号化
アクセス制御Security（機密性）
Security（機密性）© NTT Communications Corporation All Rights Reserved.

脆弱性管理

6

保守性と可用性に着目してみる
Reliability（信頼性）
Reliability（信頼性）
Availability（可用性）Availability（可用性）Serviceability（保守性）
Serviceability（保守性）
Integrity（完全性）
Integrity（完全性）

Security（機密性）
Security（機密性）© NTT Communications Corporation All Rights Reserved.

7

Zabbixにおける保守性と可用性© NTT Communications Corporation All Rights Reserved.

8保守性と可用性の要素
保守性

可用性

監視バックアップシステム更新冗長構成システムの安定運用には保守性と可用性は不可欠© NTT Communications Corporation All Rights Reserved.

9

システムの安定運用にはバックアップが重要© NTT Communications Corporation All Rights Reserved.

10バックアップの重要性

バックアップが無いと• データ損失• 長期間のサービス停止• 余計なコストがかかる• 信用低下様々な要因によってデータが危険にさらされる© NTT Communications Corporation All Rights Reserved.

11

Zabbixにおけるバックアップとは？

© NTT Communications Corporation All Rights Reserved.

12

システム構成の階層• アプリケーション
Zabbix

アプリケーション• ミドルウェア
MySQL, PostgreSQL

ミドルウェア• OS
RedHat, RockyLinuxOS• ハードウェア
物理マシン
仮想マシン

© NTT Communications Corporation All Rights Reserved.

ハードウェア13

各階層におけるバックアップ手法• アプリケーション
ZabbixからXML出力等• ミドルウェア
DBMSの機能を用いたバックアップ• OS
システム全体をイメージ化する• ハードウェア
ストレージでバックアップ仮想マシンをバックアップ© NTT Communications Corporation All Rights Reserved.

アプリケーション

ミドルウェアOS

ハードウェア14

完全バックアップ
データベースのすべてのデータを一度にバックアップする方法。

バックアップ

データベーステーブル#1

テーブル#2

テーブル#3

テーブル#1

テーブル#2

テーブル#3

テーブル#4

テーブル#5テーブル#6

テーブル#4

テーブル#5テーブル#6© NTT Communications Corporation All Rights Reserved.

15

Zabbixの場合は部分バックアップも可能
データベース内の特定のテーブルのみをバックアップ・リストアすることが可能。
Zabbixにおいては監視設定情報のみをバックアップすることができる。
バックアップ

データベーステーブル#1

テーブル#2

テーブル#3

テーブル#4

テーブル#5テーブル#6© NTT Communications Corporation All Rights Reserved.

テーブル#316

完全バックアップ

メリット• 完全なデータ復旧が可能• データ構造を意識しなくてもいい• リストアが簡単に行える

デメリット• データ量が大きいので負荷が高くなりやすい• バックアップデータのサイズが大きくなる
サイズが大きいため多くの世代を保持できない• サイズが大きいためバックアップデータの取り回しが悪い© NTT Communications Corporation All Rights Reserved.

17

部分バックアップメリット• データ量が小さく負荷がかからない• バックアップデータのサイズが小さいため、多くの世代を保持できる• サイズが小さいためバックアップデータの取り回しが良い

デメリット• 部分的なデータ復旧しかできない• バックアップする際にデータ構造を意識する必要がある• リストアする際にテーブル構造に対する深い理解が必要• リストアの手順を考える必要があり操作が複雑化する© NTT Communications Corporation All Rights Reserved.

18

完全バックアップ・リストアの手順
コマンド例• バックアップ方法
MySQL：#mysqldump -u [USERNAME] -p [DBNAME] > backupfile.sql

PostgreSQL:#pg_dump -U [USERNAME] -d [DBNAME] -f backupfile.sql• リストア方法
MySQL：#mysql -u [USERNAME] -p [DBNAME] < backupfile.sql

PostgreSQL:#psql -U [USERNAME] -d [DBNAME] -f backupfile.sql© NTT Communications Corporation All Rights Reserved.

19

部分バックアップ・リストアの手順• バックアップ方法
MySQL：#mysqldump -u [USERNAME] -p [DBNAME] [TABLENAME] > backupfile.sql

PostgreSQL:#pg_dump -U [USERNAME] -d [DBNAME] [TABLENAME] -f backupfile.sql• リストア方法

MySQL：#mysql -u [USERNAME] -p [DBNAME] < backupfile.sql

PostgreSQL:#psql -U [USERNAME] -d [DBNAME] -f backupfile.sql

理論上は可能だが、Zabbixでは安易な部分バックアップでは動かなくなる© NTT Communications Corporation All Rights Reserved.

20

部分バックアップのリストアに関する注意点© NTT Communications Corporation All Rights Reserved.

21

アイテムの設定をバックアップしたい場合

アイテムの監視設定情報だけほしいからアイテムのテーブルだけ取ってリストアすればいいんじゃね？

それだけだとリストアしても上手くいかないよ！！
アイテムのIDはZabbixの中で管理されているので矛盾が起きてしまう...

© NTT Communications Corporation All Rights Reserved.

22

部分バックアップによる問題例
アイテムのIDと、IDの管理情報が入っているidsテーブルとで矛盾が起きる問題を再現してみる。

1. idsテーブルを部分バックアップする© NTT Communications Corporation All Rights Reserved.

23

部分バックアップによる問題例
2．アイテムを2つ追加してみた

idsテーブルのitemidのnextidの変化idsテーブル© NTT Communications Corporation All Rights Reserved.

24

問題の発生
3．リストアしてみたリストアを行ってからアイテムを登録しようとするとエラーが発生した。
監視設定情報のほとんどはIDで管理されているため、同様の事象が発生する。

アイテム作成失敗の図© NTT Communications Corporation All Rights Reserved.

25リストアによるIDの矛盾
新たに追加されるアイテムやトリガー、ユーザーなどの情報に割り振られるID番号としてidsテーブルにはnextidが記録されている。
リレーショナルを考慮しないでバックアップを行うとIDの矛盾等が起きて予期せぬ動作を起こすことがある。
今回の検証では古いidsテーブルをリストアしたため、アイテムのnextidに矛盾が生じた。
45003

nextid：45003

Zabbixサーバー

リストア！！

45003

45005

アイテム追加！！

45003

Zabbixサーバー

IDの矛盾が起きないようにidsテーブルや、IDが関わる関連したテーブルも同時にバックアップを行わないといけない© NTT Communications Corporation All Rights Reserved.

26

監視設定のみ部分バックアップする場合
バックアップ対象、データを削除するテーブル、バックアップ対象から除外にするテーブルを一部紹介する。

バックアップ対象データを削除するテーブル

除外するテーブル

items

alertshistory

item_tag

escalations

history_unit

triggers

task_acknowledge

history_text

trigger_discovery

task_check_now

history_log

hosts

task_data

trendshosts_groups

task_result

trends_unit

……

……

……

アイテムやトリガー、ホストなどのバックアップしたい監視設定が記録されているテーブル© NTT Communications Corporation All Rights Reserved.

アラートやタスクなどの中間
データはバックアップした時点で行わないといけないものでリストアしても困る

ヒストリやドレンドの監視デー
タを記録しているものはデータ量が大きいので除外27

バックアップ・リストアのまとめ
1

バックアップを怠ることによってデータ損失やサービス停止、信用低下が起きる可能性がある。

2

それぞれの環境や要件、目的に合わせたバックアップの手段を選択する。

3

部分バックアップを行う際はリレーショナルを考慮したテーブルを選択する。

4

監視設定のバックアップをする際は監視データの除外と中間データの削除を行い整合性を保つ。

© NTT Communications Corporation All Rights Reserved.

28

部分バックアップを別のZabbixに入れればAct-Act構成できる？

© NTT Communications Corporation All Rights Reserved.

29

ZabbixのHA構成
Act-Stb構成

Act-Act構成

Zabbixサーバー#1（Act機） Zabbixサーバー#2（Stb機）

Zabbixサーバー#1（Act機） Zabbixサーバー#2（Act機）

監視対象機器

監視対象機器Stb機にAct機の監視設定を流し込むだけでよい

Act-Actはただ監視設定を流し込むだけでは問題がある© NTT Communications Corporation All Rights Reserved.

30例）こういう条件で運用した場合状況2号機のみに飛んでくるトラップがある構成。
このまま同期させると1号機のイベントで上書きしてしまう。
イベント情報を除外すればいい？

とあるAct-Act構成

problemテーブルもeventsテーブルとセットのIDで管理されているので除外する必要がある。
acknowledgesも受諾情報でeventsに紐づいているので同時に除外する必要がある。

Zabbixサーバー#1（Act機） Zabbixサーバー#2（Act機）

この3つを除外するだけでいい？

テーブルを除外した場合、IDの情報を同期させるのは問題がある。
そのため、idsテーブルの情報は単純に同期させるわけにはいかない。

© NTT Communications Corporation All Rights Reserved.

監視対象機器31

面倒くさいしidsテーブルの中身を空にしよういいんですかそんなことして！？

© NTT Communications Corporation All Rights Reserved.

32

いいよ～♪

idsテーブルに無いIDを採番したら、正しいnextidを記録しておくよ© NTT Communications Corporation All Rights Reserved.

33

IDの矛盾問題の解決
解決
同期の際にidsテーブルを空にすると、次のIDが振られる際に自動的に最後の番号+1のIDが挿入される。
そのためnextidの矛盾問題は無くなる。
これによって同期の際にacknowledgesのnextidに矛盾が起きることによって障害がクローズできない等の問題は解決される。
Ids#1
ids#1

Ids(空)

Ids(空)
ids#2

設定追加の時にidsテーブルにZabbixサーバー#1（Act機）

Zabbixサーバー#2（Act機）

無いIDが採番されたら正しいnextidを記録しておくよ

監視対象機器© NTT Communications Corporation All Rights Reserved.

34

idsのデータを削除して検証
idsテーブルのnextidに矛盾があると様々な動作で支障が出る。

アイテムを追加できません

アイテム作成失敗の図© NTT Communications Corporation All Rights Reserved.

35

idsのデータを削除して検証
実際にidsテーブルの中身を空にしてアイテムを追加してみる。

mysql> truncate table ids; で中身を削除

成功！！
新しくアイテムを追加した後idsを確認をする© NTT Communications Corporation All Rights Reserved.

36

Act-Act構成まとめ

1

ZabbixのDBは様々なテーブルが連携しているため、欲しい情報に関連したテーブルも一緒にバックアップしなければならない。

2

独立で動かすためには障害情報(problem)、イベント情報(events)、受諾情報(acknowledges)は同期してはいけない。

3

テーブルを除外した場合、idsテーブルの情報の整合性に気を付ける必要がある。

© NTT Communications Corporation All Rights Reserved.

37

補足
弊社では監視設定のバックアップをツール化して自動で行っています。

「BackupConfig」© NTT Communications Corporation All Rights Reserved.

38

補足
また、Act-Stb構成とAct-Act構成の同期も提供しています。

「ReserveConfig」

ほかにもZabbixの様々なツールを提供しております。
© NTT Communications Corporation All Rights Reserved.

39

まとめ
✓ 保守性と可用性を高めるためにはバックアップが重要✓ Zabbixでは部分バックアップが有効な手法✓ 部分バックアップではテーブルの構造を意識する✓ Act-Act構成でDBを同期する場合、データの整合性に気を付ける© NTT Communications Corporation All Rights Reserved.

40

ご清聴ありがとうございました。

© NTT Communications Corporation All Rights Reserved.

41