Prometheus Adapter for HWiNFO (+ Grafana Dashboard)

@Kallex

I think the notification "Check HWiNFO Shared Memory setting" could be improved. I restarted my machine (but completely forgot) and for the world could not comprehend why i kept giving the notification. Until I opened the sensors window for the "first" time since restart. Since my machine has all the other services starting up automatically hidden. So perhaps adding to check the sensors window would be helpful.
 
Hello - I've got an issue with promdapter. At this time I'm attempting to use it as a tool for monitoring a system I'm validating. I've found during my validation (memory stress tests, CPU stress tests, Storage stress tests, etc) I get an error "semaphore failed" and I can't collect any stats on this. Is there anything that I can do to help prevent or mitigate this?
 
I've got the notification "Check HWiNFO Shared Memory setting" on VM WS2022
Where find HWiNFO Shared Memory setting in settings?
 
I've moved a host that worked previously from windows 10 to windows 11 and now my DIMM temperatures don't show up any more in the promdapter output. I've double checked that my configs are the same between the two.

I've added the catchall as well to the end and no luck here.
Code:
- '(?<MetricName>.*)'


EDIT:

I didn't read far enough into the thread. it's in c:\programdata\ not c:\program files

Corsair iCue software and HWiNFO have issues together;

My own solution for monitoring Corsair product (PSU in my case) was not to use iCue for monitoring it at all. For AIO where you might need more controlling it might not be feasible case.

Do the sensors/readings appear OK in HWiNFO window? If they do, then it's just about configuring PromDapter properly.

Do you get any metrics out, just the Corsair AIO ones are missing?

The Prometheusmapping.yaml is confusing in the setup, because it installs "original default" under C:\Program Files - but that's not the one to edit. The proper one to edit is the one:

C:\ProgramData\PromDapter\Prometheusmapping.yaml

Can you double check that you edited the right one?
 
Last edited:
simple questions, i've installed all but i wanna use grafana on raspberry pi, i've run instance of grafana on rpi, i've imported the json dashboard, i've opened the port 10445 and i can reach it with the ip of my windows source, in Grafana in data sources i've to choose prometheous? and put which server? http://windows.local.ip:10445? because does not work
 
simple questions, i've installed all but i wanna use grafana on raspberry pi, i've run instance of grafana on rpi, i've imported the json dashboard, i've opened the port 10445 and i can reach it with the ip of my windows source, in Grafana in data sources i've to choose prometheous? and put which server? http://windows.local.ip:10445? because does not work


This isn't exactly a grafana forum - if you're looking for walkthroughs or details do some more digging. I've not done a grafana build on an rpi but to give you some basic pointers you'll have to do the following:

- install grafana on a host (this would be your pi)
- put hwinfo with promdapter on a host
- configure hwinfo appropriately (Shared memory)
- point grafana to a prometheus source (http://hwinfo.hosts.ip:10445) that source being your tareget machine
- then go build dashboards with the data.

earlier in the thread someone did put a bit more detail than this, but yea - this is the gist of it.
 
Hi Kallex,

Great job there ! I installed the whole thing (Prometheus, Grafana and your adapter) in a couple of hours and now I can enjoy my GPUs' temps on my iPad :cool:. Thank you very much!

Would you be able to post a bit of info on how to configure the mapping in Prometheusmapping.yaml. I have a few sensors that are not available while I would expect to see them (e.g.
CPU Package Power). I started looking at the code but I'm not a C# developer and I don't know how to build stuff on Windows.

Thanks again

Hello Baryum56,​

Can you please help me do that. I just want to monitor my HWiNFO graphs and stats on my iPad/ iPhone.
 
Hello, following up on this again. I'm playing around now with an old broadwell system, when I look at the metrics exported I see the different cores getting exported as "multiple sources", but no tagged correctly. Example: all of my core temps are "hwi__c", but there is a different output for each core, just all under the same label.

Inline image is my example. I suspect this can be fixed with the promdapter.yml in the programdata folder, but I'm at a loss as to how to fix it.

EDIT:
I guess another way of putting this - can someone teach me how to fish a little bit here? I don't have a good understanding of the yml and how it's regex works. Looking at what is available within HWI I see that values I want, but they're not getting split out into unique names for prometheus.

Additional Edit:
Digging shows me a regexstorm.com/tester but that site is dead now. Can someone help me with pointing out what version of Regex is actually being used here? I see .net but when I select that flavor on regex101.com and use the example strings, I get a response that tells me none of the regex matches.

Example strings from first page of post: https://regex101.com/r/FTkO7X/1


FINAL EDIT:
Turns out I'm crazy? I reverted to 7.72 and noticed improvements, then tried to do a/b testing on 8 vs 7.72. Now I get all the data I'm looking for no matter which version of HWiNFO I'm using
 
Last edited:

Hello Baryum56,​

Can you please help me do that. I just want to monitor my HWiNFO graphs and stats on my iPad/ iPhone.
Hi PMMO

Sorry for the late answer but I hadn't been here for a while.

Did you manage?

Otherwise, it's pretty simple.
1) install the adapter and don't forget to enable the shared memory support in the HWiNFO settings
2) install Prometheus and edit the config file to scrape the right endpoint i.e.
static_configs:
- targets: ["localhost:10445"]
3) install grafana and enable the Prometheus datasource (in Connections, Data sources, Add new data source, prometheus)
4) enjoy from your ipad by connecting to http://ip_of_your_machine:3000

