Class: ManageEngine::Tracker::DatabaseTracker

Inherits:
DefaultTracker show all
Defined in:
lib/agent/trackers/database_tracker.rb

Instance Attribute Summary

Attributes inherited from DefaultTracker

#child, #endtime, #error, #name, #sibling, #starttime

Instance Method Summary collapse

Methods inherited from DefaultTracker

#==, #duration, #error?, #finish, #hash, #initialize, #setError, #setName

Constructor Details

This class inherits a constructor from ManageEngine::Tracker::DefaultTracker

Instance Method Details

#format(s) ⇒ Object



71
72
73
74
75
# File 'lib/agent/trackers/database_tracker.rb', line 71

def format s
  s.gsub!("\"", '')
  s.gsub!("\n", '')
  s
end

#getAdditionalInfoObject



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/agent/trackers/database_tracker.rb', line 77

def getAdditionalInfo
  info = super
  begin
    if (@query != nil)
      if (info == nil)
        info = Hash.new
      end
      
      obj = ManageEngine::APMObjectHolder.instance
      
      info["query"] = !obj.config.sql_capture_params ? getCompleteQuery : getObfuscatedQuery
      # send only one backtrace, Exception backtrace have more priority
      if (@backtrace != nil && @error == nil)
        info["stacktrace"] = obj.util.formatStacktrace(@backtrace)
      end
    end
  rescue Exception => e
    @logger.logException("Error updating additionalInfo in dbTracker.", e)
  end
          
  info
end

#getCompleteQueryObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/agent/trackers/database_tracker.rb', line 25

def getCompleteQuery
  begin
    query = @query # Maintaining the original query
    if query != nil && @binds != nil && @binds.length > 0
      @binds.each do |ar|
        if query.index("?") != nil
          query["?"]=ar.value.to_s
        end
      end
      return query
    end
  rescue Exception=>exe
    @logger.logException "Not severe -#{exe.message}",exe
  end
  @query
end

#getObfuscatedQueryObject



21
22
23
# File 'lib/agent/trackers/database_tracker.rb', line 21

def getObfuscatedQuery
  ManageEngine::APMObjectHolder.instance.util.parametrizeQuery @query
end

#getQueryInfoObject

Returns array [db_operation, tablename]



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/agent/trackers/database_tracker.rb', line 43

def getQueryInfo
  sql = @query
  sql.strip!
  sql.downcase!
  sqlArr = sql.split(" ")
  
  begin
    tableName = case sqlArr[0]
           when "select" then sqlArr[sqlArr.index("from")+1]
           when "insert" then sqlArr[sqlArr.index("into")+1]
           when "update" then sqlArr[1]
           when "delete" then sqlArr[sqlArr.index("from")+1]
           when "create" then sqlArr[1] + sqlArr[2]
           when "alter" then sqlArr[1] + sqlArr[2]
           when "drop" then sqlArr[1] + sqlArr[2]
           when "show" then sqlArr[1] 
           when "describe" then sqlArr[1] 
           else "-"
           end
    
    return [sqlArr[0], tableName]
  
  rescue Exception=>e
    @logger.logException "#{e.message}",e
    return [sqlArr[0], '-']
  end
end

#getRawQueryObject



17
18
19
# File 'lib/agent/trackers/database_tracker.rb', line 17

def getRawQuery
  @query
end

#params(binds = []) ⇒ Object



9
10
11
# File 'lib/agent/trackers/database_tracker.rb', line 9

def params(binds = [])
  @binds = binds
end

#sql(query) ⇒ Object



5
6
7
# File 'lib/agent/trackers/database_tracker.rb', line 5

def sql(query)
  @query = format(query.dup)
end

#sqlBacktrace(backtrace) ⇒ Object



13
14
15
# File 'lib/agent/trackers/database_tracker.rb', line 13

def sqlBacktrace(backtrace)
  @backtrace = backtrace
end

#to_sObject



101
102
103
# File 'lib/agent/trackers/database_tracker.rb', line 101

def to_s
  "#{@name} - #{@query}"
end