Skip to content

Commit 9af9e65

Browse files
committed
improve configuration options and allow to define a host to listen on
1 parent aab86e5 commit 9af9e65

5 files changed

Lines changed: 42 additions & 10 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ SHELL := /bin/bash
1919

2020
GO := GO111MODULE=on go
2121
GO_PATH = $(shell $(GO) env GOPATH)
22-
APP_VERSION_DOT = "1.0.2"
22+
APP_VERSION_DOT = "1.0.3"
2323

2424
.PHONY: all
2525
all: help

config.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ type dump1090MetricCollectorConfig struct {
2323
IsDistanceCalculationEnabled bool
2424
IsAirlineLabellingEnabled bool
2525
IsExposingOriginalFilesEnabled bool
26+
Host string
2627
Port int
2728
ReceiverPositionLat *float64
2829
ReceiverPositionLon *float64
@@ -31,12 +32,12 @@ type dump1090MetricCollectorConfig struct {
3132
}
3233

3334
func newDump1090MetricCollectorConfig(source MetricSource) *dump1090MetricCollectorConfig {
34-
// TODO fully integrate
3535
return &dump1090MetricCollectorConfig{
3636
Source: source,
3737
IsDistanceCalculationEnabled: true,
3838
IsAirlineLabellingEnabled: true,
3939
IsExposingOriginalFilesEnabled: true,
40+
Host: "127.0.0.1",
4041
Port: 8080,
4142
ReceiverPositionLat: nil,
4243
ReceiverPositionLon: nil,

dev/dump1090prom.service

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Type=simple
99
User=pi
1010
Group=pi
1111

12-
ExecStart=/usr/local/bin/dump1090prom --base-path /run/readsb --verbose --port 8081
12+
ExecStart=/usr/local/bin/dump1090prom --base-path /run/readsb --verbose --host 127.0.0.1 --port 8080
1313

1414
NoNewPrivileges=yes
1515
PrivateTmp=yes

main.go

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
"github.com/prometheus/client_golang/prometheus/promhttp"
3131
)
3232

33-
var VERSION = "1.0.2"
33+
var VERSION = "1.0.3"
3434

3535
//go:embed data/wikipedia-airlines.csv
3636
var wikipediaAirlinesCsvFileContent string
@@ -42,8 +42,13 @@ func main() {
4242
file := flag.String("base-path", "", "Path to the directory where aircraft.json and receiver.json are located")
4343
lat := flag.Float64("lat", 0.0, "Custom latitude of the receiver")
4444
lon := flag.Float64("lon", 0.0, "Custom longitude of the receiver")
45+
host := flag.String("host", "0.0.0.0", "Host to listen on (default: 0.0.0.0)")
4546
port := flag.Int("port", 8080, "Port to listen on (default: 8080)")
4647
verbose := flag.Bool("verbose", false, "Enable verbose output")
48+
distanceCalc := flag.Bool("distance-calc", true, "Enable distance calculation to aircraft")
49+
airlineLabel := flag.Bool("airline-label", true, "Enable airline labelling")
50+
exposeFiles := flag.Bool("expose-files", true, "Expose original aircraft.json and receiver.json files")
51+
rollingMapSize := flag.Int("rolling-map-size", 1000, "Default size of the rolling map for caching")
4752
flag.Parse()
4853
log.Printf("Dump1090Prom - A bridge between the dump1090 JSON data and prometheus – Version %s", VERSION)
4954
source := findMetricSource(url, file)
@@ -54,6 +59,19 @@ func main() {
5459
log.Printf("Verbose: %t", *verbose)
5560
CONFIG.IsVerbose = *verbose
5661
}
62+
if distanceCalc != nil {
63+
CONFIG.IsDistanceCalculationEnabled = *distanceCalc
64+
}
65+
if airlineLabel != nil {
66+
CONFIG.IsAirlineLabellingEnabled = *airlineLabel
67+
}
68+
if exposeFiles != nil {
69+
CONFIG.IsExposingOriginalFilesEnabled = *exposeFiles
70+
}
71+
if rollingMapSize != nil {
72+
CONFIG.RollingMapDefaultSize = *rollingMapSize
73+
}
74+
initRollingMaps()
5775
receiverData, err := source.fetchReceiverMetrics()
5876
if err != nil {
5977
log.Printf("Cannot open receiver.json: %v", err)
@@ -81,6 +99,9 @@ func main() {
8199
if port != nil {
82100
CONFIG.Port = *port
83101
}
102+
if host != nil {
103+
CONFIG.Host = *host
104+
}
84105

85106
// Read airline data
86107
data, err := readAirlinesData(wikipediaAirlinesCsvFileContent)
@@ -114,7 +135,7 @@ func main() {
114135
}
115136
}
116137

117-
log.Printf("Starting server on port %d\n", CONFIG.Port)
138+
log.Printf("Starting server on %s:%d\n", CONFIG.Host, CONFIG.Port)
118139

119140
if CONFIG.IsExposingOriginalFilesEnabled {
120141
http.HandleFunc("/aircraft.json", func(w http.ResponseWriter, r *http.Request) {
@@ -131,9 +152,9 @@ func main() {
131152
}
132153

133154
http.Handle("/metrics", promhttp.Handler())
134-
err = http.ListenAndServe(fmt.Sprintf(":%d", CONFIG.Port), nil)
155+
err = http.ListenAndServe(fmt.Sprintf("%s:%d", CONFIG.Host, CONFIG.Port), nil)
135156
if err != nil {
136-
log.Fatalf("failed to start server on port %d: %v", CONFIG.Port, err)
157+
log.Fatalf("failed to start server on %s:%d: %v", CONFIG.Host, CONFIG.Port, err)
137158
}
138159
}
139160

metric.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,11 +342,21 @@ type dump1090Metric struct {
342342
}
343343

344344
// used to keep the flight info cached once found, and limits entries
345-
var flightMap = NewRollingFlightMap(CONFIG.RollingMapDefaultSize)
346-
var flightAirLineMap = NewRollingAirLineMap(CONFIG.RollingMapDefaultSize)
347-
var flightAirLineLabelMap = NewRollingAirLineLabelMap(CONFIG.RollingMapDefaultSize)
345+
var flightMap *RollingFlightMap
346+
var flightAirLineMap *RollingAirlineMap
347+
var flightAirLineLabelMap *RollingAirlineLabelMap
348+
349+
func initRollingMaps() {
350+
if flightMap != nil {
351+
return
352+
}
353+
flightMap = NewRollingFlightMap(CONFIG.RollingMapDefaultSize)
354+
flightAirLineMap = NewRollingAirLineMap(CONFIG.RollingMapDefaultSize)
355+
flightAirLineLabelMap = NewRollingAirLineLabelMap(CONFIG.RollingMapDefaultSize)
356+
}
348357

349358
func newDump1090Metric(source MetricSource) *dump1090Metric {
359+
initRollingMaps()
350360
var metric = &dump1090Metric{
351361
aircraftJsonFilePath: source.getPath(),
352362
}

0 commit comments

Comments
 (0)