Google Cloudとコンテナの継続的なセキュリティ
本文の内容は、2020年12月22日にAlex Lawrenceが投稿したブログ(https://sysdig.com/blog/cooking-iot-prometheus/)を元に日本語に翻訳・再構成した内容となっております。
世界中でホリデーシーズンを迎え、ここSysdigではホリデーシーズンの料理に技術的なアプローチを取ることにしました。
どうやって?と、あなたは尋ねるでしょう。PromQLを少し加えるのです。
休日の家庭のキッチンは非常に熱狂的な場所になることがあります。多くの料理が同時に作られ、順番に調理されることがよくあります。時短で簡単なものもあれば、数時間かかるものもあります。料理を見落としたり、一歩を忘れたりすることは避けられません。私たちは、テクノロジー、特にPromQLがこの問題を解決できると考えました。
PromQLを少し加えるだけで、時計を鳴らすアラートだけでなく、予測的なアラートも作成できるようになりました。これは、ステップを実行したり、行動を起こしたりするタイミングをより正確に把握できることを意味します。今、私たちはクレイジーと思っているかもしれませんが、私たちの心の中ではSysdigはエンジニアリング会社です。さらに、データポイントの回帰や予測を行う機能のためにPromQLを使いたいと思っていたので、これはキッチンガジェットを作る完璧な口実になりました。
今日の目標は、カスタムIoTデバイス、Prometheusと少しのハードワークで、完璧なホリデーハム(黒糖とパイナップルのグレーズドハム!)を調理する方法をお見せすることです。
この素晴らしいプロジェクトは、アレクサンダー・ローレンス(シスディグのプリンシパル・ソリューション・エンジニア)、マシュー・アンダーセン(ワールドワイド・ディレクター・オブ・セールス・エンジニアリング)、パトリック・ハーゲット(スタッフ・カスタマー・リライアビリティ・エンジニア)、アーロン・ニューカム(プロダクト・マーケティング・ディレクター)によって実施されました。
骨付きスモークハム(11~12ポンド
パイナップル 2個
パイナップルジュース3カップ
黒糖パック2カップ(~400g)
ウェモスD1ミニ1個
ブレッドボード1枚
2ダースの男性用ジャンパー
1 MAX6675 温度センサー
1 AD8495 アナログ温度センサー
2 k型熱電対センサ
この回路図を参考にして、センサーを接続してみましょう:
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が取得され、それを参照して直接出力を見ることができます。
よし、いいぞ!でも、デバイスからあの美味しそうなホリデーハムまでどうやって行くの?
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に転送されていた。
私が言えることは、結果がそれを物語っているということだけです。
美味しいハムでした。
全体的には、カスタムIoTデバイスを使ったこの小さなプロジェクトはとても楽しかったです。最大の収穫は、PromQLが本当に汎用性が高いということでした。このアプリケーションは家庭料理に使われていて、少し馬鹿げているように見えますが、ここでやったことと同じことができる製品は市場には一つもないことにすぐに気付きました。予測モデルを使用することで、"watch it "変数を方程式から外し、料理のことを忘れることなく他のことに集中できるようになりました。
あなただけのセンサーを食品に入れて、次に何をすべきか、いつやる必要があるかを予測して、あなたの携帯電話にアラートを取得する世界を想像してみてください。それはまさに夢のようなことです。
これは料理の例ですが、企業での IoT デバイスの大型化に伴い、このようなツールが求められていることは想像に難くありません。コンポーネントの健康状態をより詳細に把握できる自動車、いつ、どのくらいの速さで充電するかをより良く分析できる携帯電話、発電量と消費量をモデリングできる太陽電池などがそれにあたります。これらのデータを標準的な方法で抽出、追跡、モデル化できるようになれば、家庭や企業のIoTやコネクテッド・デバイスの世界にイノベーションと相互運用性の全く新しい波をもたらすことになるでしょう。
このブログで紹介したことで遊んでみたいという方は、お気軽にどうぞ! PromQLやIoT向けのエンタープライズアプリケーションをお持ちの方は、ぜひSysdigをチェックしてみてください。また、PromCat.ioは、Prometheusの統合とPromQLのリソースを集めたリポジトリです。
私たちの家族からあなたの家族へ、素晴らしい休日をお過ごしください。