197 Views
April 09, 25
スライド概要
よしたけです。
2025/04/04 日本Zabbixユーザー会 LLDを理解するときの勘所 〜LLDのある世界を楽しもう!〜 よしたけ @yoshitake945
自己紹介 浅野 剛丈 (よしたけ) 所属:きいてみてね! Zabbixとの関わり - Zabbix のリプレース・移行案件やる Zabbix 5.0の認定プロフェッショナル まで取る その後も問い合わせ・検証など @yoshitake945 2
“ LLD(ロー・レベル・ディスカバリ) 扱えてますか? 3
テンプレ紐付けたら よくわからん原理でアイテムが増 えた! 自動で監視始まるのはわかる。 だが、どう扱うん?? 自動化だったら ZABBIX-APIで がんばればいいよね! “ LLD(ロー・レベル・ディスカバリ) 扱えてますか? ⬇ トレーニング受けてても よくわかりませんでした!! 4
LLD、なぜ理解しづらい? ● ● ● ● テンプレ紐付けたら出来上がるので、 中身を考える機会がない 知ったところで、 扱いがわからない 他の機能を覚えるので精一杯 で、LLDまで追いつかない 左側にネットワーク・ディスカバリがあり混同しがち 中身の勘所をつかんでから 理解できるようになったので共有します! LLDじゃない ディスカバリ 5
“ LLDのある世界・ない世界 6
なぜLLDが必要か? ホスト個別で “値”と“個数”を探しに行かないと不明 なケース 例:Network Interfaceごとの各監視 ホスト テンプレート eth0用 一個ずつ書くんですか ?? NIF: eth0 ホスト 本当に潜りますか ?? NIF: eth0, eth1 テンプレート eth1用 そのテンプレ管理 うまく行きますか ?? ホスト NIF: ??? ~ LLDのない世界 ~ 7
なぜLLDが必要か? ホスト個別で “値”と“個数”を探しに行かないと不明 なケース 例:Network Interfaceごとの各監視 ホスト ! い な れ ら て っ NIF: eth0 ホスト 本当に潜りますか ?? テンプレート eth0用 一個ずつ書くんですか ?? テンプレート eth1用 や そのテンプレ管理 うまく行きますか ?? NIF: ??? ~ LLDのない世界 ~ NIF: eth0, eth1 ホスト 8
やってられないので、 LLDが必要 ホスト個別で “値”と“個数”を探しに行かないと不明 なケース 例:Network Interfaceごとの各監視 ホスト テンプレート NIF: eth0 見に行かないで OK! ホスト テンプレひとつで OK! NIF: eth0, eth1 LLDマクロでOK! ホスト NIF: ??? ~ LLDのある世界 ~ 9
やってられないので、 LLDが必要 ホスト個別で “値”と“個数”を探しに行かないと不明 なケース 例:Network Interfaceごとの各監視 ホスト テンプレート LLDのある世界を 楽しもう! NIF: eth0 見に行かないで OK! ホスト テンプレひとつで OK! NIF: eth0, eth1 LLDマクロでOK! ホスト NIF: ??? ~ LLDのある世界 ~ 10
LLDは、しれっと組み込まれてる とりあえず紐づける Linux用のテンプレ ホスト・テンプレートごとにディスカバリルールは作成できる 11
LLDは、しれっと組み込まれてる このアイテムキーの中身を 気にする機会、少なくないですか?? 12
“ LLDの勘所 13
勘所となる LLDのJSON
{
{"{#MACRO1}":"<value>"},"{#MACRO2}":"<value>"}},
{"{#MACRO1}":"<value>"},"{#MACRO2}":"<value>"}}
}
● ポイント
○ keyを “LLDマクロ”にして、 valueを“監視対象 ”にする
↑のJSONを取り込む前提で、ディスカバリルールを作る
14
※LLDのJSONにあるdataフィールドは Zabbix4.2から非推奨 net.if.discoveryの中身 {"data": [ {"{#IFNAME}":"eth0"} ] ホスト テンプレート NIF: eth0 } {"data": [ {"{#IFNAME}":"eth0"}, {"{#IFNAME}":"eth1"} ホスト NIF: eth0, eth1 ] } ホストごとに LLDのJSONが返ってくる 15
勘所を掴めば、様々な応用ができる ● サンプル・デモ ○ デモアプリケーションは、複数あるサービスのステータスを取得 できる ■ サービスがいくつあるかは不明 ○ ZabbixのLLDを活用して監視をはじめてみる { {"{#SERVICE}":"service1"},"status":"running"}}, {"{#SERVICE}":"service2"},"status":"stopped"}} } 16
汎用的な LLDを始める流れ 1. ディスカバリルールの作成 ○ Zabbixからデータ取得するための動線を作る 2. 保存前処理( Preprocessing)の活用 ※ほぼ必要 ○ LLDの収集結果が、指定の JSON構文になるよう整形する 3. ディスカバリルールを継承したプロトタイプの作成 ○ 自動登録したいアイテム・トリガー等を指定する 17
“ やってみる 返ってくる値 18
ディスカバリルールの作成 ● ● 大元のディスカバリルールは、通例のアイテムと同じもの ○ サンプルは HTTPエージェントで作成 ディスカバリルールとして、監視データが取れることを確認する ディスカバリルールとなる アイテムを作成する (通例のアイテムと同じ要領) アイテムのテストから 値が取れることを確認する 19
保存前処理の活用 ● そのままでは LLDで扱えないので、保存前処理を使って LLDの JSON構文にする ○ デモでは JavaScriptで整形(一番融通が利く手段) 20
保存前処理の活用 保存前処理のテストで LLDのJSON構文になる ことを確認する 21
ディスカバリルールを継承した プロトタイプの作成 ● LLDを継承するアイテムのプロトタイプを設定する ○ 可変になる値は、 LLDマクロを設定する ■ サンプルアプリでは、保存前処理の JSONPathでもLLDマクロを使用 可変となる値は LLDマクロを設定する 22
LLDの作成結果 ● 対象ホストのディスカバリルールから監視データ取得すると、 ● 個数と値を Zabbixが判断して、アイテムを作成してくれる LLDのJSONをもとに、アイテムが自動で作成される {{“{#SERVICE_NAME}”:”service1”}. {“{#SERVICE_NAME}”:”service2”}, {“{#SERVICE_NAME}”:”service3”}, {“{#SERVICE_NAME}”:”service4”}, {“{#SERVICE_NAME}”:”service5”}} 23
デモまとめ ● JavaScriptで無理やり整形すれば、 LLDのJSON構文にできる ● LLDは、Zabbixの基本を知ってるなら扱えるはず ● GUIでのテストもできる 24
まとめ ローレベル・ディスカバリ、はじめは理解できませんでした - LLDのJSON構文を知ることで、理解が加速しました LLDのメリット - ホスト個別で “値”と“個数”を探しに行かないと不明 なケース - テンプレがシンプルに - 取得不可を削減できる LLDのデメリット - 意識しないとヒストリ収集しすぎて Zabbixがパンクするリスク - LLDフィルタも活用する 25
EOF 26
宣伝 プレイベント 4/22(火) #CNDS2025 沖縄開催! 一般公募まであと少し! 実行委員やってます 本イベント 5/23(金) 27