hansmi / prometheus-lvm-exporter

Prometheus exporter for LVM metrics.
BSD 3-Clause "New" or "Revised" License
22 stars 5 forks source link

lv_lockargs parsing error #30

Closed raspbeguy closed 1 year ago

raspbeguy commented 1 year ago

Hello, I have a shared VG using sanlock. When scaping this exporter, I have those messages:

2023/06/28 22:21:12 Scrape failed: 28 error(s) occurred:
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:562036736": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:570425344": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:578813952": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:587202560": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:595591168": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:603979776": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:612368384": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:620756992": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:629145600": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:637534208": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:645922816": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:654311424": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:662700032": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:671088640": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:679477248": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:687865856": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:696254464": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:704643072": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:713031680": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:721420288": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:729808896": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:738197504": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:746586112": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:754974720": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:763363328": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:771751936": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:780140544": invalid syntax
* field lv_lockargs: strconv.ParseFloat: parsing "1.0.0:788529152": invalid syntax
hansmi commented 1 year ago

Likely similar to #2 and #29. There are so many fields it's very difficult to find all possibilities (all instances of lv_lockargs in current test data are empty).

I'm happy to submit a fix similar to commit a855fad. Would you be able to provide me with a raw JSON snippet with real values for use in tests? One or two LVs are sufficient.

The command would be as follows (apply sudo, etc. as necessary):

/usr/sbin/lvm lvs --all --config 'global/suffix=false global/units=b report/binary_values_as_numeric=1 report/output_format=json report/buffered=false report/time_format=%s' \
  --configreport lv --options \
  lv_uuid,lv_name,lv_lockargs
raspbeguy commented 1 year ago

Here is the result limited to 2 LV plus the special LV lvmlock (which is used internally by lvmlockd and has no value for lv_lockargs):

  {
      "report": [
          {
              "lv": [
                  {"lv_uuid":"YvnAc9-CH9k-Fq5F-WfTl-oONA-5njZ-t1ChZm", "lv_name":"alpinetest", "lv_lockargs":"1.0.0:570425344"},
                  {"lv_uuid":"FmOsEf-s4PL-qNOn-KSLb-GAIG-kuuP-ErGbTp", "lv_name":"lvtest", "lv_lockargs":"1.0.0:620756992"},
                  {"lv_uuid":"PN2YZw-aWgL-O0Rc-Vkbx-Dx09-lvDp-fhpbXe", "lv_name":"[lvmlock]", "lv_lockargs":""}
              ]
          }
      ]
  }
hansmi commented 1 year ago

I've tagged version 0.3.3 including commit e5018047.