3
3
import os
4
4
import time
5
5
import alog
6
- import logging
7
- import logging .config
8
6
import threading
9
7
import yaml
10
8
import click
@@ -43,9 +41,9 @@ def __init__(self, config_file=None):
43
41
self .load_config (config_file )
44
42
if 'logging' in self .config :
45
43
alog .configure (
46
- default_level = self .config ['logging' ].get ('level' , 'debug' ),
47
- filters = self .config ['logging' ].get ('filters' , None ),
48
- formatter = self .config ['logging' ].get ('format' , 'json' )
44
+ default_level = self .config ['logging' ].get ('level' , 'debug' ),
45
+ filters = self .config ['logging' ].get ('filters' , None ),
46
+ formatter = self .config ['logging' ].get ('format' , 'json' )
49
47
)
50
48
else :
51
49
alog .configure (default_level = 'info' , formatter = 'json' )
@@ -72,7 +70,7 @@ def __init__(self, config_file=None):
72
70
self .watcher = Watcher ()
73
71
74
72
def read_secret (self , key ):
75
- # Helper function read secrets from mounted k8s secrets
73
+ """ Helper function read secrets from mounted k8s secrets """
76
74
try :
77
75
with open ("{}/{}" .format (self .secrets_path , key ), 'r' ) as secret :
78
76
value = secret .read ().rstrip ()
@@ -96,7 +94,7 @@ def set_gauge(self, component, target_name, value, pod_name=None, labels=None):
96
94
if pod_name :
97
95
labels ['pod' ] = pod_name
98
96
if 'labels' in self .config ['prometheus' ]:
99
- labels = {** self .config ['prometheus' ]['labels' ],** labels }
97
+ labels = {** self .config ['prometheus' ]['labels' ], ** labels }
100
98
logger .debug ("Entering set_gauge - params: ({}, {}, {}, {})" .format (component , target_name , value , pod_name ))
101
99
logger .debug (labels )
102
100
if type (value ) is float or type (value ) is int :
@@ -115,18 +113,18 @@ def set_gauge(self, component, target_name, value, pod_name=None, labels=None):
115
113
prometheus_target )
116
114
117
115
logger .debug ("Setting gauge %s to %f" ,
118
- self .gauges [prometheus_target ]._name , value )
116
+ self .gauges [prometheus_target ]._name , value )
119
117
try :
120
118
if labels :
121
119
self .gauges [prometheus_target ].labels (** labels ).set (value )
122
120
else :
123
121
self .gauges [prometheus_target ].set (value )
124
- except ValueError as valueException :
125
- self .logger .exception (valueException )
122
+ except ValueError as value_exception :
123
+ self .logger .exception (value_exception )
126
124
if self .config ['graphite' ]['enabled' ]:
127
125
if pod_name :
128
126
metric_name = "{}.{}.{}" .format (component , pod_name , target_name )
129
- else :
127
+ else :
130
128
metric_name = "{}.{}" .format (component , target_name )
131
129
self .graphite .stage (metric_name , value )
132
130
@@ -137,7 +135,7 @@ def inc_counter(self, component, target_name, value, pod_name=None, labels=None)
137
135
if pod_name :
138
136
labels ['pod' ] = pod_name
139
137
if 'labels' in self .config ['prometheus' ]:
140
- labels = {** self .config ['prometheus' ]['labels' ],** labels }
138
+ labels = {** self .config ['prometheus' ]['labels' ], ** labels }
141
139
logger .debug ("Entering inc_counter - params: ({}, {}, {}, {})" .format (component , target_name , value , pod_name ))
142
140
logger .debug (labels )
143
141
if type (value ) is float or type (value ) is int :
@@ -156,20 +154,21 @@ def inc_counter(self, component, target_name, value, pod_name=None, labels=None)
156
154
prometheus_target )
157
155
158
156
logger .debug ("Setting gauge %s to %f" ,
159
- self .gauges [prometheus_target ]._name , value )
157
+ self .gauges [prometheus_target ]._name , value )
160
158
if labels :
161
159
self .gauges [prometheus_target ].labels (** labels ).inc ()
162
160
else :
163
161
self .gauges [prometheus_target ].inc ()
164
162
if self .config ['graphite' ]['enabled' ]:
165
163
if pod_name :
166
164
metric_name = "{}.{}.{}" .format (component , pod_name , target_name )
167
- else :
165
+ else :
168
166
metric_name = "{}.{}" .format (component , target_name )
169
167
self .graphite .stage (metric_name , value )
170
168
171
169
@alog .timed_function (logger .trace )
172
170
def trawl_metrics (self ):
171
+ """ Main loop to trawl for metrics """
173
172
# Initialise
174
173
logger .info ("Laying nets..." )
175
174
nets = []
@@ -183,7 +182,7 @@ def trawl_metrics(self):
183
182
nets .append (ManagerNet (self .config ['nets' ]['manager' ], self ))
184
183
if 'analytics' in self .config ['nets' ] and self .config ['nets' ]['analytics' ].get ('enabled' , True ):
185
184
nets .append (AnalyticsNet (self .config ['nets' ]['analytics' ], self ))
186
-
185
+
187
186
# Start thread to watch if needed (nets need to call watcher.register)
188
187
if self .watcher .enabled :
189
188
watchThread = threading .Thread (target = self .watcher .watch_pods , daemon = True )
@@ -197,17 +196,18 @@ def trawl_metrics(self):
197
196
self .graphite .store ()
198
197
time .sleep (self .frequency )
199
198
199
+
200
200
@click .command ()
201
201
@click .version_option ()
202
202
@click .option ('-c' , '--config' , required = False , envvar = 'CONFIG' ,
203
203
help = "Specifies an alternative config file" ,
204
204
default = None ,
205
205
type = click .Path ())
206
206
def cli (config = None ):
207
+ """ run main trawler application """
207
208
trawler = Trawler (config )
208
209
trawler .trawl_metrics ()
209
210
210
211
211
212
if __name__ == '__main__' :
212
213
cli ()
213
-
0 commit comments