The next step is to ensure that everything starts when you start the computer and IIRC, it's just about starting Prometheus as a service.

Cheers,
B
 
New PC new Problems.
Missing Aquaero Values again. Language still english.
With the RegEx:
Code:
  - name: AquaeroValues
    patterns:
      - '(?<Entity>.*) (?<MetricName>.*)'


I get these values:

Code:
# HELP hwi_alarm_level Alarm Level - Aquaero
hwi_alarm_level{unit="",sensor_type="SENSOR_TYPE_OTHER",sensor="Alarm Level",source="Aquaero",host="PC"} 0
# HELP hwi_fan_amplifier_temp1_c Fan Amplifier Temp1 °C - Aquaero
hwi_fan_amplifier_temp1_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Fan Amplifier Temp1",source="Aquaero",host="PC"} 33.61
# HELP hwi_fan_amplifier_temp2_c Fan Amplifier Temp2 °C - Aquaero
hwi_fan_amplifier_temp2_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Fan Amplifier Temp2",source="Aquaero",host="PC"} 33.61
# HELP hwi_fan_amplifier_temp3_c Fan Amplifier Temp3 °C - Aquaero
hwi_fan_amplifier_temp3_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Fan Amplifier Temp3",source="Aquaero",host="PC"} 32.49
# HELP hwi_fan_amplifier_temp4_c Fan Amplifier Temp4 °C - Aquaero
hwi_fan_amplifier_temp4_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Fan Amplifier Temp4",source="Aquaero",host="PC"} 32.49
# HELP hwi_fan1_current_a Fan1 Current A - Aquaero
hwi_fan1_current_a{unit="A",sensor_type="SENSOR_TYPE_CURRENT",sensor="Fan1 Current",source="Aquaero",host="PC"} 0.592
# HELP hwi_fan1_voltage_v Fan1 Voltage V - Aquaero
hwi_fan1_voltage_v{unit="V",sensor_type="SENSOR_TYPE_VOLT",sensor="Fan1 Voltage",source="Aquaero",host="PC"} 7.7
# HELP hwi_fan2_voltage_v Fan2 Voltage V - Aquaero
hwi_fan2_voltage_v{unit="V",sensor_type="SENSOR_TYPE_VOLT",sensor="Fan2 Voltage",source="Aquaero",host="PC"} 12.05
# HELP hwi_fan3_voltage_v Fan3 Voltage V - Aquaero
hwi_fan3_voltage_v{unit="V",sensor_type="SENSOR_TYPE_VOLT",sensor="Fan3 Voltage",source="Aquaero",host="PC"} 12.05
# HELP hwi_fan4_current_a Fan4 Current A - Aquaero
hwi_fan4_current_a{unit="A",sensor_type="SENSOR_TYPE_CURRENT",sensor="Fan4 Current",source="Aquaero",host="PC"} 0.096
# HELP hwi_fan4_voltage_v Fan4 Voltage V - Aquaero
hwi_fan4_voltage_v{unit="V",sensor_type="SENSOR_TYPE_VOLT",sensor="Fan4 Voltage",source="Aquaero",host="PC"} 8.74
# HELP hwi_soft_temp1_c Soft Temp1 °C - Aquaero
hwi_soft_temp1_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Soft Temp1",source="Aquaero",host="PC"} 50
# HELP hwi_soft_temp2_c Soft Temp2 °C - Aquaero
hwi_soft_temp2_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Soft Temp2",source="Aquaero",host="PC"} 50
# HELP hwi_soft_temp3_c Soft Temp3 °C - Aquaero
hwi_soft_temp3_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Soft Temp3",source="Aquaero",host="PC"} 50
# HELP hwi_soft_temp4_c Soft Temp4 °C - Aquaero
hwi_soft_temp4_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Soft Temp4",source="Aquaero",host="PC"} 50
# HELP hwi_soft_temp5_c Soft Temp5 °C - Aquaero
hwi_soft_temp5_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Soft Temp5",source="Aquaero",host="PC"} 50
# HELP hwi_soft_temp6_c Soft Temp6 °C - Aquaero
hwi_soft_temp6_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Soft Temp6",source="Aquaero",host="PC"} 50
# HELP hwi_soft_temp7_c Soft Temp7 °C - Aquaero
hwi_soft_temp7_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Soft Temp7",source="Aquaero",host="PC"} 50
# HELP hwi_soft_temp8_c Soft Temp8 °C - Aquaero
hwi_soft_temp8_c{unit="°C",sensor_type="SENSOR_TYPE_TEMP",sensor="Soft Temp8",source="Aquaero",host="PC"} 50

But there are many values missing. Like the RPM from the "FAN1-4" or the temperatures from the sensors "Temp4-7". See in Screen.
1741184879366.png

Any hints for this Problem?
 
Hi Kallex,

I am currently trying to query the new PresentMon values. However, for some reason it does not want to work?
I would assume that the following line should work. I have renamed the framerate values.

# PresentMon
- '(?<Entity>PresentMon) (?<MetricName>Framerate_Presented|Framerate_Displayed|Frame Time|GPU Busy)

Do you have any idea what could be the cause?

Edit: Have solved it myself.
How did you solve that?

EDIT: this works when the sensor is using default name.

Code:
(?<Entity_PresentMon>)(?<MetricName>Framerate Presented \(avg\)|Framerate Displayed \(avg\))
 
Last edited:
Back
Top