Advertisement
Guest User

log-local.cfg updater

a guest
Jan 19th, 2014
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. On error Resume Next
  2.  
  3. Const ForReading = 1
  4.  
  5. ' update this version each time you update elements of config items dictionary
  6. dim strVersionTag :: strVersionTag = "# log-local.cfg v1.5"
  7.  
  8. ' determine path to SplunkHome to handle x32 universal forwarder on x64 platform
  9. dim strSplunkHome :: strSplunkHome = left(wscript.scriptfullname,instr(1,ucase(wscript.scriptfullname),"\ETC\")-1)
  10.  
  11. dim strDefault  :: strDefault = strSplunkHome & "\etc\" & "log.cfg"
  12. dim strLocal  :: strLocal = strSplunkHome & "\etc\" & "log-local.cfg"
  13.  
  14. dim strComputerName :: strComputername = ucase(GetEnvironmentValue("Process","COMPUTERNAME"))
  15.  
  16. ' if default log.cfg file does not exist, quit
  17. if CheckFileExists(strDefault) = False then
  18.     wscript.echo now() & "," & strComputerName & "," & "FATAL" & "," & strDefault & " does not exist!"
  19.     wscript.quit
  20. end if
  21.  
  22. ' if local log.cfg file does not exist, create it from default instance
  23. if CheckFileExists(strLocal) = False then
  24.     wscript.echo now() & "," & strComputerName & "," & "INFO" & "," & "Copied default config file to " & strLocal & "."
  25.     call copyFile(strDefault,strLocal)
  26. end if
  27.  
  28. ' check to see if local log file has already been updated to expected version
  29. If IsTagPresent(strLocal,strVersionTag) = True then
  30.     ' configuration file already has logging level preferences, quit
  31.     wscript.echo now() & "," & strComputerName & "," & "INFO" & "," & "Local config file already configured."
  32.     wscript.quit
  33. else
  34.     wscript.echo now() & "," & strComputerName & "," & "INFO" & "," & "Local config needs updating."
  35.     ' read in dictionary of desired configurations
  36.     Dim objDictionary
  37.     Set objDictionary = CreateObject("Scripting.Dictionary")
  38.     call LoadDesiredConfigs()
  39.    
  40.     ' enumerate lines in local log file and replace configurations as needed
  41.     call SetConfig(strLocal,objDictionary)
  42.    
  43.     ' tag local log file with version number to skip changes on next pass  if already configured.
  44.     call SetVersion(strLocal,strVersionTag)
  45.     wscript.echo now() & "," & strComputerName & "," & "INFO" & "," & "Tagged " & strLocal & " with " & strVersionTag & "."
  46. end if
  47.  
  48. Sub LoadDesiredConfigs()
  49.  
  50.     ' JIRA XXX - Reduce size of log files from 25m to 5m [done]
  51.     objDictionary.Add "appender.A1.maxFileSize","5000000"      
  52.     objDictionary.Add "appender.license_usage.maxFileSize","5000000"
  53.     objDictionary.Add "appender.A4.maxFileSize","5000000"
  54.     objDictionary.Add "appender.metrics.maxFileSize","5000000"
  55.     objDictionary.Add "appender.audittrail.maxFileSize","5000000"
  56.     objDictionary.Add "appender.licenseaudit.maxFileSize","5000000"
  57.     objDictionary.Add "appender.accesslog.maxFileSize","5000000"
  58.     objDictionary.Add "appender.scheduler.maxFileSize","5000000"
  59.     objDictionary.Add "appender.remotesearches.maxFileSize","5000000"
  60.    
  61.     ' JIRA XXX - Reduce count of log files to retain from 5 to 2 [done]
  62.     objDictionary.Add "appender.A1.maxBackupIndex","2"     
  63.     objDictionary.Add "appender.license_usage.maxBackupIndex","2"
  64.     objDictionary.Add "appender.A4.maxBackupIndex","2"
  65.     objDictionary.Add "appender.metrics.maxBackupIndex","2"
  66.     objDictionary.Add "appender.audittrail.maxBackupIndex","2"
  67.     objDictionary.Add "appender.licenseaudit.maxBackupIndex","2"
  68.     objDictionary.Add "appender.accesslog.maxBackupIndex","2"
  69.     objDictionary.Add "appender.scheduler.maxBackupIndex","2"
  70.     objDictionary.Add "appender.remotesearches.maxBackupIndex","2"
  71.    
  72.     ' JIRA XXX - Reduce verbosity of logging for sub-critical components [done]
  73.     objDictionary.Add "category.loader","INFO"  'Should always be INFO!
  74.     objDictionary.Add "category.DC:DeploymentClient","INFO" 'Tough to decide between INFO and WARN.  Matches in community!
  75.     objDictionary.Add "category.HttpPubSubConnection","INFO" 'Useful for profiling missing or busy splunk web.
  76.     objDictionary.Add "category.DC:PhonehomeThread","WARN"  'Tough to decide between INFO and WARN.  
  77.     objDictionary.Add "category.DC:UpdateServerclassHandler","WARN"
  78.     objDictionary.Add "category.DeployedServerclass","WARN"
  79.     objDictionary.Add "category.BatchReader","WARN"
  80.     objDictionary.Add "category.ThruputProcessor","WARN"
  81.     objDictionary.Add "category.DC:HandshakeReplyHandler","WARN"
  82.     objDictionary.Add "category.ExecProcessor","WARN"
  83.     objDictionary.Add "category.TailingProcessor","WARN"
  84.     objDictionary.Add "category.PipelineComponent","WARN"
  85.     objDictionary.Add "category.TcpOutputProc","WARN"
  86.     objDictionary.Add "category.ModularInputs","WARN"
  87.     objDictionary.Add "category.TcpInputProc","WARN"
  88.     objDictionary.Add "category.TcpInputConfig","WARN"
  89.     objDictionary.Add "category.IndexProcessor","WARN"
  90.     objDictionary.Add "category.DS_DC_Common","WARN"
  91.     objDictionary.Add "category.DeployedApplication","WARN"
  92.     objDictionary.Add "category.ClusteringMgr","WARN"
  93.     objDictionary.Add "category.SpecFiles","WARN"
  94.     objDictionary.Add "category.LicenseMgr","WARN"
  95.     objDictionary.Add "category.LMTracker","WARN"
  96.     objDictionary.Add "category.LMSlaveInfo","WARN"
  97.     objDictionary.Add "category.LMStackMgr","WARN"
  98.     objDictionary.Add "category.LMConfig","WARN"
  99.     objDictionary.Add "category.BundlesSetup","WARN"
  100.     objDictionary.Add "category.ServerConfig","WARN"   
  101. End Sub
  102.  
  103. Function IsTagPresent(strLocal,strTagLine)
  104.     IsTagPresent = False
  105.     Set objFSO = CreateObject("Scripting.FileSystemObject")
  106.     Dim arrLogFile()
  107.     i = 0
  108.     Set objTextFile = objFSO.OpenTextFile(strLocal, ForReading)
  109.     Do Until objTextFile.AtEndOfStream
  110.         Redim Preserve arrLogFile(i)
  111.         arrLogFile(i) = objTextFile.ReadLine
  112.         i = i + 1
  113.     Loop
  114.     objTextFile.Close  
  115.     for i=0 to ubound(arrLogFile)
  116.         strNextLine = arrLogFile(i)
  117.         if instr(1,strNextLine,strTagLine)=1 then
  118.             IsTagPresent = True
  119.         end if
  120.         strLastLine = strNextLine
  121.     next
  122. End Function
  123.  
  124. Function SetVersion(strLocal,strTagLine)
  125.     arrTagLine = split(strTagLine," ")
  126.     strTagPrefix = arrTagLine(0) & " " & arrTagLine(1)
  127.     Set objFSO = CreateObject("Scripting.FileSystemObject")
  128.     Dim arrLogFile()
  129.     i = 0
  130.     Set objTextFile = objFSO.OpenTextFile(strLocal, ForReading)
  131.     Do Until objTextFile.AtEndOfStream
  132.         Redim Preserve arrLogFile(i)
  133.         arrLogFile(i) = objTextFile.ReadLine
  134.         i = i + 1
  135.     Loop
  136.     objTextFile.close
  137.     objFSO.DeleteFile(strLocal)
  138.  
  139.     Set objTextFile = objFSO.CreateTextFile(strLocal, True)        
  140.    
  141.     for i=0 to ubound(arrLogFile)
  142.         strNextLine = arrLogFile(i)
  143.         if instr(1,strNextLine,strTagPrefix)=1 or instr(1,strNextLine,"# log.cfg")=1 then
  144.             objTextFile.WriteLine strTagLine
  145.         else
  146.             objTextFile.WriteLine strNextLine
  147.         end if
  148.     next'                  
  149.    
  150.     objTextFile.close
  151. End Function
  152.  
  153. Function SetConfig(strLocal,objDictionary)
  154.     Set objFSO = CreateObject("Scripting.FileSystemObject")
  155.     Dim arrLogFile()
  156.     i = 0
  157.     Set objTextFile = objFSO.OpenTextFile(strLocal, ForReading)
  158.     Do Until objTextFile.AtEndOfStream
  159.         Redim Preserve arrLogFile(i)
  160.         arrLogFile(i) = objTextFile.ReadLine
  161.         i = i + 1
  162.     Loop
  163.     objTextFile.close
  164.     objFSO.DeleteFile(strLocal)
  165.  
  166.     Set objTextFile = objFSO.CreateTextFile(strLocal, True)
  167.    
  168.     for i=0 to ubound(arrLogFile)
  169.         strNextLine = arrLogFile(i)
  170.         colKeys = objDictionary.Keys
  171.         for each strKey in colKeys
  172.             if instr(1,ucase(strNextLine),ucase(strKey) & "=")<>0 then
  173.                 strBefore = strNextLine
  174.                 strNextLine = left(strNextLine,instr(1,strNextLine,"=")) & objDictionary.Item(strKey)
  175.                 strAfter = strNextLine
  176.                 if strBefore <> strAfter then
  177. '                   wscript.echo "strBefore: " & strBefore
  178. '                   wscript.echo "strAfter:  " & strAfter
  179.                     wscript.echo now() & "," & strComputerName & "," & "INFO" & "," & "Set " & strAfter
  180.                 end if
  181.             end if
  182.         next
  183.         objTextFile.WriteLine strNextLine
  184.     next'              
  185.     objTextFile.close
  186. End Function
  187.  
  188.  
  189. Function CheckFileExists(strFile)
  190.    Set objFSO = CreateObject("Scripting.FileSystemObject")
  191.    CheckFileExists = objFSO.FileExists(strFile)
  192. End Function
  193.  
  194. Function CopyFile(strSourceFile,strDestFile)
  195.     Const OverwriteExisting = TRUE
  196.     Set objFSO = CreateObject("Scripting.FileSystemObject")
  197.     objFSO.CopyFile strSourceFile , strDestFile, OverwriteExisting
  198. End Function
  199.  
  200. Function GetEnvironmentValue(strValueType,strValueName)
  201.     ' value types include: System, User, Volatile, or Process
  202.     Set WshShell = WScript.CreateObject("WScript.Shell")
  203.     Set WshSysEnv = WshShell.Environment(strValueType)
  204.     GetEnvironmentValue = WshSysEnv(strValueName)
  205. End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement