SlideShare a Scribd company logo
CONBU API の開発
2015-08-22
@ YAPC::Asia 2015
TAKANO Mitsuhiro a.k.a. @takano32
お前、誰よ
@takano32
高野光弘 / TAKANO Mitsuhiro
Ruby committer ???
最近コミットしてないけどいまもコミット権あります…
日本UNIXユーザ会 理事
CONBU Core Team Member
今日の帽子はこれ ↑
興味分野とか
半田ごてとかマイコンは友だち
ネイティブアプリケーション楽しい
バイトで Windows 向けビデオチャットとか作成してた
OS とか 仮想化機構
前職で仮想化機構を作ってた
言語処理系オタク
分散オブジェクトの研究
電子商取引サイトで小遣い稼ぎ
Javaェ・・・
大規模インフラ管理
国内大手サービスプロバイダ
+ NETWORK
BGP オペレーションとか
侵入検知システムとか
CONBU での立ち位置は
ネットワークもよくわかる
プログラミングおじさん
WEB系のみなさん
こんにちは!!!
ネットワークの話をします
CONBU API の開発
うっそっぴょん∼
ここからは
HTTP REST API の話です
みんな大好き Web 2.0 (^−^)
CONBU API の開発
CONBU API の紹介
CONBU API の発端
YAPC スタッフとネットワークの話になった
ネットワークの情報提供できたら面白いよね
CONBU でも API があれば面白いかもと話題になる
カンファレンスのネットワーク利用者が自分の利用し
ているネットワークについての状況を調べることがで
きるアプリケーション作ったりとかできるんじゃね?
CONBU API の要求仕様
接続数公開すればよくね?
すみませんすみませんすみません
まだ他の情報については整理できてません \(^O^)/
CONBU API V0.9
7月��の土日で作成
8月2日にクラブイベントで結合テスト
YAPC に向けてのテストフライト
いろいろ問題が起こった・・・
後ほど解説
CONBU API の基本構成
API サーバ
HTTP リクエストに応答してネットワーク情報を返却
返却する情報の生成は既存の死活監視ソフトウェア
死活監視ソフトウェア
Zabbix が JSON-RPC で接続数を取得できたのでそれを利用
CONBU API の基本構成
ZabbixAPI Serverthe Internet
JSON-RPC で情報取得
JSON 形式でデータ提供
CONBU API の
機能仕様
無線LANアクセスポイントの
接続数が取得できる
続きは WEB で
http://conbu.net/doc/conbu-api/

読めば分かるし、説明するの面倒くせぇ
発生したトラブルと対応
Web系のみんなは深夜にアラートが鳴って
電話に起こされるのとか好きでしょう!!!
CONBU API の開発
CONBU API 初期構成
ZabbixAPI Serverthe Internet
リクエストごとに叩きまくり!!!
HTTP
JSON-RPC
富豪的!ナウい!!!
趣味プログラミングの醍醐味
実装イメージ
API は死んだ。何故だ!
坊やだからさ
成果物イメージ
頓死例
突然 JSON-RPC が 502
[Sun Aug 02 14:35:17 2015] [error] [client 10.255.254.101]
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
(tried to allocate 7899804 bytes)
in /usr/share/zabbix/include/classes/json/CJson.php on line 142
犯人はこいつか?
原因はすぐに判明
PHP の memory_limit が低すぎる
/etc/php.ini を書き換えてみる
php -i や <? phpinfo(); でサイズアップ確認
のトラブル
ZABBIX のメモリだけ
増えない!!!
パッケージの設定だった
パッケージで入る
ZABBIXの設定
狂って��だろ!!!
共犯者はこいつ
まだ続きます
ZABBIX API が挙動不審
グラフに対応したデータを取れる
グラフにプロットされているのはアイテム
グラフを指定してアイテムを取得できるはずが…
なぜかすべてのグラフのアイテムを取得してくる
ZABBIX がいつの間にか
ガッツリとメモリを ってる!!!
油断してるとやんちゃする
普通の男の子に戻りたい
システム構成を改善
ガンガン Zabbix の API を叩くのを止めよう
富豪的にヤリ過ぎた
CONBU API V1.0 の構成
ZabbixAPI Serverthe Internet
API Daemon
定期的に取得
データを分散オブジェクトにキャッシュ
分散オブジェクトを共有
バックエンドの負荷が
リクエスト数に依存しない
結果
驚くほど安定して
動くようになってしまった
特に話すことなくなったのでコードでも読むとよい
https://github.com/conbu/conbu-api-server
https://github.com/conbu/conbu-api-daemon
CONBU API の開発
活用事例
ヒートマップ
http://ikosin.github.io/conbu-api-server/
ヒートマップ
GitHub Pages でホスト
API では Access Control Allow Origin ヘッダで他のド
メインからの参照を許可した状態の JSON がきます
Canvas で描画
はい
ヒートマップ
まとめ
CONBU で提供しているネットワークについて、部屋
ごとなどの単位で接続数を提供できるようにした
PHP は読みたくない
PHP は読みたくない
今後の展望
夢ってやつですよ
言うだけなら何でも言える
今後の展望
あのセッションに興味があるひとはこのセッションにも興味がありますリコメンド
MACアドレスを識別子に使ってセッションごとに接続の遷移をトレースすればで
きそう
休憩室はこちらです機能みたいなの
空いているセッションなら座るくらいは許してくれるでしょ
CONBU API Daemon の複数バックエンド対応
Zabbix 以外からも集約した情報があればさらに API で提供できる情報が増える
最後に
API を使って何か作ったりすると
CONBU によるネットワークの品質が
上がったりするかもしれないです
ご静聴ありがとうございました
May the Internet be with you

More Related Content

CONBU API の開発