この Python スクリプトは、Shelly Shelly Pro 3EM デバイスからメトリクスを収集するように設計されています。

そしてそれらを監視のために Prometheus に公開します。このスクリプトは、Flask を使用して、Prometheus がメトリクスを取得できる Web サーバーを作成し、Prometheus クライアント ライブラリを使用してメトリクスを定義および更新します。
Python 3.6 or higher
Flask
prometheus_client
requests
Install required packages:
pip install flask prometheus_client requests
Run the script:
python shelly_exporter.py
スクリプトが実行されていることを確認します。Web ブラウザを開いて http://<your_server_ip>:8004/metrics に移動します。 Prometheus メトリクスが公開されていることがわかります。
次のジョブを Prometheus 構成ファイル (prometheus.yml) に追加します。
scrape_configs:
- job_name: 'shelly'
static_configs:
- targets: ['<your_server_ip>:8004']
sudo systemctl restart prometheus
Prometheus の Web インターフェイスを開き、「ターゲット」ページ (http://<your_prometheus_ip>:9090/targets) に移動します。 Shelly エクスポータ ターゲットがリストされ、「UP」とマークされていることを確認します。

Grafana を開き、[構成] > [データ ソース] に移動します。 「データソースの追加」をクリックし、「Prometheus」を選択します。 URL を http://<your_prometheus_ip>:9090 に設定し、[保存してテスト] をクリックします。
Shelly Pro 3EM デバイスを監視するために事前設定された Grafana ダッシュボードをインポートするには、次の手順に従います。
Grafana インスタンスが稼働していることを確認してください。 Prometheus データ ソースは、Shelly Pro 3EM エクスポーターからのメトリクスを使用して Grafana で構成する必要があります。
ダッシュボードをインポートする: 左側のメニューで、「作成」>「インポート」をクリックします。ダッシュボード JSON を貼り付けるか、JSON ファイルをアップロードするか、Grafana ダッシュボード ID ( 21725 ) を入力するように求められます。ローカル システムから shelly_pro_3em_dashboard.json ファイルをアップロードするオプションを選択します。
データ ソースの構成: アップロード後、Prometheus データ ソースを選択するように求められる場合があります。 Shelly Pro 3EM メトリクス用に構成された正しいデータ ソースを選択します。
ダッシュボードを保存して表示する: インポートしたら、「保存」をクリックしてダッシュボードを保存します。 Grafana ダッシュボードで、Shelly Pro 3EM デバイスからのリアルタイムのメトリクスと履歴データを表示できるようになりました。
ダッシュボードのカスタマイズ ダッシュボードは完全にカスタマイズ可能です。必要に応じてパネルを追加、削除、または変更できます。追加の構成について、または改善に貢献したい場合は、お気軽にプル リクエストを送信するか、問題をオープンしてください。

[保存] をクリックし、ダッシュボードに名前を付けます。 Grafana で Shelly デバイスのメトリクスを監視できるようになりました。
これらの手順に従うことで、Prometheus と Grafana を使用して Shelly デバイスからメトリクスを監視できます。