Download - Tech circle#13 zabbix3.0ハンズオン lld
Tech-Circle #13
Zabbix Hands-on
Hello!I am Daisuke IKEDATIS Inc.OSS Promotion office
You can find me at:@ike_dai
3.0でのLLD機能強化を体験
2.LLDを使った
自動化ハンズオン
Lesson2のゴール
LLDのトリガー設定を
効果的に
新しいLLDディスカバリ
ルールを試す
LLDでCloudWatch
自動連携
解説に入る前に
事前に配布しているURLにアクセス
URL: http://IP:Port/zabbix
Username: AdminPassword: techcircle13
Step0. Zabbix管理画面にアクセス
[設定]→[ホスト] ホストの追加からホスト登録
ホスト名: AWS Account テンプレート: Template AWS 新規グループ作成: AWS マクロ:
Step1. ホスト新規登録
Macro Value
{$KEY}
{$SECRET}
LLD (Low Level Discovery) とは?
監視対象のサーバ内の情報を探索して、
アイテム・トリガー・グラフ・ホスト等を自動登録する機能
Use Case 1サーバ内のデバイス情報を探索
監視アイテムを自動登録
Use Case 2VMwareのHV,VM一覧をvSphere APIで取得
ホストを自動登録
LLDのプロセスフロー
ディスカバリルールに基づく探索
JSON形式で値取得
{#・・・}形式のマクロに登録
プロトタイプ設定を元に自動登録
1
2
3
4
LLDのプロセスフロー
JSON形式で値取得
{#・・・}形式のマクロに登録
プロトタイプ設定を元に自動登録
1
2
3
4
ディスカバリルールに基づく探索
LLDのプロセスフロー
ディスカバリルールに基づく探索
JSON形式で値取得
{#・・・}形式のマクロに登録
プロトタイプ設定を元に自動登録
1
2
3
4
{
"data":[
{
"{#FSNAME}":"\/",
"{#FSTYPE}":"ext3"},
{
"{#FSNAME}":"\/data",
"{#FSTYPE}":"ext3"},
・・・省略
}
LLDのプロセスフロー
ディスカバリルールに基づく探索
JSON形式で値取得
{#・・・}形式のマクロに登録
プロトタイプ設定を元に自動登録
1
2
3
4
マクロ名 データ1 データ2 データ3
{#FSNAME} / /data /boot
{#FSTYPE} ext3 ext3 ext3
LLDのプロセスフロー
ディスカバリルールに基づく探索
JSON形式で値取得
{#・・・}形式のマクロに登録
プロトタイプ設定を元に自動登録
1
2
3
4
【応用】LLDのカスタマイズ
{"data":[ { "{#INSTANCE.NAME}":"teacher", "{#INSTANCE.TYPE}":"t2.small", "{#INSTANCE.ID}":"i-xxxxxxxxx", "{#INSTANCE.PRIVATE.ADDR}":"172.xx.xx.xx" }, { ・・・ } ]}
決まったJSONフォーマットで応答を返せば何にでも応用可能
2.2 3.0標準サポートのディスカバリルール
● net.if.discovery○ NICのディスカバリ
● vfs.fs.discovery○ ファイルシステムのディスカバリ
● snmp.discovery○ SNMP OIDのディスカバリ
● vmware.*.discovery○ VMwareのディスカバリ
標準サポートのディスカバリルール
● net.if.discovery○ NICのディスカバリ
● vfs.fs.discovery○ ファイルシステムのディスカバリ
● discovery○ SNMP OIDのディスカバリ
● vmware.*.discovery○ VMwareのディスカバリ
● system.cpu.discovery○ CPUのディスカバリ
● db.odbc.discovery○ SQL実行によるディスカバリ
● service.discovery○ Windowsサービスディスカバリ
2.2 3.0標準サポートのディスカバリルール
● net.if.discovery○ NICのディスカバリ
● vfs.fs.discovery○ ファイルシステムのディスカバリ
● discovery○ SNMP OIDのディスカバリ
● vmware.*.discovery○ VMwareのディスカバリ
● system.cpu.discovery○ CPUのディスカバリ
● db.odbc.discovery○ SQL実行によるディスカバリ
● service.discovery○ Windowsサービスディスカバリ
標準サポートのディスカバリルール
● net.if.discovery○ NICのディスカバリ
● vfs.fs.discovery○ ファイルシステムのディスカバリ
● snmp.discovery○ SNMP OIDのディスカバリ
● vmware.*.discovery○ VMwareのディスカバリ
2.2 3.0マクロが展開できる場所
● アイテム・トリガー等の名前● アイテムキー● トリガー条件式● SNMP OID● 等
マクロが展開できる場所
● アイテム・トリガー等の名前● アイテムキー● トリガー条件式● SNMP OID● アイテムの単位● アイテムのアプリケーション● IPMIセンサー名● トリガーのURL● 等
2.2 3.0マクロが展開できる場所
● アイテム・トリガー等の名前● アイテムキー● トリガー条件式● SNMP OID● アイテムの単位● アイテムのアプリケーション● IPMIセンサー名● トリガーのURL● 等
マクロが展開できる場所
● アイテム・トリガー等の名前● アイテムキー● トリガー条件式● SNMP OID● 等
Great!
自動化の幅がますます広がる!
Hands-on environment
AWS EC2 AWS EC2
ZabbixContainer
ZabbixContainer
ZabbixContainerZabbix
Container
ZabbixContainer
ZabbixContainer
ZabbixContainerZabbix
Container
Zabbix Server
Template AWSTemplate AWS EC2
AWS連携用コマンドzaws※1
AWS API
※1: https://github.com/ike-dai/zaws
AWS EC2Windows
AmazonECS
EC2_instance01
・・・・・
EC2_instance05 EC2_windows
[設定]→[ホスト]ホストが自動追加された?
[監視データ]→[最新データ]監視できてる? ▶単位、アプリケーションに注目
正しくマクロ展開されている?
Step2. 自動登録データの確認
Step2. 自動登録データの確認
講師がカスタムメトリクスを1つ追加運用管理者(あなた)は何もしなくてもOK
[監視データ]→[最新データ] フィルタのホストを「EC2_instance01」に設定し確認 ホスト: EC2_instance01 アプリケーション: TechCircle アイテム名: TechCircleCustom
Step3. LLDアイテムの自動追加体験
監視処理のスケジュール実行
プレフィックス 意味 概要 指定可能な値
md 日付 月の何日に実行するか 1-31
wd 曜日 何曜日に実行するか 1-7
h 時間 何時に実行するか 0-23
m 分 何分に実行するか 0-59
s 秒 何秒に実行するか 0-59
日、曜日、時、分、秒を指定して特定のタイミングで監視処理実行が可能に
※例: 毎月17日 16時 10分 0~59秒の間は5秒毎に監視を実行
「設定」→「ホスト」から自動登録されたホスト「EC2_instance01」のアイテム
「cloudwatch stats monitor (EC2)」 の定期実行設定を実施
「h20mxxs0」 ※現在時刻のちょっと後の時間を指定
Step4. スケジュール監視実行設定
自動登録されたホストのいずれか1つ
アイテム: 「cloudwatch static monitor (EC2)」 の定期実行設定を実施
「h20mxxs0」 ※現在時刻のちょっと後の時間を指定保存し、少し待つ
Step4. スケジュール監視実行設定
[監視データ]→[最新データ]フィルタのホストを「EC2_instance01」に設定し確認
最下部にある「cloudwatch stats monitor (EC2)」の
監視結果のリストを表示指定した時刻に監視されているか確認
Step5. スケジュール実行結果確認
Step5. スケジュール実行結果確認
タイムスタンプが指定した時間辺りで登録されていればOK
LLDオブジェクト削除時の挙動
ちなみに、ディスカバリされたものが削除された場合は・・・
マクロコンテキスト[Advanced 1]
user macro定義
{$FS_THRESHOLD} => 70{$FS_THRESHOLD:/data} => 90
trigger prototype定義
{host:vfs.fs.size[{#FSNAME},pused].last()}> {$FS_THRESHOLD:”{#FSNAME}”}
実際のトリガー{host:vfs.fs.size[/,pused].last()}>70{host:vfs.fs.size[/data,pused].last()}>90
ユーザマクロが{$MACRO:Context}という形式の指定が可能に
Step6. マクロコンテキストの設定[Advanced 1]
1. 「Template AWS EC2」に以下のトリガープロトタイプを設定
2. ホスト「AWS account」のマクロに以下を登録
[ディスカバリルール] CloudWatch discovery (EC2)
[トリガープロトタイプ]
名前: test trigger ({#METRIC.NAME})
条件式:
{Template AWS EC2:
cloudwatch.metric[{#METRIC.NAME}].last()}>{$LIMIT:"{#METRIC.NAME}"}
Macro Value
{$LIMIT} 0
{$LIMIT:”CPUUtilization”} 5
Step6. マクロコンテキストの値確認[Advanced 1]
[監視データ]→[最新データ]からEC2_instance01の監視結果一覧を表示
「CPUUtilization monitoring」のグラフを表示
WindowsサービスのLLD[Advanced 2]
{ "data": [ ・・・略
{ "{#SERVICE.DESCRIPTION}": "Provides system monitoring", "{#SERVICE.DISPLAYNAME}": "Zabbix Agent", "{#SERVICE.NAME}": "Zabbix Agent", "{#SERVICE.PATH}": ""C:\Program Files\Zabbix Agent\zabbix_agentd.exe" --config "C:\Program Files\Zabbix Agent\zabbix_agentd.conf"", "{#SERVICE.STARTUPNAME}": "automatic", "{#SERVICE.STARTUP}": 0, "{#SERVICE.STATENAME}": "stopped", "{#SERVICE.STATE}": 6, "{#SERVICE.USER}": "LocalSystem" } ]}
アイテムキー: service.discovery
Step7. WindowsサービスLLD設定 1/3[Advanced 2]
1.[設定]→[ホスト]からホスト登録 ホスト名: windows-server ホストグループ: AWS エージェントインタフェース:
Step7. WindowsサービスLLD設定 2/3[Advanced 2]
2.ディスカバリルール登録 名前: Windows service discovery タイプ: Zabbixエージェント キー: service.discovery
Step7. WindowsサービスLLD設定 3/3[Advanced 2]
3.アイテムプロトタイプ登録 名前: Windows service info [{#SERVICE.NAME}] タイプ: Zabbixエージェント キー: service.info[{#SERVICE.NAME}] 値のマッピング: Windows service state
Step7. WindowsサービスLLD結果確認[Advanced 2]
[監視データ]→[最新データ]で windows-serverの監視結果一覧を確認
Conclusion
Zabbix3.0は監視運用を
更にインテリジェントに自動化
Thanks!Any questions?Please Contact us:
[Tech-Circle Cafe] https://www.facebook.com/groups/techcircle/ [Connpass] http://techcircle.connpass.com/