You've already forked prometheus-fail2ban-exporter
							
							
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			
		
			
				
	
	
		
			50 lines
		
	
	
		
			1013 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1013 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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++
 | |
| }
 |