Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
LLD(ローレベルディスカバリ)を弄り倒せ
zabbix_senderを併用してらくらく可視化
山根 健志/ Takeshi YAMANE/ふりっぱぁ
@fripper1214
fripper1214@gmail.com
第6回 ZABBIX-...
zabbix_sender の動作って‥
監視対象側からサーバに向けて、任意の値を投げ込める!
zabbix_agentd 入れなくてもいけるし便利~♪
しかも‥
• 任意のホストのアイテムに対して情報を叩き込める!
対象のホスト自身からでなく...
LLD によるアイテム登録
普通なら‥
ZabbixエージェントとかZabbixエージェント(アクティブ)で、ディスカバリルー
ルの項目を登録。
そんでもって、アイテムやトリガーのプロトタイプとかを指定して、任意の項目
を作る‥といった感じです...
LLD でやりとりされる値
標準の‘vfs.fs.discovery’で見てみると、単なるJSON形式
[data] という項目の値として、ディスカバリ結果が配列っぽく書
かれているだけ‥
スクリプト等で適当な項目リストを作って、
送ってあげれ...
LLDに値を叩き込む!-今回の目的-
目的:日次処理での http アクセスログ内容の集計
特定 cgi でファイルのアップ・ダウン要求してるログ行を
アクセス元ユーザ、get/put の種別で集計した結果が欲しい
最終的に、アイテムを以下のカ...
集計してから、どうやってZabbixに登録する?
• どうやって回数を集計しよう‥?
ログファイルをgrepして、awkに掛ければ、
ユーザ別・get/put目的別の集計は簡単だよね‥ →シェル芸!
• 日次処理だしなぁ‥
Zabbixのアイテ...
cron での処理内容 -ディスカバリ部分-
• 前日のログを舐めて、ユーザ別・項目別に集計
AAA 20 0
BBB 120 337
CCC 0 78
• ruby で、ユーザIDのリストに相当する JSON を生成
senderでうまく扱う...
cron での処理内容 -項目値の登録部分-
• sleepで少し待つ!(2分間)
待たなくても大丈夫かもしれない?
でも zabbix_server が重くても大丈夫かどうか心配 →とりあえず待っちゃえ
• 集計結果のリストから、sender...
サーバでの設定は‥?
ディスカバリルールと、アイテムのプロトタイプはこんな感じ‥
• ディスカバリルール
• アイテムのプロトタイプ
登録された値は‥?
• 最新の値を見てみると‥?
タイムスタンプ付きで送っているから、
その日の0時のデータになってる!
• グラフも作ってみた~
毎日の変化・傾向が、放っといても可視化できて便利!
結論!
• LLD(ローレベルディスカバリ)は神!
• zabbix_sender は神!
Zabbix って、監視・警告だけじゃないよ!
こういった「可視化」だってできるんだから!
ちょ‥ワシが神様‥ >
Upcoming SlideShare
Loading in …5
×

LLD(ローレベルディスカバリ)を弄り倒せ、zabbix_senderを併用してらくらく可視化

9,363 views

Published on

LLD(ローレベルディスカバリ)を弄り倒せ
zabbix_senderを併用してらくらく可視化
第6回 ZABBIX-JP 勉強会 (2014/04/12) にて、LT発表させていただいたスライドです

Published in: Technology
  • Be the first to comment

