You've already forked prometheus-fail2ban-exporter
							
							This commit is contained in:
		
							
								
								
									
										49
									
								
								collector/textfile/collector.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								collector/textfile/collector.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| package textfile | ||||
|  | ||||
| import ( | ||||
| 	"log" | ||||
|  | ||||
| 	"git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter/cfg" | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| ) | ||||
|  | ||||
| type Collector struct { | ||||
| 	enabled    bool | ||||
| 	folderPath string | ||||
| 	fileMap    map[string]*fileData | ||||
| } | ||||
|  | ||||
| type fileData struct { | ||||
| 	readErrors   int | ||||
| 	fileName     string | ||||
| 	fileContents []byte | ||||
| } | ||||
|  | ||||
| func NewCollector(appSettings *cfg.AppSettings) *Collector { | ||||
| 	collector := &Collector{ | ||||
| 		enabled:    appSettings.FileCollectorPath != "", | ||||
| 		folderPath: appSettings.FileCollectorPath, | ||||
| 		fileMap:    make(map[string]*fileData), | ||||
| 	} | ||||
| 	if collector.enabled { | ||||
| 		log.Printf("reading textfile metrics from: %s", collector.folderPath) | ||||
| 	} | ||||
| 	return collector | ||||
| } | ||||
|  | ||||
| func (c *Collector) Describe(ch chan<- *prometheus.Desc) { | ||||
| 	if c.enabled { | ||||
| 		ch <- metricReadError | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (c *Collector) Collect(ch chan<- prometheus.Metric) { | ||||
| 	if c.enabled { | ||||
| 		c.collectFileContents() | ||||
| 		c.collectFileErrors(ch) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (c *Collector) appendErrorForPath(path string) { | ||||
| 	c.fileMap[path].readErrors++ | ||||
| } | ||||
		Reference in New Issue
	
	Block a user