Shelly plug exporter

Prometheus exporter for Shelly Plugs and devices (generation 1 and 2)
Can probe list of targets or use mDNS service discovery
Usage
Usage:
shelly-plug-exporter [OPTIONS]
Application Options:
--log.level=[trace|debug|info|warning|error] Log level (default: info) [$LOG_LEVEL]
--log.format=[logfmt|json] Log format (default: logfmt) [$LOG_FORMAT]
--log.source=[|short|file|full] Show source for every log message (useful for debugging and bug reports) [$LOG_SOURCE]
--log.color=[|auto|yes|no] Enable color for logs [$LOG_COLOR]
--log.time Show log time [$LOG_TIME]
--shelly.request.timeout= Request timeout (default: 2s) [$SHELLY_REQUEST_TIMEOUT]
--shelly.request.retry.count= Retry count for failing requests (default: 3) [$SHELLY_REQUEST_RETRY_COUNT]
--shelly.request.retry.waittime= Wait time after retry (default: 100ms) [$SHELLY_REQUEST_RETRY_WAITTIME]
--shelly.request.retry.waittimemax= Maximum wait time after retry (default: 1s) [$SHELLY_REQUEST_RETRY_WAITTIMEMAX]
--shelly.auth.username= Username for shelly plug login [$SHELLY_AUTH_USERNAME]
--shelly.auth.password= Password for shelly plug login [$SHELLY_AUTH_PASSWORD]
--shelly.host.shellyplug= shellyplug device IP or hostname to scrape. Pass multiple times for multiple hosts
[$SHELLY_HOST_SHELLYPLUGS]
--shelly.host.shellyplus= shellyplus device IP or hostname to scrape. Pass multiple times for multiple hosts
[$SHELLY_HOST_SHELLYPLUSES]
--shelly.host.shellypro= shellypro device IP or hostname to scrape. Pass multiple times for multiple hosts
[$SHELLY_HOST_SHELLYPROS]
--shelly.servicediscovery.timeout= mDNS discovery response timeout (default: 15s) [$SHELLY_SERVICEDISCOVERY_TIMEOUT]
--shelly.servicediscovery.refresh= mDNS discovery refresh time (default: 15m) [$SHELLY_SERVICEDISCOVERY_REFRESH]
--server.bind= Server address (default: :8080) [$SERVER_BIND]
--server.timeout.read= Server read timeout (default: 5s) [$SERVER_TIMEOUT_READ]
--server.timeout.write= Server write timeout (default: 10s) [$SERVER_TIMEOUT_WRITE]
Help Options:
-h, --help Show this help message
Docker & Prometheus
For mDNS service discovery the docker container must run on host network for multicast requests so the exporter needs
to be exposed on the host machine.
docker-compose.yaml
version: '3.4'
services:
# ...
shelly-plug:
image: webdevops/shelly-plug-exporter:$VERSION
restart: always
network_mode: host
read_only: true
environment:
- VERBOSE=1
- SERVER_BIND=:8089
- SHELLY_SERVICEDISCOVERY_TIMEOUT=10s
# ...
prometheus config:
# ...
scrape_configs:
# ...
# general exporter metrics (eg memory & golang metrics)
- job_name: 'shelly-plug-exporter'
static_configs:
- targets: ['host-addr:8089']
# plugs metrics (mDNS servicediscovery)
- job_name: 'shelly-plug-discovery'
scrape_interval: 30s
scrape_timeout: 29s
static_configs:
- targets: ['host-addr:8089']
metrics_path: /probe/discovery
# ...
HTTP Endpoints
| Endpoint |
Description |
/metrics |
Default prometheus golang metrics |
/probe |
Probe shelly plugs, uses mDNS servicediscovery to find Shelly plugs (must be run on host network) |
/targets |
List of configured and discovered targets as JSON |
Metrics
| Metric |
Description |
shellyplug_info |
Device information |
shellyplug_cloud_connected |
Status if cloud connection established |
shellyplug_cloud_enabled |
Status if cloud connection enabled |
shellyplug_overtemperature |
Status if temperature reached limit |
shellyplug_temperature |
Device temperature |
shellyplug_switch_on |
Status if relay switch is on or off |
shellyplug_switch_overpower |
Status if relay switch triggered overpower |
shellyplug_switch_timer |
Status if relay switch has timer |
shellyplug_power_load_current |
Current power load |
shellyplug_power_load_apparentcurrent |
Current power apparent load |
shellyplug_power_load_total |
Total power load in watt/hours |
shellyplug_power_load_limit |
Configured power limit |
shellyplug_power_factor |
Power factor |
shellyplug_power_frequency |
Power frequency in Hertz |
shellyplug_power_voltage |
Power voltage |
shellyplug_power_ampere |
Power ampere |
shellyplug_system_fs_free |
System filesystem free space |
shellyplug_system_fs_size |
System filesystem size |
shellyplug_system_memory_free |
System memory free |
shellyplug_system_memory_total |
System memory size |
shellyplug_system_unixtime |
System time (unixtime) |
shellyplug_system_uptime |
System uptime (in seconds) |
shellyplug_update_needed |
Status if updated is needed |
shellyplug_restart_required |
Status if restart of device is needed |
shellyplug_wifi_rssi |
Wifi rssi |