You've already forked prometheus-fail2ban-exporter
							
							This commit is contained in:
		
							
								
								
									
										56
									
								
								collector/textfile/file.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								collector/textfile/file.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| package textfile | ||||
|  | ||||
| import ( | ||||
| 	"log" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| ) | ||||
|  | ||||
| const namespace = "textfile" | ||||
|  | ||||
| var ( | ||||
| 	metricReadError = prometheus.NewDesc( | ||||
| 		prometheus.BuildFQName(namespace, "", "error"), | ||||
| 		"Checks for errors while reading text files", | ||||
| 		[]string{"path"}, nil, | ||||
| 	) | ||||
| ) | ||||
|  | ||||
| func (c *Collector) collectFileContents() { | ||||
| 	files, err := os.ReadDir(c.folderPath) | ||||
| 	if err != nil { | ||||
| 		log.Printf("error reading directory '%s': %v", c.folderPath, err) | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	for _, file := range files { | ||||
| 		fileName := file.Name() | ||||
| 		if !strings.HasSuffix(strings.ToLower(fileName), ".prom") { | ||||
| 			continue | ||||
| 		} | ||||
| 		c.fileMap[fileName] = &fileData{ | ||||
| 			readErrors: 0, | ||||
| 			fileName:   fileName, | ||||
| 		} | ||||
|  | ||||
| 		fullPath := filepath.Join(c.folderPath, fileName) | ||||
| 		content, err := os.ReadFile(fullPath) | ||||
| 		if err != nil { | ||||
| 			c.appendErrorForPath(fileName) | ||||
| 			log.Printf("error reading contents of file '%s': %v", fileName, err) | ||||
| 		} | ||||
|  | ||||
| 		c.fileMap[fileName].fileContents = content | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (c *Collector) collectFileErrors(ch chan<- prometheus.Metric) { | ||||
| 	for _, f := range c.fileMap { | ||||
| 		ch <- prometheus.MustNewConstMetric( | ||||
| 			metricReadError, prometheus.GaugeValue, float64(f.readErrors), f.fileName, | ||||
| 		) | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user