Slide 1

Slide 1 text

IoT と監視
 600株式会社
 エンジニア 岡前直由


Slide 2

Slide 2 text

無人コンビニ600について
 ● 無人決済冷蔵庫
 ○ クレジットカードリーダー
 ○ 電子錠
 ○ RFID
 ○ Android タブレット
 ● 「半径50メートル商圏」の市場開拓を狙う
 ○ 20年で10兆円規模の市場に


Slide 3

Slide 3 text

自己紹介
 ● 経歴
 ○ 大阪大学大学院 (暗号理論・符号理論専攻)
 ○ 某SIer
 ○ 株式会社リブセンス
 ■ SRE, SWE, 機械学習エンジニア
 ○ 株式会社600
 ■ 2018/9~
 ■ 主に Product Quality Manager
 ● TypeScript, Kotlin


Slide 4

Slide 4 text

今日の内容
 「冷蔵庫を監視する」ってどういうこと?
 Prometheus を用いた筐体監視事例の紹介


Slide 5

Slide 5 text

● OSS のシステムモニタリングツール
 ● アーキテクチャがシンプルで運用が容易
 ● 機能充分なコンポーネント群と周辺ツール
 ○ 可視化
 ○ アラート


Slide 6

Slide 6 text

Prometheus のアーキテクチャ


Slide 7

Slide 7 text

Prometheus × IoT の2つのポイント
 1. サブコンポーネント Pushgateway の利用
 2. メトリクス設計


Slide 8

Slide 8 text

Prometheus は Pull 型
 監視対象自身がメトリクス取得用の HTTP エンドポイントを用意 し, Prometheus が定期的にスクレイピングする


Slide 9

Slide 9 text

Pushgateway
 Push 型の監視を実現するためのサブコンポーネント
 エッジデバイスへの Pull は難しい


Slide 10

Slide 10 text

メトリクス設計
 最も重要な部分
 ● サーバー監視など一般的な用途では, 基本的なメトリクスを組 み込んだ exporter が用意されている
 ● 「筐体が正常稼働」の条件をブレークダウン
 ○ Android アプリが起動している, タブレットのバッテリーが充 分である, クレジットカードが読み込める, …
 ○ Prometheusで表現できるメトリクス化


Slide 11

Slide 11 text

CounterとGauge
 Prometheusが用意しているメトリクスの型
 ● Counter
 ○ 単調増加する値
 ○ e.g. 合計リクエスト数, エラー数
 ● Gauge
 ○ 任意に上下する値
 ○ e.g. メモリ利用量, 温度


Slide 12

Slide 12 text

例1: バッテリー残量
 バッテリー残量を表す Gauge メトリクス
 device_battery_percent


Slide 13

Slide 13 text

device_battery_percent{satellite_id=”xxx”} バッテリー残量を取得するクエリ 


Slide 14

Slide 14 text

例2: Androidアプリの稼働率
 Metric: アプリの累積稼働時間 (Counter)
 application_alive_total
 アプリが起動していればれば5分おきにincrementさせる


Slide 15

Slide 15 text

increase(application_alive_total{satellite_id="xxx"}[2w]) / (14 * 24 * 60 / 5) 直近2週間の稼働率を取得するクエリ 


Slide 16

Slide 16 text

例3: クレジットカード読み取り成功率
 Metric: 累積成功数/失敗数 (Counter)
 user_cardswipe_success_total
 user_cardswipe_failure_total


Slide 17

Slide 17 text

increase(user_card_swipe_success_total{satellite_id="xxx"}[3d]) / ( increase(user_card_swipe_success_total{satellite_id="xxx"}[3d]) + increase(user_card_swipe_failure_total{satellite_id="xxx"}[3d]) ) 3dあたりのクレジットカード読み取り成功率を取得するクエリ 


Slide 18

Slide 18 text

筐体の性能評価指標
 シンプルなメトリクスから多くの指標が表現可能
 ● 故障回数
 ● 平均故障間隔 (MTBF)
 ● 平均修理時間 (MTTR)
 ● 故障率
 ● ...


Slide 19

Slide 19 text

ダッシュボード例


Slide 20

Slide 20 text

IoT監視とサーバー監視
 同じ?
 ● モニタリングツール導入
 ● グラフ化・ダッシュボード化
 ● アラート定義
 ● オンコール対応


Slide 21

Slide 21 text

運用はけっこう違う
 ● Web サーバーが1台落ちてもサービス影響無い/小さい
 ○ 冗長構成
 ● IoT エッジデバイスが1つ落ちると即サービス影響
 ○ 冗長化が難しい
 ○ 部品の品質を高めて故障率を下げるしかない


Slide 22

Slide 22 text

品質向上
 監視データをもとに,
 ● 故障原因や頻度を分析
 ● 解決すべき課題を優先度付け
 ● 日々改善


Slide 23

Slide 23 text

がんばっている


Slide 24

Slide 24 text

おわりに
 ● 半径50メートル商圏の先行プレイヤーとして!
 ● 週休3日、待遇良いです!
 ● (幸か不幸か)エンジニアリング課題が山積みです
 600で一緒にIoTしませんか