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

More Related Content

What's hot

MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことMySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことyoku0825
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発Yoshitaka HARA
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)Uptime Technologies LLC (JP)
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!歩 柴田
 
Zabbixで学ぶ統計解析入門
Zabbixで学ぶ統計解析入門Zabbixで学ぶ統計解析入門
Zabbixで学ぶ統計解析入門Takeo Noda
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマットAkihiro Suda
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具yoku0825
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやyoku0825
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことyoku0825
 

What's hot (20)

MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことMySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいこと
 
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!
 
Zabbixで学ぶ統計解析入門
Zabbixで学ぶ統計解析入門Zabbixで学ぶ統計解析入門
Zabbixで学ぶ統計解析入門
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 

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