Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSC2019-TokyoFall_OpenWrt-and-Monitoring

musashino205
November 24, 2019

 OSC2019-TokyoFall_OpenWrt-and-Monitoring

musashino205

November 24, 2019
Tweet

More Decks by musashino205

Other Decks in Technology

Transcript

  1.  HN: 武蔵野 / 大破 ◦ musashino_205 ◦ musashino205 @mstdn.maud.io

    ◦ 詳細はWebで  https://大破.net/  就活に向けて色々準備中 ◦ 生活習慣とか…
  2. BusyBox v1.31.0 () built-in shell (ash) _______ ________ __ |

    |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt SNAPSHOT, r0+11395-49a1216356 ----------------------------------------------------- root@OpenWrt:~#
  3.  開発者視点: ◦ 組込デバイス向け開発環境  Cross-Compile用toolchain (gcc, musl, ...) のダウンロード、

    コンパイル、構築  Kernelのコンパイル  Rootfs (squashfs, ext4, その他)作成  デバイス毎に適したファームウェア生成  etc...  デバイスを選択後、 “make” 一発で全部やってくれる  SoCベンダ等のSDKでOpenWrtを利用したものがチラホラ
  4.  原則としてLTSを使用 ◦ 現在使用されているのは3種(2019/11/21現在)  include/kernel-version.mk  4.9.202  4.14.154

     4.19.84 ◦ 4.19の次は5.4になるかも  [OpenWrt-Devel] v5.4 as next kernel http://lists.infradead.org/pipermail/openwrt-devel/2019-October/019610.html
  5.  https://openwrt.org/releases/  RCリリース ◦ OpenWrt 19.07シリーズ: 19.07.0-rc1  Kernel,

    toolchain, 基幹パッケージなど全体的なアップデート  新target: ath79  ar71xxを置き換えるtarget (Atheros/Qualcomm Atheros SoC)  遅れに遅れたがようやくRCが出た  最新リリース ◦ OpenWrt 18.06シリーズ: 18.06.5  18.06.4までの脆弱性修正が中心(LuCI, musl, hostapdその他)
  6.  最近サポートを投げ込んだ機種 (OSC 2019 Tokyo/Spring以降) ◦ I-O DATA  WN-AC733GR3

     WN-AC1600DGR3 (DGR2のサポートと統合)  WNPR2600G ◦ NEC  WG1200CR  その他既存サポートの修正など
  7.  サポート作業中 ◦ BUFFALO  WSR-2533DHPL  WSR-2533DHP2 ◦ ELECOM

     WRC-733GHBK  WRC-1167GHBK2-I  WRC-1167FS ◦ I-O DATA  WN-AX1167GR2 (PRオープン済)  WN-DX1167R (PRオープン済)
  8.  ジャンク L2インテリジェントスイッチ入手 (16+1port) ◦ Abaniact AML2-17GP  ¥1,500 +

    税  パスワード掛かったまま  Resetボタンはハードウェアリセット(電源的なリセット)のみ  筐体開けてシリアルコンソール (UART) から全て初期化できた  https://memo205.wordpress.com/2019/10/17/aml2-17gp/
  9.  公式エージェント: mackerel-agent ◦ Go言語  公式で配布されているバイナリは以下の種類のみ https://github.com/mackerelio/mackerel-agent/releases アーキテクチャ 備考

    386 amd64 arm • WZR-900DHP (BCM47801) でも動作 arm64 mips • big-endian • Softfloatサポート無し (FPU非搭載環境で動作しない)
  10.  公式エージェントはOpenWrtのパッケージ化済 ◦ https://github.com/taiha/taiha-pkgs  mackerel ◦ ビルドターゲット(SoC, デバイス)のに合わせ、自動的にアー キテクチャやSoftfloat対応を選択

     ルータ向けMIPS SoCではFPUを搭載しない場合がほとんど  OpenWrtではデフォルトでKernelのFPUエミュレータが無効  有効化は自前でのビルドが必要で手間  GoのSoftfloatにより代替
  11.  公式エージェントはバイナリサイズが大きい  一般的なルータのFlash容量には厳しい場合も ◦ ルータのFlash容量(現行世代周辺) ◦ 注:  もちろんmackerel-agentは元々ルータでの動作は想定外

    ローエンド~ミドルレンジ ハイエンド~ 8 MB, 16 MBなど 32 MB, 128MB, それ以上 公式MIPSバイナリ 8.34 MB 不要なコード削除, デバッグ情報strip, upx圧縮 (-7) 2.22 MB (上に加えて -7の代わりに)--brute (最大圧縮) 1.54 MB
  12. 機種 Flash容量 • ETG3-R • WG1200CR • WRC-1167GHBK2-I 8 MB

    • WN-AX1167GR • WRC-1167GHBK2-S • WSR-1166DHPx 16 MB • VR500 • WG2600HP • WZR-HP-G450H 32 MB • WN-DX1167R • WZR-900DHP(2) 128 MB • WXR-2533DHP 4 MB(NOR) + 256 MB(NAND) (実使用は128MB)
  13.  シェルスクリプトでminimalなエージェントを作ってみよう ◦ Mackerel API ドキュメント (v0) - Mackerelヘルプ https://mackerel.io/ja/api-docs/

    ◦ メトリック仕様 - Mackerelヘルプ https://mackerel.io/ja/docs/entry/spec/metrics ◦ 一定間隔(60秒)毎にシステム情報を収集、JSON化してcurlに よってポスト ◦ システム情報の収集とJSON化はOpenWrtのシステムを利用  ubus (OpenWrt micro bus architecture)  jshn (JSON Shell Notation)
  14.  そこで ◦ シェルスクリプトとCのプログラムで役割分担  OpenWrtのライブラリ ◦ libubus(システム情報) ◦ libubox(データ処理ツール類)

    ◦ libblobmsg-json(JSON生成等) シェルスクリプト C • ネットワーク周り (Mackerel.ioへの投稿) • 等間隔での投稿 • システム情報取得 • データ算出 • 投稿用JSON生成
  15.  今後 ◦ プラグインのサポート ◦ そのうち全てCに押し込めるようにしたい  公式mackerel-agent (Go) の移植性は何だったのか

    ◦ 安定性や信頼性の向上 ◦ 他の複数ルータのシステム情報の収集/投稿を1台が行える ように?  SoCのパワーがある機種で他のルータのシステム情報も収集し JSON生成して投稿
  16.  OpenWrt公式サイト  https://openwrt.org/  OpenWrtリポジトリ  https://git.openwrt.org/?p=openwrt/openwrt.git  ミラー:

    https://github.com/openwrt/openwrt  TechInfoDepot Wiki ◦ ルータ, SoC情報等(旧WikiDevi代替)  http://en.techinfodepot.shoutwiki.com/  srchack.org (@srchack氏)  http://www.srchack.org/  DD-WRT OpenWrt 適材適所で使いたい人向け @ ウィキ ◦ 有志による情報まとめ  https://www57.atwiki.jp/ddwrt_openwrt/
  17.  OpenWrtビルド鯖 ◦ 大破.netのJenkinsにて使用  https://taiha.net/jenkins ◦ Core i5 3570Kの旧環境ではHDDで障害多発、耐えられず

    更改 ◦ 個人的に初のAMD環境  予算の関係が大きい 詳細: ◦ OpenWrt用ビルドサーバ更改 - 鉄PCブログ