34
34
from queryHandler import SensorConfig
35
35
from __version__ import __version__
36
36
from messages import ERR , MSG
37
+ from bridgeLogger import configureLogging
37
38
from confParser import getSettings
38
39
from collections import defaultdict
39
40
from timeit import default_timer as timer
@@ -82,10 +83,10 @@ def __initializeTables(self):
82
83
foundItems = len (self .metaData .allParents ) - 1
83
84
sensors = self .metaData .sensorsSpec .keys ()
84
85
self .logger .info (MSG ['MetaSuccess' ])
85
- self .logger .info (MSG ['ReceivAttrValues' ].format ('parents totally' , foundItems ))
86
+ self .logger .details (MSG ['ReceivAttrValues' ].format ('parents totally' , foundItems ))
86
87
self .logger .debug (MSG ['ReceivAttrValues' ].format ('parents' , ", " .join (self .metaData .allParents )))
87
88
self .logger .info (MSG ['ReceivAttrValues' ].format ('sensors' , ", " .join (sensors )))
88
- self .logger .info (MSG ['TimerInfo' ].format ('Metadata' , str (tend - tstart )))
89
+ self .logger .details (MSG ['TimerInfo' ].format ('Metadata' , str (tend - tstart )))
89
90
90
91
def update (self ):
91
92
'''Read the topology from ZIMon and update
@@ -98,7 +99,7 @@ def update(self):
98
99
if not (self .metaData and self .metaData .topo ):
99
100
self .logger .error (MSG ['NoData' ]) # Please check the pmcollector is properly configured and running.
100
101
raise cherrypy .HTTPError (404 , MSG [404 ])
101
- self .logger .info (MSG ['MetaSuccess' ])
102
+ self .logger .details (MSG ['MetaSuccess' ])
102
103
self .logger .debug (MSG ['ReceivAttrValues' ].format ('parents' , ", " .join (self .metaData .allParents )))
103
104
self .logger .debug (MSG ['TimerInfo' ].format ('Metadata' , str (tend - tstart )))
104
105
return ({'msg' : MSG ['MetaSuccess' ]})
@@ -252,14 +253,14 @@ def _getTimeMultiplier(self, timeunit):
252
253
def _retrieveData (self , query , dsOp = None , dsInterval = None ):
253
254
'''Executes zimon query and returns results'''
254
255
255
- self .logger .info (MSG ['RunQuery' ].format (query ))
256
+ self .logger .details (MSG ['RunQuery' ].format (query ))
256
257
tstart = timer ()
257
258
res = self .qh .runQuery (query )
258
259
tend = timer ()
259
- self .logger .info (MSG ['TimerInfo' ].format ('runQuery: \" ' + str (query ) + '\" ' , str (tend - tstart )))
260
+ self .logger .details (MSG ['TimerInfo' ].format ('runQuery: \" ' + str (query ) + '\" ' , str (tend - tstart )))
260
261
if res is None :
261
262
return
262
- self .logger .info ("res.rows length: {}" .format (len (res .rows )))
263
+ self .logger .details ("res.rows length: {}" .format (len (res .rows )))
263
264
rows = res .rows
264
265
if dsOp and dsInterval and len (res .rows ) > 1 :
265
266
rows = res .downsampleResults (dsInterval , dsOp )
@@ -305,7 +306,7 @@ def _createZimonQuery(self, q, start, end):
305
306
self .logger .error (MSG ['MetricErr' ].format (inMetric ))
306
307
raise cherrypy .HTTPError (404 , MSG ['MetricErr' ].format (inMetric ))
307
308
else :
308
- self .logger .info (MSG ['ReceivedQuery' ].format (str (q ), str (start ), str (end )))
309
+ self .logger .details (MSG ['ReceivedQuery' ].format (str (q ), str (start ), str (end )))
309
310
310
311
# add tagName or metric using the same method. There is no 'NOOP' option in openTSDB
311
312
query .addMetric (inMetric , q .get ('aggregator' ))
@@ -342,13 +343,13 @@ def _createZimonQuery(self, q, start, end):
342
343
dsBucketSize = self ._calc_bucketSize (q .get ('downsample' ))
343
344
if not dsOp and dsBucketSize > bucketSize :
344
345
bucketSize = dsBucketSize
345
- self .logger .info (MSG ['BucketsizeChange' ].format (q .get ('downsample' ), bucketSize ))
346
+ self .logger .details (MSG ['BucketsizeChange' ].format (q .get ('downsample' ), bucketSize ))
346
347
elif dsBucketSize <= bucketSize :
347
348
dsOp = dsInterval = None
348
349
else :
349
350
dsInterval = int (dsBucketSize / bucketSize )
350
351
else :
351
- self .logger .info (MSG ['BucketsizeToPeriod' ].format (bucketSize ))
352
+ self .logger .details (MSG ['BucketsizeToPeriod' ].format (bucketSize ))
352
353
353
354
query .setBucketSize (bucketSize )
354
355
@@ -534,33 +535,13 @@ def processFormJSON(entity):
534
535
cherrypy .serving .request .json = json .loads ('{}' )
535
536
536
537
537
- def configureLogging (logPath , logfile , loglevel ):
538
- # create the logfile path if needed
539
- if not os .path .exists (logPath ):
540
- os .makedirs (logPath )
541
- logfile = os .path .join (logPath , logfile )
542
-
543
- # prepare the logger
544
- logger = logging .getLogger ('zimonGrafanaIntf' )
545
- rfhandler = logging .handlers .RotatingFileHandler (logfile , 'a' , 1000000 , 5 ) # 5 x 1M files
546
- formatter = logging .Formatter ('%(asctime)s - %(name)s - %(levelname)s - %(message)s' )
547
- rfhandler .setFormatter (formatter )
548
- logger .addHandler (rfhandler )
549
- try :
550
- logger .setLevel (loglevel )
551
- except (ValueError , TypeError ):
552
- logger .setLevel (logging .INFO )
553
- logger .propagate = False # prevent propagation to default (console) logger
554
- return logger
555
-
556
-
557
538
def validateCollectorConf (args , logger ):
558
539
559
540
# if not (args.get('server') == 'localhost') and not (args.get('server') == '127.0.0.1'):
560
541
try :
561
542
s = socket .socket ()
562
543
s .connect ((args .get ('server' ), args .get ('serverPort' )))
563
- print (MSG ['CollectorConnInfo' ])
544
+ logger . info (MSG ['CollectorConnInfo' ])
564
545
finally :
565
546
s .close ()
566
547
# else:
@@ -570,7 +551,7 @@ def validateCollectorConf(args, logger):
570
551
# raise Exception("Invalid serverPort specified. Try with: %s" % str(foundPorts))
571
552
# elif foundPorts[1] and not (args.get('serverPort') == int(foundPorts[1])):
572
553
# args['serverPort'] = int(foundPorts[1])
573
- # logger.info (MSG['Query2port'].format(args['serverPort']))
554
+ # logger.details (MSG['Query2port'].format(args['serverPort']))
574
555
575
556
576
557
def updateCherrypyConf (args ):
@@ -619,24 +600,21 @@ def main(argv):
619
600
620
601
# prepare metadata
621
602
try :
622
- print ("\n " + MSG ['BridgeVersionInfo' ].format (__version__ ))
623
603
logger .info ("%s" , MSG ['BridgeVersionInfo' ].format (__version__ ))
624
- logger .info ('zimonGrafanaItf invoked with parameters:\n %s' , "\n " .join ("{}={}" .format (k , v ) for k , v in args .items ()))
604
+ logger .details ('zimonGrafanaItf invoked with parameters:\n %s' , "\n " .join ("{}={}" .format (k , v ) for k , v in args .items ()))
625
605
validateCollectorConf (args , logger )
626
606
mdHandler = MetadataHandler (logger , args .get ('server' ), args .get ('serverPort' ))
627
- print (MSG ['MetaSuccess' ])
628
- print (MSG ['ReceivAttrValues' ].format ('sensors' , "\n \n " + "\t " .join (mdHandler .metaData .sensorsSpec .keys ())))
629
607
except (AttributeError , ValueError , TypeError ) as e :
630
- logger .exception ('%s' , MSG ['IntError' ].format (str (e )))
631
- print (MSG ['MetaError' ])
608
+ logger .details ('%s' , MSG ['IntError' ].format (str (e )))
609
+ logger . error (MSG ['MetaError' ])
632
610
return
633
611
except (Exception , IOError ) as e :
634
- logger .exception ('%s' , MSG ['IntError' ].format (str (e )))
635
- print (MSG ['CollectorErr' ])
612
+ logger .details ('%s' , MSG ['IntError' ].format (str (e )))
613
+ logger . errort (MSG ['CollectorErr' ])
636
614
return
637
615
except (OSError ) as e :
638
- logger .exception ('%s' , MSG ['IntError' ].format (str (e )))
639
- print ("ZiMon sensor configuration file not found" )
616
+ logger .details ('%s' , MSG ['IntError' ].format (str (e )))
617
+ logger . error ("ZiMon sensor configuration file not found" )
640
618
return
641
619
642
620
ph = PostHandler (logger , mdHandler )
@@ -681,25 +659,25 @@ def main(argv):
681
659
}
682
660
)
683
661
684
- print (MSG ['sysStart' ].format (sys .version , cherrypy .__version__ ))
685
662
logger .info ("%s" , MSG ['sysStart' ].format (sys .version , cherrypy .__version__ ))
686
663
687
664
try :
688
665
cherrypy .engine .start ()
689
- print ("server started" )
666
+ logger .info ("server started" )
667
+ logger .debug ("Server started PID: {}" .format (os .getpid ()))
690
668
cherrypy .engine .block ()
691
- except TypeError :
692
- print ("Server request could not be proceed. Reason:" )
669
+ except TypeError as e :
670
+ logger . error ("Server request could not be proceed. Reason: {}" . format ( e ) )
693
671
raise cherrypy .HTTPError (500 , ERR [500 ])
694
- except IOError :
695
- print ("STOPPING: Server request could not be proceed. Reason:" )
672
+ except OSError as e :
673
+ logger . error ("STOPPING: Server request could not be proceed. Reason: {}" . format ( e ) )
696
674
cherrypy .engine .stop ()
697
675
cherrypy .engine .exit ()
698
676
699
677
ph = None
700
678
gh = None
701
679
702
- print ("server stopped" )
680
+ logger . warn ("server stopped" )
703
681
704
682
705
683
if __name__ == '__main__' :
0 commit comments