LLD(ローレベルディスカバリ)を弄り倒せ、zabbix_senderを併用してらくらく可視化

  1. 1. LLD(ローレベルディスカバリ)を弄り倒せ zabbix_senderを併用してらくらく可視化 山根 健志/ Takeshi YAMANE/ふりっぱぁ @fripper1214 fripper1214@gmail.com 第6回 ZABBIX-JP勉強会 2014/04/12 Tokyo
  2. 2. zabbix_sender の動作って‥ 監視対象側からサーバに向けて、任意の値を投げ込める! zabbix_agentd 入れなくてもいけるし便利~♪ しかも‥ • 任意のホストのアイテムに対して情報を叩き込める! 対象のホスト自身からでなくてもOK! • アイテムの型 (整数・小数・文字列) どれでもOK! sender に渡せば、結構なんでも登録できちゃいます • zabbix_proxy 経由でも使える! sender の送信先を zabbix_server 宛じゃなくて zabbix_proxy 宛にすればOK! • 複数の値をまとめて登録できる! 引数にファイルを渡す or 標準入力からリダイレクトで読ませる • 時刻情報まで捏造できる! 日次集計とか、その日の0時指定にできてグラフもキレイ!
  3. 3. LLD によるアイテム登録 普通なら‥ ZabbixエージェントとかZabbixエージェント(アクティブ)で、ディスカバリルー ルの項目を登録。 そんでもって、アイテムやトリガーのプロトタイプとかを指定して、任意の項目 を作る‥といった感じですよね? あれ?Zabbixエージェント(アクティブ)って‥ agentd が定期的にチェックして、server へ値を push で送信するんじゃなかったっけ? 値を送信って‥ sender でも同じなんじゃないの?
  4. 4. LLD でやりとりされる値 標準の‘vfs.fs.discovery’で見てみると、単なるJSON形式 [data] という項目の値として、ディスカバリ結果が配列っぽく書 かれているだけ‥ スクリプト等で適当な項目リストを作って、 送ってあげればイケそうな感じ‥‥?
  5. 5. LLDに値を叩き込む!-今回の目的- 目的:日次処理での http アクセスログ内容の集計 特定 cgi でファイルのアップ・ダウン要求してるログ行を アクセス元ユーザ、get/put の種別で集計した結果が欲しい 最終的に、アイテムを以下のカタチで作りたい‥ • 「アクセス元ユーザ」別 • 「getの回数」「putの回数」 - 整数値 でも‥いつユーザ増やすかわかんないし‥ →やっぱりLLDでアイテム作るべきだよね!
  6. 6. 集計してから、どうやってZabbixに登録する? • どうやって回数を集計しよう‥? ログファイルをgrepして、awkに掛ければ、 ユーザ別・get/put目的別の集計は簡単だよね‥ →シェル芸! • 日次処理だしなぁ‥ Zabbixのアイテムだと間隔は指定できるけど、 実行タイミングは制御できない‥ → cron • ログが大きいと時間掛かるなぁ‥ agentdだとタイムアウトが怖い‥ → zabbix_sender • ディスカバリにするとなると‥ ディスカバリルールのためにログを舐めて項目作らせて、 結果値を登録するために、また舐めるの? →2回も舐めたくない! LLDルールの結果を sender で送って、sleep で少し待ってから、 同じ cron 処理の中で結果値も sender で送れば1度で済むんじゃ?
  7. 7. cron での処理内容 -ディスカバリ部分- • 前日のログを舐めて、ユーザ別・項目別に集計 AAA 20 0 BBB 120 337 CCC 0 78 • ruby で、ユーザIDのリストに相当する JSON を生成 senderでうまく扱うために、必ず1行の JSON データにする!改行含まないこと! {“data”:[{“{#USRID}”:”AAA”}, {“{#USRID}”:”BBB”}, {“{#USRID}”:”CCC”}]} • sender で、ディスカバリルールの項目値として投げ込む 投げ込む際には、標準入力に値を渡す。 ついでに –t オプションで昨日の0時のデータにしておく‥(捏造じゃないよ!) ファイル or 標準入力だと、1行あたり1データと認識されるから、複雑なJSON値でもOK! HOSTNAME user.log.count.discovery 1397051539 {“data”:[{“{#USRID‥ } • ディスカバリルールの設定は [Zabbixトラッパー]に! 普通にアイテム値を投げ込む時と同じく、trapperタイプにしておけばOK!
  8. 8. cron での処理内容 -項目値の登録部分- • sleepで少し待つ!(2分間) 待たなくても大丈夫かもしれない? でも zabbix_server が重くても大丈夫かどうか心配 →とりあえず待っちゃえ • 集計結果のリストから、sender へ渡す文字列を作る やっぱり標準入力を使う。複数項目の値を複数行でまとめて送信! もちろん、値のタイムスタンプは昨日の0時! HOSTNAME user.log.count.get[AAA] 1397051539 20 HOSTNAME user.log.count.put[AAA] 1397051539 0 HOSTNAME user.log.count.get[BBB] 1397051539 120 ・・・(略)・・・ • ど~んと値を送信‥ 100ユーザなら200項目分‥ sender を1回実行すれば複数項目一括登録OKなんてチョー便利! • アイテムのプロトタイプも、やっぱり[Zabbixトラッパー] sender を使う場合のお約束ですね!
  9. 9. サーバでの設定は‥? ディスカバリルールと、アイテムのプロトタイプはこんな感じ‥ • ディスカバリルール • アイテムのプロトタイプ
  10. 10. 登録された値は‥? • 最新の値を見てみると‥? タイムスタンプ付きで送っているから、 その日の0時のデータになってる! • グラフも作ってみた~ 毎日の変化・傾向が、放っといても可視化できて便利!
  11. 11. 結論! • LLD(ローレベルディスカバリ)は神! • zabbix_sender は神! Zabbix って、監視・警告だけじゃないよ! こういった「可視化」だってできるんだから! ちょ‥ワシが神様‥ >

×