Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

json_exporter doesn't read some values in the root path #322

Open
giuliomagnifico opened this issue Aug 17, 2024 · 0 comments
Open

json_exporter doesn't read some values in the root path #322

giuliomagnifico opened this issue Aug 17, 2024 · 0 comments

Comments

@giuliomagnifico
Copy link

giuliomagnifico commented Aug 17, 2024

Hi, sorry for the long message but I can't figure out why some metrics (like ram, file system, MAC address, etc.) aren't being read from the JSON exporter.

On the status page of the Shelly EM, the data are:

{
   "wifi_sta":{
      "connected":true,
      "ssid":"Magnifico_IoT",
      "ip":"192.168.50.217",
      "rssi":-35
   },
   "cloud":{
      "enabled":true,
      "connected":true
   },
   "mqtt":{
      "connected":false
   },
   "time":"09:37",
   "unixtime":1723880257,
   "serial":2419,
   "has_update":false,
   "mac":"ExxxxxE",
   "cfg_changed_cnt":2,
   "actions_stats":{
      "skipped":0
   },
   "relays":[
      {
         "ison":false,
         "has_timer":false,
         "timer_started":0,
         "timer_duration":0,
         "timer_remaining":0,
         "overpower":false,
         "is_valid":true,
         "source":"input"
      }
   ],
   "emeters":[
      {
         "power":779.42,
         "reactive":477.09,
         "pf":0.85,
         "voltage":224.61,
         "is_valid":true,
         "total":80541.7,
         "total_returned":0.0
      },
      {
         "power":0.00,
         "reactive":0.00,
         "pf":0.00,
         "voltage":224.61,
         "is_valid":true,
         "total":0.0,
         "total_returned":0.0
      }
   ],
   "update":{
      "status":"idle",
      "has_update":false,
      "new_version":"20230913-114150/v1.14.0-gcb84623",
      "old_version":"20230913-114150/v1.14.0-gcb84623",
      "beta_version":"20231107-164916/v1.14.1-rc1-g0617c15"
   },
   "ram_total":51064,
   "ram_free":35564,
   "fs_size":233681,
   "fs_free":157879,
   "uptime":376557
}

And here's my Json Exporter config:

modules:
  shelly_em:
    metrics:
      # Metrics from the first emeter
      - name: shelly_em_meter_0
        type: object
        path: '{ .emeters[0] }'
        help: Shelly EM Meter 0 Data
        labels:
          phase: '0'
        values:
          Instant_Power: '{.power}'
          Instant_Current: '{.current}'
          Instant_Voltage: '{.voltage}'
          Instant_PowerFactor: '{.pf}'
          Energy_Consumed: '{.total}'
          Energy_Produced: '{.total_returned}'

      # Metrics from the second emeter
      - name: shelly_em_meter_1
        type: object
        path: '{ .emeters[1] }'
        help: Shelly EM Meter 1 Data
        labels:
          phase: '1'
        values:
          Instant_Power: '{.power}'
          Instant_Voltage: '{.voltage}'
          Instant_PowerFactor: '{.pf}'
          Energy_Consumed: '{.total}'
          Energy_Produced: '{.total_returned}'

      # Wi-Fi status
      - name: shelly_em_wifi
        type: object
        path: '{ .wifi_sta }'
        help: Shelly EM Wi-Fi Status
        labels:
          Wifi_SSID: '{.ssid}'
          Wifi_IP: '{.ip}'
        values:
          Wifi_Connected: '{.connected}'
          Wifi_RSSI: '{.rssi}'

      # Cloud status
      - name: shelly_em_cloud
        type: object
        path: '{ .cloud }'
        help: Shelly EM Cloud Status
        values:
          Cloud_Enabled: '{.enabled}'
          Cloud_Connected: '{.connected}'

      # Device information
      - name: shelly_em_device_info
        type: object
        path: '{ .update }'
        help: Shelly EM Device Update Information
        labels:
          Update_New_Version: '{.new_version}'
          Update_Old_Version: '{.old_version}'
          Update_Beta_Version: '{.beta_version}'
        values:
          Update_Status: '{.status}'
          Update_Has_Update: '{.has_update}'

      # System metrics
      - name: shelly_em_system_metrics
        type: object
        path: '{ $ }'
        help: Shelly EM System Metrics
        values:
          Ram_Total: '{.ram_total}'
          Ram_Free: '{.ram_free}'
          Fs_Size: '{.fs_size}'
          Fs_Free: '{.fs_free}'
          System_Uptime: '{.uptime}'

