From 57fa85ee7f8c7319f746f238435c4ce6a0c67d95 Mon Sep 17 00:00:00 2001 From: Andre Lorbach Date: Fri, 5 Jul 2013 15:48:17 +0200 Subject: Added command line switch to generate bar charts in statslog-splitter.py --- plugins/impstats/statslog-splitter.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/plugins/impstats/statslog-splitter.py b/plugins/impstats/statslog-splitter.py index 3452e3b3..a32584cb 100755 --- a/plugins/impstats/statslog-splitter.py +++ b/plugins/impstats/statslog-splitter.py @@ -20,13 +20,15 @@ bSingleObjectOutput = True bHelpOutput = False bEnableCharts = False bLogarithmicChart = False +bLineChart = True +bBarChart = False bFilledLineChart = False szChartsFormat = "svg" # Helper variables nLogLineNum = 0 nLogFileCount = 0 -szChartOptionalArgs = "" +szChartAddArgs = "" # Create regex for loglines loglineregexes = [] @@ -62,6 +64,12 @@ for arg in sys.argv[-4:]: szChartsFormat = arg[15:] elif arg.find("--logarithmic") != -1: bLogarithmicChart = True + elif arg.find("--linechart") != -1: + bLineChart = True + bBarChart = False + elif arg.find("--barchart") != -1: + bLineChart = False + bBarChart = True elif arg.find("--filledlinechart") != -1: bFilledLineChart = True elif arg.find("--h") != -1 or arg.find("-h") != -1 or arg.find("--help") != -1: @@ -82,6 +90,8 @@ if bHelpOutput: print " --chartsformat= Format which should be used for Charts." print " Default is svg format" print " --logarithmic Uses Logarithmic to scale the Y Axis, maybe useful in some cases. Default is OFF" + print " --linechart If set, line charts will be generated (Default)." + print " --barchart If set, bar charts will be generated." print " --filledlinechart Use filled lines on Linechart, maybe useful in some cases. Default is OFF" print "\n Sampleline: ./statslog-splitter.py singlefile --input=rsyslog-stats.log --outputdir=/home/user/csvlogs/ --enablecharts --chartsformat=png" elif bSingleObjectOutput: @@ -184,23 +194,29 @@ elif bSingleObjectOutput: if bEnableCharts: # Open HTML Code szHtmlCode = "
" - + + # Add mandetory args + if bLineChart: + szChartAddArgs += " --linechart" + elif bBarChart: + szChartAddArgs += " --barchart" + # Add optional args if bLogarithmicChart: - szChartOptionalArgs += " --logarithmic" + szChartAddArgs += " --logarithmic" if bFilledLineChart: - szChartOptionalArgs += " --filledlinechart" + szChartAddArgs += " --filledlinechart" # Default SVG Format! if szChartsFormat.find("svg") != -1: for outFileName in outputFiles: - iReturn = os.system("./statslog-graph.py " + szChartOptionalArgs + " --input=" + szOutputDir + "/" + outFileName + "") + iReturn = os.system("./statslog-graph.py " + szChartAddArgs + " --input=" + szOutputDir + "/" + outFileName + "") print "Chart SVG generated for '" + outFileName + "': " + str(iReturn) szHtmlCode += "
" + "


" # Otherwise PNG Output! else: for outFileName in outputFiles: - iReturn = os.system("./statslog-graph.py " + szChartOptionalArgs + " --input=" + szOutputDir + "/" + outFileName + " --convertpng") + iReturn = os.system("./statslog-graph.py " + szChartAddArgs + " --input=" + szOutputDir + "/" + outFileName + " --convertpng") print "Chart PNG generated for '" + outFileName + "': " + str(iReturn) szHtmlCode += "" + "

