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

IoTと監視

na-o-ys
September 11, 2019

 IoTと監視

na-o-ys

September 11, 2019
Tweet

More Decks by na-o-ys

Other Decks in Technology

Transcript

  1. IoT と監視

    600株式会社

    エンジニア 岡前直由


    View Slide

  2. 無人コンビニ600について

    ● 無人決済冷蔵庫

    ○ クレジットカードリーダー

    ○ 電子錠

    ○ RFID

    ○ Android タブレット

    ● 「半径50メートル商圏」の市場開拓を狙う

    ○ 20年で10兆円規模の市場に


    View Slide

  3. 自己紹介

    ● 経歴

    ○ 大阪大学大学院 (暗号理論・符号理論専攻)

    ○ 某SIer

    ○ 株式会社リブセンス

    ■ SRE, SWE, 機械学習エンジニア

    ○ 株式会社600

    ■ 2018/9~

    ■ 主に Product Quality Manager

    ● TypeScript, Kotlin


    View Slide

  4. 今日の内容

    「冷蔵庫を監視する」ってどういうこと?

    Prometheus を用いた筐体監視事例の紹介


    View Slide

  5. ● OSS のシステムモニタリングツール

    ● アーキテクチャがシンプルで運用が容易

    ● 機能充分なコンポーネント群と周辺ツール

    ○ 可視化

    ○ アラート


    View Slide

  6. Prometheus のアーキテクチャ


    View Slide

  7. Prometheus × IoT の2つのポイント

    1. サブコンポーネント Pushgateway の利用

    2. メトリクス設計


    View Slide

  8. Prometheus は Pull 型

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


    View Slide

  9. Pushgateway

    Push 型の監視を実現するためのサブコンポーネント

    エッジデバイスへの Pull は難しい


    View Slide

  10. メトリクス設計

    最も重要な部分

    ● サーバー監視など一般的な用途では, 基本的なメトリクスを組
    み込んだ exporter が用意されている

    ● 「筐体が正常稼働」の条件をブレークダウン

    ○ Android アプリが起動している, タブレットのバッテリーが充
    分である, クレジットカードが読み込める, …

    ○ Prometheusで表現できるメトリクス化


    View Slide

  11. CounterとGauge

    Prometheusが用意しているメトリクスの型

    ● Counter

    ○ 単調増加する値

    ○ e.g. 合計リクエスト数, エラー数

    ● Gauge

    ○ 任意に上下する値

    ○ e.g. メモリ利用量, 温度


    View Slide

  12. 例1: バッテリー残量

    バッテリー残量を表す Gauge メトリクス

    device_battery_percent


    View Slide

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


    View Slide

  14. 例2: Androidアプリの稼働率

    Metric: アプリの累積稼働時間 (Counter)

    application_alive_total

    アプリが起動していればれば5分おきにincrementさせる


    View Slide

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


    View Slide

  16. 例3: クレジットカード読み取り成功率

    Metric: 累積成功数/失敗数 (Counter)

    user_cardswipe_success_total

    user_cardswipe_failure_total


    View Slide

  17. 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あたりのクレジットカード読み取り成功率を取得するクエリ 


    View Slide

  18. 筐体の性能評価指標

    シンプルなメトリクスから多くの指標が表現可能

    ● 故障回数

    ● 平均故障間隔 (MTBF)

    ● 平均修理時間 (MTTR)

    ● 故障率

    ● ...


    View Slide

  19. ダッシュボード例


    View Slide

  20. IoT監視とサーバー監視

    同じ?

    ● モニタリングツール導入

    ● グラフ化・ダッシュボード化

    ● アラート定義

    ● オンコール対応


    View Slide

  21. 運用はけっこう違う

    ● Web サーバーが1台落ちてもサービス影響無い/小さい

    ○ 冗長構成

    ● IoT エッジデバイスが1つ落ちると即サービス影響

    ○ 冗長化が難しい

    ○ 部品の品質を高めて故障率を下げるしかない


    View Slide

  22. 品質向上

    監視データをもとに,

    ● 故障原因や頻度を分析

    ● 解決すべき課題を優先度付け

    ● 日々改善


    View Slide

  23. がんばっている


    View Slide

  24. おわりに

    ● 半径50メートル商圏の先行プレイヤーとして!

    ● 週休3日、待遇良いです!

    ● (幸か不幸か)エンジニアリング課題が山積みです

    600で一緒にIoTしませんか

    View Slide