ブログ

IoT、Prometheus、そして、あなたと完璧なホリデーハムを調理する

Google Cloudとコンテナの継続的なセキュリティ

本文の内容は、2020年12月22日にAlex Lawrenceが投稿したブログ(https://sysdig.com/blog/cooking-iot-prometheus/)を元に日本語に翻訳・再構成した内容となっております。

世界中でホリデーシーズンを迎え、ここSysdigではホリデーシーズンの料理に技術的なアプローチを取ることにしました。

どうやって?と、あなたは尋ねるでしょう。PromQLを少し加えるのです。

December2_001.png

休日の家庭のキッチンは非常に熱狂的な場所になることがあります。多くの料理が同時に作られ、順番に調理されることがよくあります。時短で簡単なものもあれば、数時間かかるものもあります。料理を見落としたり、一歩を忘れたりすることは避けられません。私たちは、テクノロジー、特にPromQLがこの問題を解決できると考えました。

PromQLを少し加えるだけで、時計を鳴らすアラートだけでなく、予測的なアラートも作成できるようになりました。これは、ステップを実行したり、行動を起こしたりするタイミングをより正確に把握できることを意味します。今、私たちはクレイジーと思っているかもしれませんが、私たちの心の中ではSysdigはエンジニアリング会社です。さらに、データポイントの回帰や予測を行う機能のためにPromQLを使いたいと思っていたので、これはキッチンガジェットを作る完璧な口実になりました。

今日の目標は、カスタムIoTデバイス、Prometheusと少しのハードワークで、完璧なホリデーハム(黒糖とパイナップルのグレーズドハム!)を調理する方法をお見せすることです。

この素晴らしいプロジェクトは、アレクサンダー・ローレンス(シスディグのプリンシパル・ソリューション・エンジニア)、マシュー・アンダーセン(ワールドワイド・ディレクター・オブ・セールス・エンジニアリング)、パトリック・ハーゲット(スタッフ・カスタマー・リライアビリティ・エンジニア)、アーロン・ニューカム(プロダクト・マーケティング・ディレクター)によって実施されました。

December2_002.png

必要なもの

ハムのために:

骨付きスモークハム(11~12ポンド

パイナップル 2個

パイナップルジュース3カップ

黒糖パック2カップ(~400g)

IoTデバイスのために:

ウェモスD1ミニ1個

ブレッドボード1枚

2ダースの男性用ジャンパー

1 MAX6675 温度センサー

1 AD8495 アナログ温度センサー

2 k型熱電対センサ

IoTデバイスの手順

この回路図を参考にして、センサーを接続してみましょう:

December2_004.png

Wemos D1 Miniのデフォルト設定では、SPIデバイス(この場合はMAX6675)を1つしかサポートしていないので、生の電圧をレポートするアナログタイプを使って、ちょっとした計算をして2つ目のセンサを追加しました。

ESPHomeをインストールしておくと、D1 Miniを適切な設定で読み込めるようになります。ESPHomeのインストールはpip3 install esphomeを実行するだけですが、詳細は公式ドキュメントを参照してください。

ESPHomeがインストールされたら、D1 MiniをUSBで接続してesphome [filename].yaml runを実行します。自動的にデバイスが検出され、設定が読み込まれます。

上記で使用したピンアウトとセンサーの設定は以下のようになります。

esphomeyaml:
  name: SysdigHolidayHam
  platform: ESP8266
  board: d1_mini
#replace with your info
#2.4 ghz only
wifi:
  ssid: "SSID"
  password: "PASSWORD"
# Activate Web Server
web_server:
# Activates prometheus /metrics endpoint
prometheus:
# Trying to activate the logger
logger:
spi:
  - id: Food
    miso_pin: D0
    clk_pin: D1
sensor:
  - platform: max6675
    name: "Alex - Meat Temperature"
    cs_pin: D2
    update_interval: 10s
    filters:
    - lambda: return (x * (9.0/5.0)) + 32.0;
    unit_of_measurement: "°F"
  - platform: adc
    pin: A0
    name: "Alex - Pit Temperature"
    update_interval: 10s
    filters:
    - multiply: 3.07
    - lambda: return (((x-1.25)/0.005) * (9.0/5.0)) + 32.0;
    unit_of_measurement: "°F" 

重要なことを指摘しておきます。

我々はいくつかの計算をするためにlambdaファンクションを使用しています。MAX6675 の場合、それは C を出力し、F に変換しています。 AD8495 については、報告された電圧を計算のために必要なところまで上げ、次に温度値を C で取得するために少し計算を行い、最後にそれを F に変換しています。

これを実行すると、IoT デバイスが Prometheus 経由で 2 つのセンサーの温度を報告するようになります!

esphome runコマンドを実行すると、デバイスのIPが取得され、それを参照して直接出力を見ることができます。

ハムの手順

  1. オーブンを325ºFに予熱します。
  2. ハムを切った面を下にしてローストパンに入れます。
  3. 爪楊枝で留めたパイナップルの輪っかをハムにかぶせます。
  4. ハムをオーブンに入れます。
  5. ハムが焼かれている間に、グレーズを作ります。パイナップルジュースに黒糖を溶かし、とろみがつくまで鍋で煮る。
  6. ハムが140度になる約1時間後、半分のグレーズをかけます。
  7. ハムが140度になる約30分前に、残りのグレーズをかける。
  8. 140度になったらハムを取り出し、少し休ませます。
  9. 刻んでお召し上がりください。
December2_006.png

PromQL

よし、いいぞ!でも、デバイスからあの美味しそうなホリデーハムまでどうやって行くの?

PromQL!

残り1時間と30分の間にグレーズをかけるように指示されていることに気づくでしょう。作るものによってサイズが違ったり、オーブンが違ったり、温度が違ったりするので、こういった指示に基づいたイベントは料理の世界ではよくあることです。言うまでもなく、これはイライラします。

しかし、PromQLはそれを助けてくれます。アラートを見てみましょう。

[BLOG] Holiday Ham will hit 140 in 1 Hour - Add Glaze (PromQL)
Alert Level: Medium
PromQL:
predict_linear(esphome_sensor_value{name='Alex - Meat Temperature'}[60m], 3600) >= 140 

predict_linearがここでの重要な操作です。Alex - Meat Temperatureという名前のesphome_sensor_valueというメトリクスを引っ張ってきて、PromQLに組み込まれたpredict_linearというアルゴリズムで実行しています(聴衆の統計学者の皆さんのために、これは線形回帰分析と線形予測のことです)。これは過去60分間の測定値を見て、3600秒後の値を予測します。その値が140以上であれば、警告の条件が満たされ、警告が発せられます。

これは何を意味するのでしょうか?

グレーズをかけるタイミングを 推測する必要はありません もっと優れたものに教えてもらいましょう 統計学だ その完璧なハムを調理するために、我々は物事の上に滞在するために、いくつかのPromQLアラートを構築しました。

[BLOG] Pit is less than 300 (PromQL)
Alert Level: High
PromQL:
esphome_sensor_value{name='Alex - Pit Temperature'} >= 300
[BLOG] Pit is greater than 350 (PromQL)
Alert Level: High
PromQL:
esphome_sensor_value{name='Alex - Pit Temperature'} <= 350
[BLOG] Holiday Ham will hit 140 in 5 min (PromQL)
Alert Level: Medium
PromQL:
predict_linear(esphome_sensor_value{name='Alex - Meat Temperature'}[10m], 300) >= 140
[BLOG] Holiday Ham will hit 140 in 30 min - Add Glaze (PromQL)
Alert Level: Medium
PromQL:
predict_linear(esphome_sensor_value{name='Alex - Meat Temperature'}[60m], 1800) >= 140
[BLOG] Holiday Ham will hit 140 in 1 Hour - Add Glaze (PromQL)
Alert Level: Medium
PromQL:
predict_linear(esphome_sensor_value{name='Alex - Meat Temperature'}[60m], 3600) >= 140
[BLOG] Holiday Ham is 140! Dinner time! (PromQL)
Alert Level: High
PromQL:
esphome_sensor_value{name='Alex - Meat Temperature'} >= 140 

また、同じコンセプトをダッシュボードで使用して、調理中のプローブの温度をトラッキングしました。

これはSysdigで行いましたが、Grafanaのような他のツールも使用できます。

SysdigはPrometheusとPromQLと100%互換性があります。Sysdigのバックエンドにより、何千ものデバイスと何百万ものメトリクスにスケールすることができます。これは2つのメトリクスを持つ小さなデバイスに過ぎませんでしたが、エンタープライズIoTの世界では、バックエンドのスケールは絶対的に重要です。

様々なパネルがプローブに基づいて色や予測を行っているのを見ることができます。また、実際の値がアラートと重なってチャート化されているのを見ることができます(黄色と赤の四角がトリガーを示す線の上にあります)。これらのアラートは以下のようになっています。

これらの同じアラートは、便利なリマインダーを生成するためにSlackに転送されていた。

December2_009.png

私が言えることは、結果がそれを物語っているということだけです。

美味しいハムでした。

December2_010.png

PromQLは本当に万能です

全体的には、カスタムIoTデバイスを使ったこの小さなプロジェクトはとても楽しかったです。最大の収穫は、PromQLが本当に汎用性が高いということでした。このアプリケーションは家庭料理に使われていて、少し馬鹿げているように見えますが、ここでやったことと同じことができる製品は市場には一つもないことにすぐに気付きました。予測モデルを使用することで、"watch it "変数を方程式から外し、料理のことを忘れることなく他のことに集中できるようになりました。

あなただけのセンサーを食品に入れて、次に何をすべきか、いつやる必要があるかを予測して、あなたの携帯電話にアラートを取得する世界を想像してみてください。それはまさに夢のようなことです。

IoTデバイスに注意

これは料理の例ですが、企業での IoT デバイスの大型化に伴い、このようなツールが求められていることは想像に難くありません。コンポーネントの健康状態をより詳細に把握できる自動車、いつ、どのくらいの速さで充電するかをより良く分析できる携帯電話、発電量と消費量をモデリングできる太陽電池などがそれにあたります。これらのデータを標準的な方法で抽出、追跡、モデル化できるようになれば、家庭や企業のIoTやコネクテッド・デバイスの世界にイノベーションと相互運用性の全く新しい波をもたらすことになるでしょう。

良い休日をお過ごしください

このブログで紹介したことで遊んでみたいという方は、お気軽にどうぞ! PromQLやIoT向けのエンタープライズアプリケーションをお持ちの方は、ぜひSysdigをチェックしてみてください。また、PromCat.ioは、Prometheusの統合とPromQLのリソースを集めたリポジトリです。

私たちの家族からあなたの家族へ、素晴らしい休日をお過ごしください。

December2_011.png

最近の投稿

カテゴリー

アーカイブ

ご質問・お問い合わせはこちら

top