" -- cgit v1.2.3 From fba8609b2a1458686bb90a98a11e134548616310 Mon Sep 17 00:00:00 2001 From: Andre Lorbach Date: Thu, 11 Jul 2013 11:28:39 +0200 Subject: Added new option "chartscalcdelta" to generate charts with delta values instead of cumulative values. Also fixed reading outputfile parameter in statslog-graph.py script. --- plugins/impstats/statslog-graph.py | 35 ++++++++++++++++++++++++++--------- plugins/impstats/statslog-splitter.py | 10 ++++++++-- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/plugins/impstats/statslog-graph.py b/plugins/impstats/statslog-graph.py index 7edafb21..abd4d5c3 100755 --- a/plugins/impstats/statslog-graph.py +++ b/plugins/impstats/statslog-graph.py @@ -28,6 +28,7 @@ bBarChart = False bConvertPng = False bLogarithmicChart = False bFilledLineChart = False +bChartCalcDelta = False # Init variables aFields = [] @@ -44,8 +45,8 @@ iStartSeconds = 0 for arg in sys.argv[-4:]: if arg.find("--input=") != -1: szInput = arg[8:] - elif arg.find("--outputdir=") != -1: - szOutputFile = arg[12:] + elif arg.find("--outputfile=") != -1: + szOutputFile = arg[13:] elif arg.find("--maxdataxlabel=") != -1: nMaxDataCount = int(arg[16:]) elif arg.find("--xlabeldatetime") != -1: @@ -64,6 +65,8 @@ for arg in sys.argv[-4:]: bLogarithmicChart = True elif arg.find("--filledlinechart") != -1: bFilledLineChart = True + elif arg.find("--chartscalcdelta") != -1: + bChartCalcDelta = True elif arg.find("--h") != -1 or arg.find("-h") != -1 or arg.find("--help") != -1: bHelpOutput = True @@ -84,6 +87,7 @@ if bHelpOutput == True: print " --barchart Generates a Barchart (Cannot be used with --linechart)" print " --logarithmic Uses Logarithmic to scale the Y Axis, maybe useful in some cases. Default is OFF" print " --filledlinechart Use filled lines on Linechart, maybe useful in some cases. Default is OFF" + print " --chartscalcdelta If set, charts will use calculated delta values instead of cumulative values." print " --convertpng Generate PNG Output rather than SVG. " print " Default is SVG output." print " --h / -h / --help Displays this help message. \n" @@ -91,16 +95,19 @@ if bHelpOutput == True: else: # Generate output filename if len(szInput) > 0: - if szInput.rfind(".") == -1: - szOutputFile += szInput + ".svg" - else: - szOutputFile += szInput[:-4] + ".svg" + # Only set output filename if not specified + if len(szOutputFile) == 0: + if szInput.rfind(".") == -1: + szOutputFile += szInput + ".svg" + else: + szOutputFile += szInput[:-4] + ".svg" else: print "Error, no input file specified!" sys.exit(0) # Process inputfile inputfile = open(szInput, 'r') + aLineDataPrev = [] # Helper variable for previous line! for line in inputfile.readlines(): if nLineCount == 0: aFields = line.strip().split(";") @@ -137,7 +144,16 @@ else: # Set data field aData[field].append( iTimeStamp - iStartSeconds ) elif iFieldNum > 2: - aData[field].append( int(aLineData[iFieldNum]) ) + # Check if we need to calculate Deltas! + if bChartCalcDelta and len(aLineDataPrev) > 0: + iPreviousVal = int(aLineDataPrev[iFieldNum]) + iCurrentVal = int(aLineData[iFieldNum]) + if iCurrentVal != 0: # Calc DELTA + aData[field].append(iCurrentVal - iPreviousVal) + else: # Don't Calc delta value! + aData[field].append( iCurrentVal ) + else: + aData[field].append( int(aLineData[iFieldNum]) ) else: aData[field].append( aLineData[iFieldNum] ) @@ -147,8 +163,9 @@ else: # Increment counter nDataRecordCound += 1 - #print aData - #sys.exit(0) + # in case deltas need to be calculated, Store current line into previous line + if bChartCalcDelta: + aLineDataPrev = aLineData # Increment counter nLineCount += 1 diff --git a/plugins/impstats/statslog-splitter.py b/plugins/impstats/statslog-splitter.py index a32584cb..84668d9e 100755 --- a/plugins/impstats/statslog-splitter.py +++ b/plugins/impstats/statslog-splitter.py @@ -23,6 +23,7 @@ bLogarithmicChart = False bLineChart = True bBarChart = False bFilledLineChart = False +bChartCalcDelta = False szChartsFormat = "svg" # Helper variables @@ -72,6 +73,8 @@ for arg in sys.argv[-4:]: bBarChart = True elif arg.find("--filledlinechart") != -1: bFilledLineChart = True + elif arg.find("--chartscalcdelta") != -1: + bChartCalcDelta = True elif arg.find("--h") != -1 or arg.find("-h") != -1 or arg.find("--help") != -1: bHelpOutput = True @@ -89,10 +92,11 @@ if bHelpOutput: print " Default is disabled." print " --chartsformat= Format which should be used for Charts." print " Default is svg format" - print " --logarithmic Uses Logarithmic to scale the Y Axis, maybe useful in some cases. Default is OFF" + print " --logarithmic Uses Logarithmic to scale the Y Axis, maybe useful in some cases. Default is OFF." print " --linechart If set, line charts will be generated (Default)." print " --barchart If set, bar charts will be generated." - print " --filledlinechart Use filled lines on Linechart, maybe useful in some cases. Default is OFF" + print " --filledlinechart Use filled lines on Linechart, maybe useful in some cases. Default is OFF." + print " --chartscalcdelta If set, charts will use calculated delta values instead of cumulative values." print "\n Sampleline: ./statslog-splitter.py singlefile --input=rsyslog-stats.log --outputdir=/home/user/csvlogs/ --enablecharts --chartsformat=png" elif bSingleObjectOutput: inputfile = open(szInput, 'r') @@ -206,6 +210,8 @@ elif bSingleObjectOutput: szChartAddArgs += " --logarithmic" if bFilledLineChart: szChartAddArgs += " --filledlinechart" + if bChartCalcDelta: + szChartAddArgs += " --chartscalcdelta" # Default SVG Format! if szChartsFormat.find("svg") != -1: -- cgit v1.2.3 From a593ccddd473258bafa8f7ecd142b9b72b99d2fd Mon Sep 17 00:00:00 2001 From: Andre Lorbach Date: Fri, 12 Jul 2013 11:56:43 +0200 Subject: Removed commandline arg count limit from scripts --- plugins/impstats/statslog-graph.py | 2 +- plugins/impstats/statslog-splitter.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/impstats/statslog-graph.py b/plugins/impstats/statslog-graph.py index abd4d5c3..a154d4b9 100755 --- a/plugins/impstats/statslog-graph.py +++ b/plugins/impstats/statslog-graph.py @@ -42,7 +42,7 @@ iStartSeconds = 0 # Process Arguments -for arg in sys.argv[-4:]: +for arg in sys.argv: # [-4:]: if arg.find("--input=") != -1: szInput = arg[8:] elif arg.find("--outputfile=") != -1: diff --git a/plugins/impstats/statslog-splitter.py b/plugins/impstats/statslog-splitter.py index 84668d9e..dce71a39 100755 --- a/plugins/impstats/statslog-splitter.py +++ b/plugins/impstats/statslog-splitter.py @@ -52,7 +52,7 @@ outputFiles = {} errorlog = open("statslog-splitter.corrupted.log", 'w') # Process Arguments -for arg in sys.argv[-4:]: +for arg in sys.argv: # [-4:]: if arg.find("--input=") != -1: szInput = arg[8:] elif arg.find("--outputdir=") != -1: -- cgit v1.2.3