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を併用してらくらく可視化

3,056

Published on

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

Published in: Technology
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,056
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
16
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

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 って、監視・警告だけじゃないよ! こういった「可視化」だってできるんだから! ちょ‥ワシが神様‥ >
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×