But I can's see some of the last metrics, RAM and fs for example. Here're the Prometheus metrics:

# HELP shelly_em_cloud_Cloud_Connected Shelly EM Cloud Status
# TYPE shelly_em_cloud_Cloud_Connected untyped
shelly_em_cloud_Cloud_Connected 1
# HELP shelly_em_cloud_Cloud_Enabled Shelly EM Cloud Status
# TYPE shelly_em_cloud_Cloud_Enabled untyped
shelly_em_cloud_Cloud_Enabled 1
# HELP shelly_em_device_info_Update_Has_Update Shelly EM Device Update Information
# TYPE shelly_em_device_info_Update_Has_Update untyped
shelly_em_device_info_Update_Has_Update{Update_Beta_Version="20231107-164916/v1.14.1-rc1-g0617c15",Update_New_Version="20230913-114150/v1.14.0-gcb84623",Update_Old_Version="20230913-114150/v1.14.0-gcb84623"} 0
# HELP shelly_em_meter_0_Energy_Consumed Shelly EM Meter 0 Data
# TYPE shelly_em_meter_0_Energy_Consumed untyped
shelly_em_meter_0_Energy_Consumed{phase="0"} 80528.8
# HELP shelly_em_meter_0_Energy_Produced Shelly EM Meter 0 Data
# TYPE shelly_em_meter_0_Energy_Produced untyped
shelly_em_meter_0_Energy_Produced{phase="0"} 0
# HELP shelly_em_meter_0_Instant_Power Shelly EM Meter 0 Data
# TYPE shelly_em_meter_0_Instant_Power untyped
shelly_em_meter_0_Instant_Power{phase="0"} 775.21
# HELP shelly_em_meter_0_Instant_PowerFactor Shelly EM Meter 0 Data
# TYPE shelly_em_meter_0_Instant_PowerFactor untyped
shelly_em_meter_0_Instant_PowerFactor{phase="0"} 0.85
# HELP shelly_em_meter_0_Instant_Voltage Shelly EM Meter 0 Data
# TYPE shelly_em_meter_0_Instant_Voltage untyped
shelly_em_meter_0_Instant_Voltage{phase="0"} 224.79
# HELP shelly_em_meter_1_Energy_Consumed Shelly EM Meter 1 Data
# TYPE shelly_em_meter_1_Energy_Consumed untyped
shelly_em_meter_1_Energy_Consumed{phase="1"} 0
# HELP shelly_em_meter_1_Energy_Produced Shelly EM Meter 1 Data
# TYPE shelly_em_meter_1_Energy_Produced untyped
shelly_em_meter_1_Energy_Produced{phase="1"} 0
# HELP shelly_em_meter_1_Instant_Power Shelly EM Meter 1 Data
# TYPE shelly_em_meter_1_Instant_Power untyped
shelly_em_meter_1_Instant_Power{phase="1"} 0
# HELP shelly_em_meter_1_Instant_PowerFactor Shelly EM Meter 1 Data
# TYPE shelly_em_meter_1_Instant_PowerFactor untyped
shelly_em_meter_1_Instant_PowerFactor{phase="1"} 0
# HELP shelly_em_meter_1_Instant_Voltage Shelly EM Meter 1 Data
# TYPE shelly_em_meter_1_Instant_Voltage untyped
shelly_em_meter_1_Instant_Voltage{phase="1"} 224.79
# HELP shelly_em_wifi_Wifi_Connected Shelly EM Wi-Fi Status
# TYPE shelly_em_wifi_Wifi_Connected untyped
shelly_em_wifi_Wifi_Connected{Wifi_IP="192.168.50.217",Wifi_SSID="Magnifico_IoT"} 1
# HELP shelly_em_wifi_Wifi_RSSI Shelly EM Wi-Fi Status
# TYPE shelly_em_wifi_Wifi_RSSI untyped
shelly_em_wifi_Wifi_RSSI{Wifi_IP="192.168.50.217",Wifi_SSID="Magnifico_IoT"} -37

