I'm running the current master branch of the enviroplus_exporter on a Pi4
The enviroplus exporter is successfully running as a use that is a member of the following groups
4(adm),5(tty),20(dialout),29(audio),44(video),46(plugdev),100(users),105(input),109(netdev),999(spi),998(i2c),997(gpio)
which should give access to the following devices
crw-rw---- 1 root i2c 89, 1 May 7 12:44 /dev/i2c-1
crw-rw---- 1 root dialout 204, 64 May 7 12:44 /dev/ttyAMA0
crw-rw---- 1 root gpio 245, 0 May 7 12:44 /dev/gpiomem
I've configured systems to mask the serial device to not conflict/confuse the exporter
systemctl mask serial-getty@serial0.service
Prometheus is successfully scraping data from the Raspberry Pi - the service is advertised by consul and Prometheus is picking up the service and importing data.
if I view the host directly on 8000/metrics I see what looks like a full set of metrics
HELP python_gc_objects_collected_total Objects collected during gc
HELP pm10_measurements_created Histogram of Particulate Matter of diameter less than 10 micron measurements
TYPE pm10_measurements_created gauge
pm10_measurements_created 1.6519238929128149e+09
however, if I look at what consul is advertising to prometheus (and therefore prometheus scapes) I see the following, which is basically only the pm device stats.
what is the difference between referencing the fqdn / localhost to node_exporter, I couldn't see anything in the code that would impact this behaviour.
it's easy for me to work around this with consul to just specify the health check as fqdn rather than localhost, but by default the health check is localhost (which does make sense as the exporter is running 'locally'
I'm running the current master branch of the enviroplus_exporter on a Pi4
The enviroplus exporter is successfully running as a use that is a member of the following groups 4(adm),5(tty),20(dialout),29(audio),44(video),46(plugdev),100(users),105(input),109(netdev),999(spi),998(i2c),997(gpio)
which should give access to the following devices
crw-rw---- 1 root i2c 89, 1 May 7 12:44 /dev/i2c-1 crw-rw---- 1 root dialout 204, 64 May 7 12:44 /dev/ttyAMA0 crw-rw---- 1 root gpio 245, 0 May 7 12:44 /dev/gpiomem
I've configured systems to mask the serial device to not conflict/confuse the exporter
systemctl mask serial-getty@serial0.service
Prometheus is successfully scraping data from the Raspberry Pi - the service is advertised by consul and Prometheus is picking up the service and importing data.
if I view the host directly on 8000/metrics I see what looks like a full set of metrics
HELP python_gc_objects_collected_total Objects collected during gc
TYPE python_gc_objects_collected_total counter
python_gc_objects_collected_total{generation="0"} 204.0 python_gc_objects_collected_total{generation="1"} 280.0 python_gc_objects_collected_total{generation="2"} 0.0
HELP python_gc_objects_uncollectable_total Uncollectable object found during GC
TYPE python_gc_objects_uncollectable_total counter
python_gc_objects_uncollectable_total{generation="0"} 0.0 python_gc_objects_uncollectable_total{generation="1"} 0.0 python_gc_objects_uncollectable_total{generation="2"} 0.0
HELP python_gc_collections_total Number of times this generation was collected
TYPE python_gc_collections_total counter
python_gc_collections_total{generation="0"} 137.0 python_gc_collections_total{generation="1"} 12.0 python_gc_collections_total{generation="2"} 1.0
HELP python_info Python platform information
TYPE python_info gauge
python_info{implementation="CPython",major="3",minor="9",patchlevel="2",version="3.9.2"} 1.0
HELP process_virtual_memory_bytes Virtual memory size in bytes.
TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 8.2972672e+07
HELP process_resident_memory_bytes Resident memory size in bytes.
TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 3.6417536e+07
HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
TYPE process_start_time_seconds gauge
process_start_time_seconds 1.65192388739e+09
HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 18.23
HELP process_open_fds Number of open file descriptors.
TYPE process_open_fds gauge
process_open_fds 17.0
HELP process_max_fds Maximum number of open file descriptors.
TYPE process_max_fds gauge
process_max_fds 1024.0
HELP temperature Temperature measured (*C)
TYPE temperature gauge
temperature 35.98381768334932
HELP pressure Pressure measured (hPa)
TYPE pressure gauge
pressure 1022.3256846924709
HELP humidity Relative humidity measured (%)
TYPE humidity gauge
humidity 15.286055765417066
HELP oxidising Mostly nitrogen dioxide but could include NO and Hydrogen (Ohms)
TYPE oxidising gauge
oxidising 24667.86708135538
HELP reducing Mostly carbon monoxide but could include H2S, Ammonia, Ethanol, Hydrogen, Methane, Propane, Iso-butane (Ohms)
TYPE reducing gauge
reducing 449435.89743589784
HELP NH3 mostly Ammonia but could also include Hydrogen, Ethanol, Propane, Iso-butane (Ohms)
TYPE NH3 gauge
NH3 413333.33333333355
HELP lux current ambient light level (lux)
TYPE lux gauge
lux 42.724
HELP proximity proximity, with larger numbers being closer proximity and vice versa
TYPE proximity gauge
proximity 0.0
HELP PM1 Particulate Matter of diameter less than 1 micron. Measured in micrograms per cubic metre (ug/m3)
TYPE PM1 gauge
PM1 1.0
HELP PM25 Particulate Matter of diameter less than 2.5 microns. Measured in micrograms per cubic metre (ug/m3)
TYPE PM25 gauge
PM25 2.0
HELP PM10 Particulate Matter of diameter less than 10 microns. Measured in micrograms per cubic metre (ug/m3)
TYPE PM10 gauge
PM10 2.0
HELP cpu_temperature CPU temperature measured (*C)
TYPE cpu_temperature gauge
cpu_temperature 49.173
HELP battery_voltage Voltage of the battery (Volts)
TYPE battery_voltage gauge
battery_voltage 0.0
HELP battery_percentage Percentage of the battery remaining (%)
TYPE battery_percentage gauge
battery_percentage 0.0
HELP oxidising_measurements Histogram of oxidising measurements
TYPE oxidising_measurements histogram
oxidising_measurements_bucket{le="0.0"} 0.0 oxidising_measurements_bucket{le="10000.0"} 0.0 oxidising_measurements_bucket{le="15000.0"} 95.0 oxidising_measurements_bucket{le="20000.0"} 377.0 oxidising_measurements_bucket{le="25000.0"} 1200.0 oxidising_measurements_bucket{le="30000.0"} 1200.0 oxidising_measurements_bucket{le="35000.0"} 1200.0 oxidising_measurements_bucket{le="40000.0"} 1200.0 oxidising_measurements_bucket{le="45000.0"} 1200.0 oxidising_measurements_bucket{le="50000.0"} 1200.0 oxidising_measurements_bucket{le="55000.0"} 1200.0 oxidising_measurements_bucket{le="60000.0"} 1200.0 oxidising_measurements_bucket{le="65000.0"} 1200.0 oxidising_measurements_bucket{le="70000.0"} 1200.0 oxidising_measurements_bucket{le="75000.0"} 1200.0 oxidising_measurements_bucket{le="80000.0"} 1200.0 oxidising_measurements_bucket{le="85000.0"} 1200.0 oxidising_measurements_bucket{le="90000.0"} 1200.0 oxidising_measurements_bucket{le="100000.0"} 1200.0 oxidising_measurements_bucket{le="+Inf"} 1201.0 oxidising_measurements_count 1201.0 oxidising_measurements_sum 2.5425092426756132e+07
HELP oxidising_measurements_created Histogram of oxidising measurements
TYPE oxidising_measurements_created gauge
oxidising_measurements_created 1.6519238929116244e+09
HELP reducing_measurements Histogram of reducing measurements
TYPE reducing_measurements histogram
reducing_measurements_bucket{le="0.0"} 0.0 reducing_measurements_bucket{le="100000.0"} 0.0 reducing_measurements_bucket{le="200000.0"} 0.0 reducing_measurements_bucket{le="300000.0"} 0.0 reducing_measurements_bucket{le="400000.0"} 0.0 reducing_measurements_bucket{le="500000.0"} 1200.0 reducing_measurements_bucket{le="600000.0"} 1200.0 reducing_measurements_bucket{le="700000.0"} 1200.0 reducing_measurements_bucket{le="800000.0"} 1200.0 reducing_measurements_bucket{le="900000.0"} 1200.0 reducing_measurements_bucket{le="1e+06"} 1200.0 reducing_measurements_bucket{le="1.1e+06"} 1200.0 reducing_measurements_bucket{le="1.2e+06"} 1200.0 reducing_measurements_bucket{le="1.3e+06"} 1200.0 reducing_measurements_bucket{le="1.4e+06"} 1200.0 reducing_measurements_bucket{le="1.5e+06"} 1200.0 reducing_measurements_bucket{le="+Inf"} 1201.0 reducing_measurements_count 1201.0 reducing_measurements_sum 5.713870752145402e+08
HELP reducing_measurements_created Histogram of reducing measurements
TYPE reducing_measurements_created gauge
reducing_measurements_created 1.6519238929118214e+09
HELP nh3_measurements Histogram of nh3 measurements
TYPE nh3_measurements histogram
nh3_measurements_bucket{le="0.0"} 0.0 nh3_measurements_bucket{le="10000.0"} 0.0 nh3_measurements_bucket{le="110000.0"} 0.0 nh3_measurements_bucket{le="210000.0"} 0.0 nh3_measurements_bucket{le="310000.0"} 0.0 nh3_measurements_bucket{le="410000.0"} 353.0 nh3_measurements_bucket{le="510000.0"} 1200.0 nh3_measurements_bucket{le="610000.0"} 1200.0 nh3_measurements_bucket{le="710000.0"} 1200.0 nh3_measurements_bucket{le="810000.0"} 1200.0 nh3_measurements_bucket{le="910000.0"} 1200.0 nh3_measurements_bucket{le="1.01e+06"} 1200.0 nh3_measurements_bucket{le="1.11e+06"} 1200.0 nh3_measurements_bucket{le="1.21e+06"} 1200.0 nh3_measurements_bucket{le="1.31e+06"} 1200.0 nh3_measurements_bucket{le="1.41e+06"} 1200.0 nh3_measurements_bucket{le="1.51e+06"} 1200.0 nh3_measurements_bucket{le="1.61e+06"} 1200.0 nh3_measurements_bucket{le="1.71e+06"} 1200.0 nh3_measurements_bucket{le="1.81e+06"} 1200.0 nh3_measurements_bucket{le="1.91e+06"} 1200.0 nh3_measurements_bucket{le="2e+06"} 1200.0 nh3_measurements_bucket{le="+Inf"} 1201.0 nh3_measurements_count 1201.0 nh3_measurements_sum 4.9675200238341254e+08
HELP nh3_measurements_created Histogram of nh3 measurements
TYPE nh3_measurements_created gauge
nh3_measurements_created 1.6519238929121718e+09
HELP pm1_measurements Histogram of Particulate Matter of diameter less than 1 micron measurements
TYPE pm1_measurements histogram
pm1_measurements_bucket{le="0.0"} 183.0 pm1_measurements_bucket{le="5.0"} 1199.0 pm1_measurements_bucket{le="10.0"} 1199.0 pm1_measurements_bucket{le="15.0"} 1199.0 pm1_measurements_bucket{le="20.0"} 1199.0 pm1_measurements_bucket{le="25.0"} 1199.0 pm1_measurements_bucket{le="30.0"} 1199.0 pm1_measurements_bucket{le="35.0"} 1199.0 pm1_measurements_bucket{le="40.0"} 1199.0 pm1_measurements_bucket{le="45.0"} 1199.0 pm1_measurements_bucket{le="50.0"} 1199.0 pm1_measurements_bucket{le="55.0"} 1199.0 pm1_measurements_bucket{le="60.0"} 1199.0 pm1_measurements_bucket{le="65.0"} 1199.0 pm1_measurements_bucket{le="70.0"} 1199.0 pm1_measurements_bucket{le="75.0"} 1199.0 pm1_measurements_bucket{le="80.0"} 1199.0 pm1_measurements_bucket{le="85.0"} 1199.0 pm1_measurements_bucket{le="90.0"} 1199.0 pm1_measurements_bucket{le="95.0"} 1199.0 pm1_measurements_bucket{le="100.0"} 1199.0 pm1_measurements_bucket{le="+Inf"} 1199.0 pm1_measurements_count 1199.0 pm1_measurements_sum 1062.0
HELP pm1_measurements_created Histogram of Particulate Matter of diameter less than 1 micron measurements
TYPE pm1_measurements_created gauge
pm1_measurements_created 1.6519238929124079e+09
HELP pm25_measurements Histogram of Particulate Matter of diameter less than 2.5 micron measurements
TYPE pm25_measurements histogram
pm25_measurements_bucket{le="0.0"} 294.0 pm25_measurements_bucket{le="5.0"} 1199.0 pm25_measurements_bucket{le="10.0"} 1199.0 pm25_measurements_bucket{le="15.0"} 1199.0 pm25_measurements_bucket{le="20.0"} 1199.0 pm25_measurements_bucket{le="25.0"} 1199.0 pm25_measurements_bucket{le="30.0"} 1199.0 pm25_measurements_bucket{le="35.0"} 1199.0 pm25_measurements_bucket{le="40.0"} 1199.0 pm25_measurements_bucket{le="45.0"} 1199.0 pm25_measurements_bucket{le="50.0"} 1199.0 pm25_measurements_bucket{le="55.0"} 1199.0 pm25_measurements_bucket{le="60.0"} 1199.0 pm25_measurements_bucket{le="65.0"} 1199.0 pm25_measurements_bucket{le="70.0"} 1199.0 pm25_measurements_bucket{le="75.0"} 1199.0 pm25_measurements_bucket{le="80.0"} 1199.0 pm25_measurements_bucket{le="85.0"} 1199.0 pm25_measurements_bucket{le="90.0"} 1199.0 pm25_measurements_bucket{le="95.0"} 1199.0 pm25_measurements_bucket{le="100.0"} 1199.0 pm25_measurements_bucket{le="+Inf"} 1199.0 pm25_measurements_count 1199.0 pm25_measurements_sum 1114.0
HELP pm25_measurements_created Histogram of Particulate Matter of diameter less than 2.5 micron measurements
TYPE pm25_measurements_created gauge
pm25_measurements_created 1.6519238929126346e+09
HELP pm10_measurements Histogram of Particulate Matter of diameter less than 10 micron measurements
TYPE pm10_measurements histogram
pm10_measurements_bucket{le="0.0"} 921.0 pm10_measurements_bucket{le="5.0"} 1199.0 pm10_measurements_bucket{le="10.0"} 1199.0 pm10_measurements_bucket{le="15.0"} 1199.0 pm10_measurements_bucket{le="20.0"} 1199.0 pm10_measurements_bucket{le="25.0"} 1199.0 pm10_measurements_bucket{le="30.0"} 1199.0 pm10_measurements_bucket{le="35.0"} 1199.0 pm10_measurements_bucket{le="40.0"} 1199.0 pm10_measurements_bucket{le="45.0"} 1199.0 pm10_measurements_bucket{le="50.0"} 1199.0 pm10_measurements_bucket{le="55.0"} 1199.0 pm10_measurements_bucket{le="60.0"} 1199.0 pm10_measurements_bucket{le="65.0"} 1199.0 pm10_measurements_bucket{le="70.0"} 1199.0 pm10_measurements_bucket{le="75.0"} 1199.0 pm10_measurements_bucket{le="80.0"} 1199.0 pm10_measurements_bucket{le="85.0"} 1199.0 pm10_measurements_bucket{le="90.0"} 1199.0 pm10_measurements_bucket{le="95.0"} 1199.0 pm10_measurements_bucket{le="100.0"} 1199.0 pm10_measurements_bucket{le="+Inf"} 1199.0 pm10_measurements_count 1199.0 pm10_measurements_sum 429.0
HELP pm10_measurements_created Histogram of Particulate Matter of diameter less than 10 micron measurements
TYPE pm10_measurements_created gauge
pm10_measurements_created 1.6519238929128149e+09
however, if I look at what consul is advertising to prometheus (and therefore prometheus scapes) I see the following, which is basically only the pm device stats.
HTTP GET http://localhost:8000/metrics: 200 OK Output: am of nh3 measurements
TYPE nh3_measurements_created gauge
nh3_measurements_created 1.6519238929121718e+09
HELP pm1_measurements Histogram of Particulate Matter of diameter less than 1 micron measurements
TYPE pm1_measurements histogram
pm1_measurements_bucket{le="0.0"} 183.0 pm1_measurements_bucket{le="5.0"} 1179.0 pm1_measurements_bucket{le="10.0"} 1179.0 pm1_measurements_bucket{le="15.0"} 1179.0 pm1_measurements_bucket{le="20.0"} 1179.0 pm1_measurements_bucket{le="25.0"} 1179.0 pm1_measurements_bucket{le="30.0"} 1179.0 pm1_measurements_bucket{le="35.0"} 1179.0 pm1_measurements_bucket{le="40.0"} 1179.0 pm1_measurements_bucket{le="45.0"} 1179.0 pm1_measurements_bucket{le="50.0"} 1179.0 pm1_measurements_bucket{le="55.0"} 1179.0 pm1_measurements_bucket{le="60.0"} 1179.0 pm1_measurements_bucket{le="65.0"} 1179.0 pm1_measurements_bucket{le="70.0"} 1179.0 pm1_measurements_bucket{le="75.0"} 1179.0 pm1_measurements_bucket{le="80.0"} 1179.0 pm1_measurements_bucket{le="85.0"} 1179.0 pm1_measurements_bucket{le="90.0"} 1179.0 pm1_measurements_bucket{le="95.0"} 1179.0 pm1_measurements_bucket{le="100.0"} 1179.0 pm1_measurements_bucket{le="+Inf"} 1179.0 pm1_measurements_count 1179.0 pm1_measurements_sum 1042.0
HELP pm1_measurements_created Histogram of Particulate Matter of diameter less than 1 micron measurements
TYPE pm1_measurements_created gauge
pm1_measurements_created 1.6519238929124079e+09
HELP pm25_measurements Histogram of Particulate Matter of diameter less than 2.5 micron measurements
TYPE pm25_measurements histogram
pm25_measurements_bucket{le="0.0"} 294.0 pm25_measurements_bucket{le="5.0"} 1179.0 pm25_measurements_bucket{le="10.0"} 1179.0 pm25_measurements_bucket{le="15.0"} 1179.0 pm25_measurements_bucket{le="20.0"} 1179.0 pm25_measurements_bucket{le="25.0"} 1179.0 pm25_measurements_bucket{le="30.0"} 1179.0 pm25_measurements_bucket{le="35.0"} 1179.0 pm25_measurements_bucket{le="40.0"} 1179.0 pm25_measurements_bucket{le="45.0"} 1179.0 pm25_measurements_bucket{le="50.0"} 1179.0 pm25_measurements_bucket{le="55.0"} 1179.0 pm25_measurements_bucket{le="60.0"} 1179.0 pm25_measurements_bucket{le="65.0"} 1179.0 pm25_measurements_bucket{le="70.0"} 1179.0 pm25_measurements_bucket{le="75.0"} 1179.0 pm25_measurements_bucket{le="80.0"} 1179.0 pm25_measurements_bucket{le="85.0"} 1179.0 pm25_measurements_bucket{le="90.0"} 1179.0 pm25_measurements_bucket{le="95.0"} 1179.0 pm25_measurements_bucket{le="100.0"} 1179.0 pm25_measurements_bucket{le="+Inf"} 1179.0 pm25_measurements_count 1179.0 pm25_measurements_sum 1094.0
HELP pm25_measurements_created Histogram of Particulate Matter of diameter less than 2.5 micron measurements
TYPE pm25_measurements_created gauge
pm25_measurements_created 1.6519238929126346e+09
HELP pm10_measurements Histogram of Particulate Matter of diameter less than 10 micron measurements
TYPE pm10_measurements histogram
pm10_measurements_bucket{le="0.0"} 915.0 pm10_measurements_bucket{le="5.0"} 1179.0 pm10_measurements_bucket{le="10.0"} 1179.0 pm10_measurements_bucket{le="15.0"} 1179.0 pm10_measurements_bucket{le="20.0"} 1179.0 pm10_measurements_bucket{le="25.0"} 1179.0 pm10_measurements_bucket{le="30.0"} 1179.0 pm10_measurements_bucket{le="35.0"} 1179.0 pm10_measurements_bucket{le="40.0"} 1179.0 pm10_measurements_bucket{le="45.0"} 1179.0 pm10_measurements_bucket{le="50.0"} 1179.0 pm10_measurements_bucket{le="55.0"} 1179.0 pm10_measurements_bucket{le="60.0"} 1179.0 pm10_measurements_bucket{le="65.0"} 1179.0 pm10_measurements_bucket{le="70.0"} 1179.0 pm10_measurements_bucket{le="75.0"} 1179.0 pm10_measurements_bucket{le="80.0"} 1179.0 pm10_measurements_bucket{le="85.0"} 1179.0 pm10_measurements_bucket{le="90.0"} 1179.0 pm10_measurements_bucket{le="95.0"} 1179.0 pm10_measurements_bucket{le="100.0"} 1179.0 pm10_measurements_bucket{le="+Inf"} 1179.0 pm10_measurements_count 1179.0 pm10_measurements_sum 415.0
HELP pm10_measurements_created Histogram of Particulate Matter of diameter less than 10 micron measurements
TYPE pm10_measurements_created gauge
pm10_measurements_created 1.6519238929128149e+09
When I check this, the health check to get the data from consul, is http://localhost:8000/metrics however if I query the fqdn http://fqdn:8000/metrics - I get the full set.
I can verify this on the actual host using curl, eg: curl http://localhost:8000/metrics v curl http://fqdn:8000/metrics
what is the difference between referencing the fqdn / localhost to node_exporter, I couldn't see anything in the code that would impact this behaviour.
it's easy for me to work around this with consul to just specify the health check as fqdn rather than localhost, but by default the health check is localhost (which does make sense as the exporter is running 'locally'