運用の効率化に向けた通知の課題とZabbix での対処法
Zabbix Conference Japan 2023
2023/11/16
SRA OSS 合同会社

© 2023 SRA OSS LLC

1

Who am I• 赤松 俊弘（Toshihiro Akamatsu）• SRA OSS合同会社• Zabbix 認定プロフェッショナル• Zabbix 歴 7 年• 業務• OSS 全般の技術サポート、構築、コンサルティング• 主に Zabbix を担当© 2023 SRA OSS LLC

2

監視における通知と運用• 監視運用者にとって、毎日は通知との闘い• 日々大量の通知が届く• 大量の通知から優先度・重要度を判断して対応する必要がある• あまりにも通知が多いと…
• 緊急・重要な通知を見逃す• そもそも通知への対応がおざなりになる© 2023 SRA OSS LLC

3

監視運用者の願い• ノイズとなる通知はできるだけ減らしたい• 通知対応を効率的にしてコストを減らしたい
でも• Zabbix でどう設定したらよいか分からない© 2023 SRA OSS LLC

4

本講演の目的

Zabbix でできる効率的な障害検知・通知のやり方Tips を紹介© 2023 SRA OSS LLC

5

Case①障害の波及による障害多発© 2023 SRA OSS LLC

6

障害が波及するケース
ルータ疎通不可

上位の機器の障害で下位の機器まで障害判定

サーバ A 疎通不可

サーバ B 疎通不可

© 2023 SRA OSS LLC

7

障害が波及するケースの改善策
ルータ疎通不可

上位の機器の障害で下位の機器まで障害判定

依存関係

サーバ A 疎通不可

サーバ B 疎通不可

トリガーの依存関係で下位の障害を抑制
上位 (依存先) のトリガーが障害の間は下位のトリガーを障害としない© 2023 SRA OSS LLC

8

Case②
数値監視での障害の多発© 2023 SRA OSS LLC

9数値監視でのケース• last(/host/key) > X• 最新値が閾値 X を超えているかどうかのみで判定
短時間で閾値を連続でまたぐ場合、障害・復旧通知がその都度届く
突発的な負荷上昇 (スパイク) でも検知して通知してしまう© 2023 SRA OSS LLC

10

数値監視での改善策• last 関数が問題？

• 他の関数やトリガー設定次第でどうにかなる？

© 2023 SRA OSS LLC

11