Without any errors in the logs of the json_exporter.

But f I change the path: '{ $ }' to path: '{ . }' in the # System metrics, then I get those errors

      # System metrics
      - name: shelly_em_system_metrics
        type: object
        path: '{ . }'# from $
        help: Shelly EM System Metrics
        values:
          Ram_Total: '{.ram_total}'
          Ram_Free: '{.ram_free}'
          Fs_Size: '{.fs_size}'
          Fs_Free: '{.fs_free}'
          System_Uptime: '{.uptime}'

Errors:

service json_exporter status
● json_exporter.service - json_exporter
     Loaded: loaded (/etc/systemd/system/json_exporter.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-08-17 09:31:08 CEST; 14s ago
   Main PID: 679044 (json_exporter)
      Tasks: 5 (limit: 9272)
        CPU: 13ms
     CGroup: /system.slice/json_exporter.service
             └─679044 /home/dietpi/prometheus/exporter/json_exporter/json_exporter --config.file=/home/dietpi/prometheus/exporter/json_exporter/shelly.json

Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:139 level=error msg="Failed to execute jsonpath" err=" is not found" path="{ . }" data="{\"wifi_sta\":{\"connected\":t
rue,\"ssid\":\"Magnifico_IoT\",\"ip\":\"192.168.50.217\",\"rssi\":-37},\"cloud\":{\"enabled\":true,\"connected\":true},\"mqtt\":{\"connected\":false},\"time\":\"09:31\",\"unixtime\":1723879883,\"serial\":2418,\"h
as_update\":false,\"mac\":\"EC64C9C05EFE\",\"cfg_changed_cnt\":2,\"actions_stats\":{\"skipped\":0},\"relays\":[{\"ison\":false,\"has_timer\":false,\"timer_started\":0,\"timer_duration\":0,\"timer_remaining\":0,\"
overpower\":false,\"is_valid\":true,\"source\":\"input\"}],\"emeters\":[{\"power\":779.01,\"reactive\":473.39,\"pf\":0.85,\"voltage\":224.48,\"is_valid\":true,\"total\":80463.6,\"total_returned\":0.0},{\"power\":
0.00,\"reactive\":0.00,\"pf\":0.00,\"voltage\":224.48,\"is_valid\":true,\"total\":0.0,\"total_returned\":0.0}],\"update\":{\"status\":\"idle\",\"has_update\":false,\"new_version\":\"20230913-114150/v1.14.0-gcb846
23\",\"old_version\":\"20230913-114150/v1.14.0-gcb84623\",\"beta_version\":\"20231107-164916/v1.14.1-rc1-g0617c15\"},\"ram_total\":51064,\"ram_free\":36172,\"fs_size\":233681,\"fs_free\":157879,\"uptime\":376184}
"
Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:76 level=error msg="Failed to extract json objects for metric" err=" is not found" metric="Desc{fqName: \"shelly_em_sy
stem_metrics_Ram_Total\", help: \"Shelly EM System Metrics\", constLabels: {}, variableLabels: []}"
Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:139 level=error msg="Failed to execute jsonpath" err=" is not found" path="{ . }" data="{\"wifi_sta\":{\"connected\":t
rue,\"ssid\":\"Magnifico_IoT\",\"ip\":\"192.168.50.217\",\"rssi\":-37},\"cloud\":{\"enabled\":true,\"connected\":true},\"mqtt\":{\"connected\":false},\"time\":\"09:31\",\"unixtime\":1723879883,\"serial\":2418,\"h
as_update\":false,\"mac\":\"EC64C9C05EFE\",\"cfg_changed_cnt\":2,\"actions_stats\":{\"skipped\":0},\"relays\":[{\"ison\":false,\"has_timer\":false,\"timer_started\":0,\"timer_duration\":0,\"timer_remaining\":0,\"
overpower\":false,\"is_valid\":true,\"source\":\"input\"}],\"emeters\":[{\"power\":779.01,\"reactive\":473.39,\"pf\":0.85,\"voltage\":224.48,\"is_valid\":true,\"total\":80463.6,\"total_returned\":0.0},{\"power\":
0.00,\"reactive\":0.00,\"pf\":0.00,\"voltage\":224.48,\"is_valid\":true,\"total\":0.0,\"total_returned\":0.0}],\"update\":{\"status\":\"idle\",\"has_update\":false,\"new_version\":\"20230913-114150/v1.14.0-gcb846
23\",\"old_version\":\"20230913-114150/v1.14.0-gcb84623\",\"beta_version\":\"20231107-164916/v1.14.1-rc1-g0617c15\"},\"ram_total\":51064,\"ram_free\":36172,\"fs_size\":233681,\"fs_free\":157879,\"uptime\":376184}
"
Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:76 level=error msg="Failed to extract json objects for metric" err=" is not found" metric="Desc{fqName: \"shelly_em_sy
stem_metrics_Ram_Free\", help: \"Shelly EM System Metrics\", constLabels: {}, variableLabels: []}"
Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:139 level=error msg="Failed to execute jsonpath" err=" is not found" path="{ . }" data="{\"wifi_sta\":{\"connected\":t
rue,\"ssid\":\"Magnifico_IoT\",\"ip\":\"192.168.50.217\",\"rssi\":-37},\"cloud\":{\"enabled\":true,\"connected\":true},\"mqtt\":{\"connected\":false},\"time\":\"09:31\",\"unixtime\":1723879883,\"serial\":2418,\"h
as_update\":false,\"mac\":\"EC64C9C05EFE\",\"cfg_changed_cnt\":2,\"actions_stats\":{\"skipped\":0},\"relays\":[{\"ison\":false,\"has_timer\":false,\"timer_started\":0,\"timer_duration\":0,\"timer_remaining\":0,\"
overpower\":false,\"is_valid\":true,\"source\":\"input\"}],\"emeters\":[{\"power\":779.01,\"reactive\":473.39,\"pf\":0.85,\"voltage\":224.48,\"is_valid\":true,\"total\":80463.6,\"total_returned\":0.0},{\"power\":
0.00,\"reactive\":0.00,\"pf\":0.00,\"voltage\":224.48,\"is_valid\":true,\"total\":0.0,\"total_returned\":0.0}],\"update\":{\"status\":\"idle\",\"has_update\":false,\"new_version\":\"20230913-114150/v1.14.0-gcb846
23\",\"old_version\":\"20230913-114150/v1.14.0-gcb84623\",\"beta_version\":\"20231107-164916/v1.14.1-rc1-g0617c15\"},\"ram_total\":51064,\"ram_free\":36172,\"fs_size\":233681,\"fs_free\":157879,\"uptime\":376184}
"
Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:76 level=error msg="Failed to extract json objects for metric" err=" is not found" metric="Desc{fqName: \"shelly_em_sy
stem_metrics_Fs_Size\", help: \"Shelly EM System Metrics\", constLabels: {}, variableLabels: []}"
Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:139 level=error msg="Failed to execute jsonpath" err=" is not found" path="{ . }" data="{\"wifi_sta\":{\"connected\":t
rue,\"ssid\":\"Magnifico_IoT\",\"ip\":\"192.168.50.217\",\"rssi\":-37},\"cloud\":{\"enabled\":true,\"connected\":true},\"mqtt\":{\"connected\":false},\"time\":\"09:31\",\"unixtime\":1723879883,\"serial\":2418,\"h
as_update\":false,\"mac\":\"EC64C9C05EFE\",\"cfg_changed_cnt\":2,\"actions_stats\":{\"skipped\":0},\"relays\":[{\"ison\":false,\"has_timer\":false,\"timer_started\":0,\"timer_duration\":0,\"timer_remaining\":0,\"
overpower\":false,\"is_valid\":true,\"source\":\"input\"}],\"emeters\":[{\"power\":779.01,\"reactive\":473.39,\"pf\":0.85,\"voltage\":224.48,\"is_valid\":true,\"total\":80463.6,\"total_returned\":0.0},{\"power\":
0.00,\"reactive\":0.00,\"pf\":0.00,\"voltage\":224.48,\"is_valid\":true,\"total\":0.0,\"total_returned\":0.0}],\"update\":{\"status\":\"idle\",\"has_update\":false,\"new_version\":\"20230913-114150/v1.14.0-gcb846
23\",\"old_version\":\"20230913-114150/v1.14.0-gcb84623\",\"beta_version\":\"20231107-164916/v1.14.1-rc1-g0617c15\"},\"ram_total\":51064,\"ram_free\":36172,\"fs_size\":233681,\"fs_free\":157879,\"uptime\":376184}
"
Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:76 level=error msg="Failed to extract json objects for metric" err=" is not found" metric="Desc{fqName: \"shelly_em_sy
stem_metrics_Fs_Free\", help: \"Shelly EM System Metrics\", constLabels: {}, variableLabels: []}"
Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:139 level=error msg="Failed to execute jsonpath" err=" is not found" path="{ . }" data="{\"wifi_sta\":{\"connected\":t
rue,\"ssid\":\"Magnifico_IoT\",\"ip\":\"192.168.50.217\",\"rssi\":-37},\"cloud\":{\"enabled\":true,\"connected\":true},\"mqtt\":{\"connected\":false},\"time\":\"09:31\",\"unixtime\":1723879883,\"serial\":2418,\"h
as_update\":false,\"mac\":\"EC64C9C05EFE\",\"cfg_changed_cnt\":2,\"actions_stats\":{\"skipped\":0},\"relays\":[{\"ison\":false,\"has_timer\":false,\"timer_started\":0,\"timer_duration\":0,\"timer_remaining\":0,\"
overpower\":false,\"is_valid\":true,\"source\":\"input\"}],\"emeters\":[{\"power\":779.01,\"reactive\":473.39,\"pf\":0.85,\"voltage\":224.48,\"is_valid\":true,\"total\":80463.6,\"total_returned\":0.0},{\"power\":
0.00,\"reactive\":0.00,\"pf\":0.00,\"voltage\":224.48,\"is_valid\":true,\"total\":0.0,\"total_returned\":0.0}],\"update\":{\"status\":\"idle\",\"has_update\":false,\"new_version\":\"20230913-114150/v1.14.0-gcb846
23\",\"old_version\":\"20230913-114150/v1.14.0-gcb84623\",\"beta_version\":\"20231107-164916/v1.14.1-rc1-g0617c15\"},\"ram_total\":51064,\"ram_free\":36172,\"fs_size\":233681,\"fs_free\":157879,\"uptime\":376184}
"
Aug 17 09:31:10 DietPi json_exporter[679044]: ts=2024-08-17T07:31:10.079Z caller=collector.go:76 level=error msg="Failed to extract json objects for metric" err=" is not found" metric="Desc{fqName: \"shelly_em_sy
stem_metrics_System_Uptime\", help: \"Shelly EM System Metrics\", constLabels: {}, variableLabels

How can I read the "unreported" values?

Thanks in advance for the help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant