Zabbix Non-Certified Introductory Training '22

2022年11月18日

NTTコミュニケーションズ株式会社© NTT Communications Corporation All Rights Reserved.

UserSpecialist
Zabbix Certified Professional TrainingExpert
入門API© NTT Communications Corporation All Rights Reserved.

2

Zabbix 認定トレーニングコース

日本独自

入門 Zabbixを利用し始める方がZabbixの基本的な操作設定を学ぶことができるコース
API プログラミングを行いながら実際に動作するアプリケーションを作成し、APIの動作の基礎から実践的な活用までを学ぶことができるコース© NTT Communications Corporation All Rights Reserved.

3

みなさまのおかげです
コロナの頃な© NTT Communications Corporation All Rights Reserved.

4

Zabbix認定トレーナーの紹介© NTT Communications Corporation All Rights Reserved.

5

トレーナー紹介【入門コース】 日本独自

© NTT Communications Corporation All Rights Reserved.

6

トレーナー紹介【APIコース】 日本独自

© NTT Communications Corporation All Rights Reserved.

7

トレーナー紹介【認定ユーザーコース】© NTT Communications Corporation All Rights Reserved.

8

トレーナー紹介【認定 SP、Pro、Ex】© NTT Communications Corporation All Rights Reserved.

9トレーニング受講者の声© NTT Communications Corporation All Rights Reserved.

10受講者の声◆スピードが早くてちょうど良いです◆大変お詳しい方でしたので質問にも全てお答えいただいた。
ただ演習の見本操作が早くついていけなかった© NTT Communications Corporation All Rights Reserved.

11受講者の声◆質問に的確に回答して頂けた。
眠くならなかった© NTT Communications Corporation All Rights Reserved.

12受講者の声◆工事音がうるさかったが声を大きく出していただき全て聞き取ることができました◆声が大きく分かりやすい◆声が通っていて聞きやすい。
疑問点にも随時答えていただけた© NTT Communications Corporation All Rights Reserved.

13受講者の声◆ここに来ないと学べない情報が多くあった◆全て最高◆日本で一番の人に教えてもらって幸せでした© NTT Communications Corporation All Rights Reserved.

14

トレーナー業 13年目です2019年にZabbix本社から表彰されました◆世界で1番多くのZabbix技術者を育成→ 2019年時点で1000人超◆ Alexeiに次いで世界で2番目のトレーナー→ 現役では最古のトレーナー© NTT Communications Corporation All Rights Reserved.

Legendary trainer！

15

Zabbix 非認定ログスペシャリスト© NTT Communications Corporation All Rights Reserved.

16

ログ監視職人の朝は早い「まぁ 必要に迫られて始めたログ監視ですから」
最近は再読み込みが起きたりPermission Deniedが起きたりするので気が抜けないと愚痴をこぼす。
「ログはひとつひとつ温度や湿度が違う。
ここは職人の勘の見せ所ですよ」

オペレータルームの男たちは誰も無口だ© NTT Communications Corporation All Rights Reserved.

17

んなこたぁない© NTT Communications Corporation All Rights Reserved.

18

ログ監視は難しくない
今日は、Log監視のひみつについてをみなさんと一緒に見ていきたいと思います。

© NTT Communications Corporation All Rights Reserved.

19

ログローテーションの検知(logキー編)© NTT Communications Corporation All Rights Reserved.

20

ログローテーションの検知(logキー編)
logキーでは一体どのようにしてログがローテーションされたことを検知するのか
チェック項目
inode番号
ファイルのMD5(最大で512バイトまで)
ファイルサイズ
ファイルの変更時間(mtime) ※ 5.0.2まで各項目のチェック結果をエージェント内部のメモリに記憶し続けている。

© NTT Communications Corporation All Rights Reserved.

21

