{"record":{"id":"2a95909a0725fafd","repo":"prometheus/node_exporter","slug":"couldn-t-get-ue-count-for-controller-csrow-s-s","errorCode":null,"errorMessage":"couldn't get ue_count for controller/csrow %s/%s: %w","messagePattern":"couldn't get ue_count for controller/csrow (.+?)/(.+?): %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"collector/edac_linux.go","lineNumber":161,"sourceCode":"\t\t\treturn err\n\t\t}\n\t\tfor _, csrow := range csrows {\n\t\t\tcsrowMatch := edacMemCsrowRE.FindStringSubmatch(csrow)\n\t\t\tif csrowMatch == nil {\n\t\t\t\treturn fmt.Errorf(\"csrow string didn't match regexp: %s\", csrow)\n\t\t\t}\n\t\t\tcsrowNumber := csrowMatch[1]\n\n\t\t\tvalue, err = readUintFromFile(filepath.Join(csrow, \"ce_count\"))\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"couldn't get ce_count for controller/csrow %s/%s: %w\", controllerNumber, csrowNumber, err)\n\t\t\t}\n\t\t\tch <- prometheus.MustNewConstMetric(\n\t\t\t\tedacCsRowCECount, prometheus.CounterValue, float64(value), controllerNumber, csrowNumber)\n\n\t\t\tvalue, err = readUintFromFile(filepath.Join(csrow, \"ue_count\"))\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"couldn't get ue_count for controller/csrow %s/%s: %w\", controllerNumber, csrowNumber, err)\n\t\t\t}\n\t\t\tch <- prometheus.MustNewConstMetric(\n\t\t\t\tedacCsRowUECount, prometheus.CounterValue, float64(value), controllerNumber, csrowNumber)\n\n\t\t\tchannelFiles, err := filepath.Glob(csrow + \"/ch*_ce_count\")\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfor _, chFile := range channelFiles {\n\t\t\t\tmatch := edacMemChannelRE.FindStringSubmatch(filepath.Base(chFile))\n\t\t\t\tif match == nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tchannelNumber := match[1]\n\t\t\t\tlabel := edacDimmLabel(csrow, channelNumber)\n\n\t\t\t\tvalue, err = readUintFromFile(chFile)\n\t\t\t\tif err != nil {","sourceCodeStart":143,"sourceCodeEnd":179,"githubUrl":"https://github.com/prometheus/node_exporter/blob/17ddd77c59ba27e1508e9f7894b1e55b44d6aed3/collector/edac_linux.go#L143-L179","documentation":"Identical to the ce_count failure but for the uncorrectable-error counter: readUintFromFile(<csrow>/ue_count) failed. The collector returns this wrapped error with controller and csrow numbers, aborting the remainder of the EDAC scrape. The underlying OS error is preserved via %w.","triggerScenarios":"readUintFromFile(filepath.Join(csrow, \"ue_count\")) returns an error during Update (missing file, permission denied, parse failure).","commonSituations":"EDAC drivers that publish ce_count but not ue_count; SELinux/AppArmor denying read of the attribute; container without host sysfs bind-mounted; non-integer content in ue_count on buggy drivers.","solutions":["Confirm the file exists and is readable: `cat /sys/devices/system/edac/mc/mc0/csrow0/ue_count`.","Fix permissions or SELinux/AppArmor policy so the exporter user can read the sysfs attribute.","In containers, bind-mount /sys from the host read-only.","Update kernel/EDAC driver if the attribute is known to be omitted by your driver version."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const fs = require('fs');\nconst f = '/sys/devices/system/edac/mc/mc0/csrow0/ue_count';\nif (!fs.existsSync(f)) {\n  console.warn('ue_count missing; your EDAC driver may not expose it — disable --collector.edac');\n}","typeGuard":null,"tryCatchPattern":"try {\n  await scrapeNodeExporter();\n} catch (e) {\n  if (String(e).includes('couldn\\'t get ue_count')) {\n    alert('ue_count unreadable: check permissions / SELinux on sysfs EDAC attributes');\n  } else throw e;\n}","preventionTips":["Verify ue_count exists for your EDAC driver before enabling the collector.","Grant read access to sysfs EDAC files (SELinux/AppArmor policy) to the exporter user.","Bind-mount host /sys read-only in containers."],"tags":["linux","edac","sysfs","file-read"],"backgroundTag":"file-read-failed","analyzedSha":"17ddd77c59ba27e1508e9f7894b1e55b44d6aed3","analyzedAt":"2026-09-07T17:54:06.211Z","contentChangedAt":"2026-09-07T17:54:06.211Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}