トリガーによる改善策：max関数
特徴設定
max(/host/key, #N) > X
過去 N 回の最大値が閾値 X を超えると障害• 閾値超えで即障害• 一定期間閾値を下回れば復旧• 閾値前後の動き：抑制• スパイク：検知

max(/host/key, #3) > X
X© 2023 SRA OSS LLC

12

トリガーによる改善策：min関数
特徴設定
min(/host/key, #N) > X
過去 N 回の最小値が閾値 X を超えると障害• 一定期間閾値超えで障害• 閾値を下回れば即復旧• 閾値前後の動き：抑制• スパイク：抑制min(/host/key, #3) > X
X© 2023 SRA OSS LLC

13

トリガーによる改善策：count関数
設定

特徴count(/host/key, #N, gt, X) > C• 一定回数閾値超で障害• 一定回数閾値を下回ると復旧• 閾値前後の動き：ある程度抑制• スパイク：抑制

過去 N 回で閾値 X を超えた回数がC を超えると障害
count(/host/key, #3, gt, X) > 2
X© 2023 SRA OSS LLC

14

トリガーによる改善策：復旧条件式
特徴

設定
障害：last(/host/key) > X
復旧：last(/host/key) < Y
最新値が閾値 X を超えると障害
閾値 Y を下回ると復旧• 閾値超で即障害• 閾値を下回れば即復旧• 閾値前後の動き：ある程度抑制• スパイク：検知XY© 2023 SRA OSS LLC

15

トリガーによる改善策まとめ
改善策

障害感度

復旧感度

短期間の スパイク 備考
閾値
またぎ

max関数

感度は期間設定による
感度は期間設定による感度と閾値またぎは期間と回数による
閾値またぎは閾値の設定による

min関数
count関数

復旧条件式© 2023 SRA OSS LLC

16

数値監視でのトリガー以外の改善策• トリガー以外で対策は？
• 通知の問題だからアクション設定だとどう？

© 2023 SRA OSS LLC

17

アクションによる改善策• Zabbix のアクションのエスカレーション機能を利用• 段階（ステップ）を踏んで異なるアクションを実行• ステップ①のアクション• ステップ②のアクション• ステップ③のアクション…
© 2023 SRA OSS LLC

18

アクションによる改善策
設定

特徴• ステップ間隔：N (監視間隔以上)• ステップ①は通知なし• ステップ②で通知• 一定期間障害で通知• 障害通知なしなら復旧通知なし• 閾値前後の動き通知：抑制• スパイク通知：抑制

last(/host/key) > 80

ステップ①

ステップ①
© 2023 SRA OSS LLC

ステップ②
19

数値監視の改善策まとめ

障害通知の多少の遅延を許容できるなら、
min 関数もしくはアクションによる改善策© 2023 SRA OSS LLC

20

Case③
ログ・SNMP トラップでの障害の多発© 2023 SRA OSS LLC

21

ログ・SNMP トラップでのケース• find(/host/log[/var/log/messages, error],, like, error) = 1• 検知文字列が出力されると障害• 短時間に大量のログ・トラップが出力されるとそのたびに通知が届く
In
fo

Er
r

In
fo

In
fo

Info

E E E E Er r r r rr r r r r© 2023 SRA OSS LLC

In Erf roErr

22

ログ・SNMP トラップ監視での改善策• 短期間の件数が多ければ障害にしなければいいのでは？

© 2023 SRA OSS LLC

23

トリガーによる改善策：count関数
特徴設定
find(/host/log[file, str],, like, str) = 1 andcount(/host/log[file, str], T, like, str) < N
最新値に str を含むかつ過去 T 時間に str を含む件数が N 件未満で障害

I
nfo

Err

Info

I
nfo

Info

• 通常は検知文字列で障害• 短期間に大量に出ると無視• いつ大量出力があったかは分からない

E E E E Er r r r rr r r r r© 2023 SRA OSS LLC

In Ef rroErr

24

トリガーによる改善策：count関数
特徴設定
find(/host/log[file, str],, like, str) = 1 andcount(/host/log[file, str], T, like, str) < N
最新値に str を含むかつ過去 T 時間に str を含む件数が N 件未満で障害Info

ErrInfo

Info

Info

• 通常は検知文字列で障害• 短期間に大量に出ると無視• いつ大量出力があったかは分からない

E E E E Er r r r rr r r r r© 2023 SRA OSS LLC

In Ef rroErr

25

トリガーによる改善策：count関数
特徴設定
find(/host/log[file, str],, like, str) = 1 andcount(/host/log[file, str], T, like, str) < N
最新値に str を含むかつ過去 T 時間に str を含む件数が N 件未満で障害Info

Err

InfoInfoInfo• 通常は検知文字列で障害• 短期間に大量に出ると無視• いつ大量出力があったかは分からない

E E E E Er r r r rr r r r r© 2023 SRA OSS LLC

In Ef rroEr
r26

トリガーによる改善策：count関数
特徴

設定
find(/host/log[file, str],, like, str) = 1 andcount(/host/log[file, str], T, like, str) < N
最新値に str を含むかつ過去 T 時間に str を含む件数が N 件未満で障害Info

Err

Info

Info

Info

• 通常は検知文字列で障害• 短期間に大量に出ると無視• いつ大量出力があったかは分からない

E E E E Er r r r rr r r r r© 2023 SRA OSS LLC

In Ef rroErr

27

トリガーによる改善策：count関数
特徴設定
find(/host/log[file, str],, like, str) = 1 andcount(/host/log[file, str], T, like, str) < N
最新値に str を含むかつ過去 T 時間に str を含む件数が N 件未満で障害

Info

Err

Info

Info

Info

• 通常は検知文字列で障害• 短期間に大量に出ると無視• いつ大量出力があったかは分からない

E E E E Er r r r rr r r r r© 2023 SRA OSS LLC

In Ef rroErr

28

トリガーによる改善策：count関数
特徴設定
find(/host/log[file, str],, like, str) = 1 andcount(/host/log[file, str], T, like, str) < N
最新値に str を含むかつ過去 T 時間に str を含む件数が N 件未満で障害I
nfo

Err

Info

I
nfo

Info

• 通常は検知文字列で障害• 短期間に大量に出ると無視• いつ大量出力があったかは分からない

E E E E Er r r r rr r r r r© 2023 SRA OSS LLCIn Ef rroErr

29

トリガーによる改善策：count関数
特徴設定
find(/host/log[file, str],, like, str) = 1 andcount(/host/log[file, str], T, like, str) < N
最新値に str を含むかつ過去 T 時間に str を含む件数が N 件未満で障害

Info

Err

Info

Info

Info

• 通常は検知文字列で障害• 短期間に大量に出ると無視• いつ大量出力があったかは分からない

E E E E Er r r r rr r r r r© 2023 SRA OSS LLC

In Ef rroErr

30

トリガーによる改善策：count関数
特徴設定
find(/host/log[file, str],, like, str) = 1 andcount(/host/log[file, str], T, like, str) < N
最新値に str を含むかつ過去 T 時間に str を含む件数が N 件未満で障害

Info

Err

Info

Info

Info

• 通常は検知文字列で障害• 短期間に大量に出ると無視• いつ大量出力があったかは分からない

E E E E Er r r r rr r r r r© 2023 SRA OSS LLC

In Ef rroErr

31

トリガーによる改善策：依存関係設定

特徴

find(/host/log[file, str],, like, str) = 1
依存先:sum(/host/log.count[file, str], T) > N• 通常は検知文字列で障害• 短期間に大量に出ると抑制• 大量出力があったことはlog.count で検知最新値に str を含むと障害とするが、過去 T 時間に str を含む件数が N 件超で抑制

Info

Err

Info

Info

Info

E E E E Er r r r rr r r r r

In Ef rro

Err

文字列検知件数検知© 2023 SRA OSS LLC

32

イベント相関関係による改善策
特徴設定
イベント相関関係：
古いイベントタグと新しいイベントタグが等しい場合、新しいイベントをクローズ• 障害中のイベントと同じタグのイベントは自動クローズ• 最初の障害が復旧しないと新しい障害は検知されない

Web サーバ エラー XXXXX

Web サーバ

XXXXX

Web サーバ エラー YYYYY

Web サーバ

YYYYY

Web サーバ エラー XXXXX

Web サーバ

XXXXX© 2023 SRA OSS LLC

33

nodata 関数を使った復旧• 一定時間検知文字列が出力されなければ復旧させたい
設定

障害：find(/host/log[file, str], T, like, str) = 1
復旧：nodata(/host/log[file, str], T) =1• 復旧させたい時間幅 T を障害条件式にもいれておく• 障害条件式が False にならないと復旧条件式が評価されない© 2023 SRA OSS LLC

34

ログ・SNMP トラップ監視の改善策まとめ

大量出力中であることを検知したいならlog.count との複合技、内容によって細かく制御したいなら
イベント相関関係© 2023 SRA OSS LLC

35

他ソリューションでの改善策© 2023 SRA OSS LLC

36

他の通知ソリューションによる改善策• AlertManager• Prometheus の通知で使われているソフトウェア• ホスト名やトリガー ID など同じ属性の通知を集約して通知可能

AlertManager© 2023 SRA OSS LLC

37

Zabbix Active/Active の通知• 複数 Zabbix からの同じ通知を一つの通知としてまとめて送ることも可能

AlertManager#1
同期AlertManager#2© 2023 SRA OSS LLC

38

全体のまとめ• Zabbix のネイティブの機能をうまく使えば通知の効率化は可能• シルバーバレットはないので、状況に応じて使い分けが必要• 機能要望は Zabbix Feature Request へ• https://support.zabbix.com/projects/ZBXNEXT/© 2023 SRA OSS LLC

39

アンケートのお願いhttps://questant.jp/q/5YTTTSWH© 2023 SRA OSS LLC

40

www.sraoss.co.jp

sales@sraoss.co.jp© 2023 SRA OSS LLC

03-5979-2701
41