ログローテーションの検知(logキー編)
チェック項目
inode番号inode 番号は、その inode が記録されているデバイス上で一意の整数値である。
全てのファイルは inode に物理的にリンクされている。
プログラムがファイルをファイル名で参照するとき、システムはそのファイル名に対応する inode を検索する。
民明書房刊『I know do. ～私は知っている～』より
ウィキペディア『inode』(https://ja.wikipedia.org/wiki/Inode)より『inode番号が違う ≒ 違うログファイル』© NTT Communications Corporation All Rights Reserved.

22

ログローテーションの検知(logキー編)
チェック項目
inode番号Windows様のファイルシステムにinode番号なんて無いんですけど！

我がWindowsのファイルシステムはァァァァァァァアアア
世界一ィィィーーーーッ！！
© NTT Communications Corporation All Rights Reserved.

Windows
サイコー！

23

ログローテーションの検知(logキー編)
チェック項目
inode番号
HaHaHa！
僕のZabbixはそのあたりも抜かりないさ。
・NTFS⇒ VolumeSerialNumber ＆ 64bitのFileIndex
・ReFS⇒ VolumeSerialNumber ＆ 128bitのFileId
え？ FAT32やexFAT？
Best effortで64bitのFileIndexを確認してるよ
確実なチェックはできないけど頑張ってるよ© NTT Communications Corporation All Rights Reserved.

24

ログローテーションの検知(logキー編)
チェック項目ファイルのMD52022/11/15 あいうえお
2022/11/16 かきくけこ
2022/11/17 さしすせそ
2022/11/18 たちつてとMD5:
f265f1efdf167c16b390b6f3b2d3e6b3

2022/11/19 あいうえお
2022/11/20 かきくけこ
2022/11/21 さしすせそ
2022/11/22 たちつてとMD5:
d2b12c8cda28d0a1cceb205916704ba7

ログには普通タイムスタンプ等が含まれるから同じ文言にはならない『MD5が違う ≒ 違うログファイル』© NTT Communications Corporation All Rights Reserved.

25

ログローテーションの検知(logキー編)
チェック項目
ファイルサイズ

あいうえお
かきくけこ
さしすせそたちつてとあいうえお
かきくけこ
さしすせそ

ログと言うのは追記されるものなので『サイズが小さくなる ≒ 違うログファイル』という理論が成り立つ(はず)© NTT Communications Corporation All Rights Reserved.

26

ログローテーションの検知(logキー編)
チェック項目ファイルの変更時間(mtime)※ 5.0.2まで※ ファイルサイズをチェックした際に、変化が無かった場合に確認

3種類のタイムスタンプ
atime: time of last access (ls -lu)
mtime
ctime

: time of last modification (ls -l): time of last status change (ls -lc)

ファイルサイズが同じなのにmtimeが変化『ファイルサイズが同じなのにmtimeが変化 ≒ 違うログファイル』© NTT Communications Corporation All Rights Reserved.

27

mtimeが変わるとき
あ、viエディタでログ眺めてたら操作間違って1文字消しちゃった。てへぺろ
消した文字と同じ文字入力しなおして念のためにセーブしておけばいいや再読み込みが発生© NTT Communications Corporation All Rights Reserved.

28

mtimeが変わるとき$ touch /var/log/hogehoge.log っと
あ、touchコマンドでファイル触っちゃった。てへぺろ

再読み込みが発生© NTT Communications Corporation All Rights Reserved.

29

ログローテーションの検知(logキー編)【まとめ】
ログ出力の機構以外の要素でinode番号
ファイルの中身ファイルサイズmtimeを変えてはいけません！
© NTT Communications Corporation All Rights Reserved.

30

ログローテーションの検知(logrtキー編)© NTT Communications Corporation All Rights Reserved.

31

logrtキー、パラメータ多すぎ問題
logrt[file_regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>,<persistent_dir>]

パラメータ
file_regexp<regexp><encoding><maxlines><mode><output><maxdelay><options><persistent_dir>© NTT Communications Corporation All Rights Reserved.

ディレクトリパス ＋ 正規表現パターン
正規表現によるエージェントフィルタ
ログファイルの文字コード
秒間送信可能最大行数
既出ログの読み飛ばしフラグ
ログ文字列の部分抜き出し位置指定
遅延可能な最大秒数
ログファイルのローテート方式「永続ファイル」のパス
32

『options』パラメータ
ローテート方式の二大巨頭
rotate元ファイルのローテート開始
ファイル名を変更

元ファイル名で新たな空ファイルを作成

copytruncate
元ファイルのローテート開始
複製を別名で作成© NTT Communications Corporation All Rights Reserved.

元ファイルの中身をすべてクリアする
33

『options』パラメータはきちんと設定しよう
ローテート方式の二大巨頭
rotate元ファイル名で元ファイルのローテート開始
新たな空ファイル
ファイル名を変更
ローテート方式とパラメータが合っていないと……
を作成

copytruncate高確率で再読み込みが発生
元ファイルのローテート開始
複製を別名で作成© NTT Communications Corporation All Rights Reserved.

元ファイルの中身をすべてクリアする
34

logrtキーの処理
logrt[/var/log/^messages(|-[0-9]{8})$]
第1パラメータのうち、ディレクトリパスを抜き出す
01のディレクトリ直下へ移動
前回ログのmtime以上のmtimeを持つファイルが対象
正規表現パターンにマッチするファイルをリストアップ© NTT Communications Corporation All Rights Reserved.

35

logrtキーの処理
04で作ったリストをmtime順にソート
前回読んだファイルの続きを読む

ファイル末尾に達した
リスト上で次のファイルを読む© NTT Communications Corporation All Rights Reserved.

maxlinesまで送信した

1回の監視動作終了

36

logrtキーの処理方式を踏まえて考えるとリストが崩れるようなmtimeの変更があると……
高確率で再読み込みが発生© NTT Communications Corporation All Rights Reserved.

37

ファイル名の正規表現が適当すぎるとlogrt[/var/log/messages.*]© NTT Communications Corporation All Rights Reserved.

38

へんなファイルもマッチする

10月 26 16:50 messages-20221026
10月 30 03:27 messages-20221030
11月 6 03:28 messages-20221106
11月 13 03:17 messages-20221113
11月 14 13:11 messages
11月 14 13:15 .messages.swp© NTT Communications Corporation All Rights Reserved.

39

みんな大好き viエディタ
11月 13 03:17 messages-20221113
11月 14 13:11 messages
11月 14 13:15 .messages.swp

いまここまで読んだviエディタ 閉じる
11月 13 03:17 messages-20221113
11月 14 13:15 .messages.swp
11月 14 13:11 messages© NTT Communications Corporation All Rights Reserved.

一時ファイルなので消える
ログの追記で新しくなる40

ロジック的に100％正しいけど……
11月 13 03:17 messages-20221113
11月 14 13:11 messages
11月 14 13:15 .messages.swp

いまここまで読んだviエディタ
閉じる
新しいログファイルだから先頭から読まないとネ！

高確率で再読み込みが発生
11月 13 03:17 messages-20221113
11月 14 13:15 .messages.swp
11月 14 13:11 messages© NTT Communications Corporation All Rights Reserved.

一時ファイルなので消える
ログの追記で新しくなる41正規表現はちゃんと厳密に書こう！
logrt[/var/log/^messages(|-[0-9]{8})$]
正規表現
＾()
｜[]｛｝
＄

記号名
ハット、Circumflex Accent丸かっこ、Left/Right Parenthesis
パイプ、Vertical Line大かっこ、Left/Right Square Bracket
中かっこ、Left/Right Curly Bracket
ダラー、Dollar Sign

意味

ここが行頭(開始)
複数文字のグループ化
ORいずれか1文字にマッチする
直前の文字の繰り返し回数
ここが行末(終了)『messages』で始まって、何もないまま行末を迎えるかハイフンの後に１～9のいずれかの文字が8個続いた後に行末を迎える文字列とマッチする！！
© NTT Communications Corporation All Rights Reserved.

42

『前回読んだファイル』どう特定する？
Zabbixエージェントは、一度監視したものについては作成した『正規表現にマッチするファイルリスト』と『何番目まで処理したか』を過去1回分保持している。

10月 26 16:50 messages-20221026
10月 30 03:27 messages-20221030
11月 6 03:28 messages-20221106
11月 13 03:17 messages-20221113
11月 14 13:11 messages
見つからない場合はリストの先頭から読む© NTT Communications Corporation All Rights Reserved.

43

『前回読んだファイル』どう特定する？

前回チェックしたリストのファイル名と今回チェックしたリストのファイル名が同じだなんて保証できないんですけど© NTT Communications Corporation All Rights Reserved.

44

『前回読んだ』どう特定する？(rotate編)
inode番号
ファイルサイズの減少
サイズが同じでmtimeだけ更新→ 先頭＆末尾のMD5
mtime-rereadORmtime-noreread© NTT Communications Corporation All Rights Reserved.

45

『前回読んだ』どう特定する？(copytruncate編)
mtimeの減少
inode番号＆先頭/末尾のMD5→ 末尾位置が異なる場合
前回の末尾位置のMD5と比較© NTT Communications Corporation All Rights Reserved.

46

ログローテーションの検知(logrtキー編)【まとめ】
ローテート方式を把握しろ！
ログ出力の機構以外の要素でファイルに触れるな！

logキーと同じ点に気をつけろ！
特に中身やmtimeの編集はご法度だ！
© NTT Communications Corporation All Rights Reserved.

47

百戦不殆(敵を知り己を知れば百戦して殆うからず)

ログ監視は知っていれば難しくない！
これでキミも「再読み込み」とお別れだ！

© NTT Communications Corporation All Rights Reserved.

48

ご清聴ありがとうございました© NTT Communications Corporation All Rights Reserved.