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.

CONBU API の開発

6,118 views

Published on

カンファレンスネットワークを提供する CONBU が外部向けに情報を公開するための CONBU API を開発したことについての資料

Published in: Engineering
  • Be the first to comment

CONBU API の開発

  1. 1. CONBU API の開発 2015-08-22 @ YAPC::Asia 2015 TAKANO Mitsuhiro a.k.a. @takano32
  2. 2. お前、誰よ @takano32 高野光弘 / TAKANO Mitsuhiro Ruby committer ??? 最近コミットしてないけどいまもコミット権あります… 日本UNIXユーザ会 理事 CONBU Core Team Member 今日の帽子はこれ ↑
  3. 3. 興味分野とか 半田ごてとかマイコンは友だち ネイティブアプリケーション楽しい バイトで Windows 向けビデオチャットとか作成してた OS とか 仮想化機構 前職で仮想化機構を作ってた 言語処理系オタク 分散オブジェクトの研究 電子商取引サイトで小遣い稼ぎ Javaェ・・・ 大規模インフラ管理 国内大手サービスプロバイダ
  4. 4. + NETWORK BGP オペレーションとか 侵入検知システムとか
  5. 5. CONBU での立ち位置は ネットワークもよくわかる プログラミングおじさん
  6. 6. WEB系のみなさん こんにちは!!! ネットワークの話をします
  7. 7. うっそっぴょん∼ ここからは HTTP REST API の話です みんな大好き Web 2.0 (^−^)
  8. 8. CONBU API の紹介
  9. 9. CONBU API の発端 YAPC スタッフとネットワークの話になった ネットワークの情報提供できたら面白いよね CONBU でも API があれば面白いかもと話題になる カンファレンスのネットワーク利用者が自分の利用し ているネットワークについての状況を調べることがで きるアプリケーション作ったりとかできるんじゃね?
  10. 10. CONBU API の要求仕様
  11. 11. 接続数公開すればよくね? すみませんすみませんすみません まだ他の情報については整理できてません \(^O^)/
  12. 12. CONBU API V0.9 7月末の土日で作成 8月2日にクラブイベントで結合テスト YAPC に向けてのテストフライト いろいろ問題が起こった・・・ 後ほど解説
  13. 13. CONBU API の基本構成 API サーバ HTTP リクエストに応答してネットワーク情報を返却 返却する情報の生成は既存の死活監視ソフトウェア 死活監視ソフトウェア Zabbix が JSON-RPC で接続数を取得できたのでそれを利用
  14. 14. CONBU API の基本構成 ZabbixAPI Serverthe Internet JSON-RPC で情報取得 JSON 形式でデータ提供
  15. 15. CONBU API の 機能仕様
  16. 16. 無線LANアクセスポイントの 接続数が取得できる
  17. 17. 続きは WEB で http://conbu.net/doc/conbu-api/
 読めば分かるし、説明するの面倒くせぇ
  18. 18. 発生したトラブルと対応 Web系のみんなは深夜にアラートが鳴って 電話に起こされるのとか好きでしょう!!!
  19. 19. CONBU API 初期構成 ZabbixAPI Serverthe Internet リクエストごとに叩きまくり!!! HTTP JSON-RPC
  20. 20. 富豪的!ナウい!!! 趣味プログラミングの醍醐味
  21. 21. 実装イメージ
  22. 22. API は死んだ。何故だ! 坊やだからさ
  23. 23. 成果物イメージ
  24. 24. 頓死例 突然 JSON-RPC が 502
  25. 25. [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
  26. 26. 犯人はこいつか?
  27. 27. 原因はすぐに判明 PHP の memory_limit が低すぎる /etc/php.ini を書き換えてみる php -i や <? phpinfo(); でサイズアップ確認
  28. 28. のトラブル
  29. 29. ZABBIX のメモリだけ 増えない!!!
  30. 30. パッケージの設定だった
  31. 31. パッケージで入る ZABBIXの設定 狂ってるだろ!!!
  32. 32. 共犯者はこいつ
  33. 33. まだ続きます
  34. 34. ZABBIX API が挙動不審 グラフに対応したデータを取れる グラフにプロットされているのはアイテム グラフを指定してアイテムを取得できるはずが… なぜかすべてのグラフのアイテムを取得してくる
  35. 35. ZABBIX がいつの間にか ガッツリとメモリを ってる!!!
  36. 36. 油断してるとやんちゃする
  37. 37. 普通の男の子に戻りたい
  38. 38. システム構成を改善 ガンガン Zabbix の API を叩くのを止めよう 富豪的にヤリ過ぎた
  39. 39. CONBU API V1.0 の構成 ZabbixAPI Serverthe Internet API Daemon 定期的に取得 データを分散オブジェクトにキャッシュ 分散オブジェクトを共有 バックエンドの負荷が リクエスト数に依存しない
  40. 40. 結果
  41. 41. 驚くほど安定して 動くようになってしまった 特に話すことなくなったのでコードでも読むとよい https://github.com/conbu/conbu-api-server https://github.com/conbu/conbu-api-daemon
  42. 42. 活用事例
  43. 43. ヒートマップ http://ikosin.github.io/conbu-api-server/
  44. 44. ヒートマップ GitHub Pages でホスト API では Access Control Allow Origin ヘッダで他のド メインからの参照を許可した状態の JSON がきます Canvas で描画 はい
  45. 45. ヒートマップ
  46. 46. まとめ CONBU で提供しているネットワークについて、部屋 ごとなどの単位で接続数を提供できるようにした PHP は読みたくない PHP は読みたくない
  47. 47. 今後の展望 夢ってやつですよ 言うだけなら何でも言える
  48. 48. 今後の展望 あのセッションに興味があるひとはこのセッションにも興味がありますリコメンド MACアドレスを識別子に使ってセッションごとに接続の遷移をトレースすればで きそう 休憩室はこちらです機能みたいなの 空いているセッションなら座るくらいは許してくれるでしょ CONBU API Daemon の複数バックエンド対応 Zabbix 以外からも集約した情報があればさらに API で提供できる情報が増える
  49. 49. 最後に API を使って何か作ったりすると CONBU によるネットワークの品質が 上がったりするかもしれないです
  50. 50. ご静聴ありがとうございました May the Internet be with you

×