Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. local socket = require 'socket'
  2. local metric = require 'metric'
  3. local ngx = require 'ngx'
  4.  
  5. local graphite = {}
  6.  
  7.  
  8. function graphite.new( params )
  9.  
  10. assert (params.host, "require ip");
  11. assert (params.port and type (params.port) == "number", "require port and port must be number");
  12. assert (params.server_name, "require server name");
  13.  
  14. local sock = socket:new({
  15. host = params.host;
  16. port = params.port;
  17. })
  18.  
  19. sock:open()
  20.  
  21. local graphite_data = {
  22. socket = sock;
  23. server = params.server_name;
  24. }
  25.  
  26. setmetatable(graphite_data , graphite)
  27. graphite.__index = graphite
  28. return {
  29. send = function (params) graphite.send(graphite_data, params) end;
  30. log = function (params) graphite.log(graphite_data, params) end;
  31. }
  32.  
  33. end
  34.  
  35. function graphite.send( graph, metric_info, response_time )
  36. local time = ngx.time()
  37. local row = metric_info .. " " .. tostring(response_time) .. " " .. tostring(time) .. "\n"
  38. graph.socket:send(row)
  39. end
  40.  
  41.  
  42. function graphite.log( graph, method, path )
  43. local response_time = ngx.now() - ngx.req.start_time()
  44. metric = metric.qualifier (method, path)
  45. graph:send(graph.server .. '.' .. metric .. '.' .. ngx.status, response_time)
  46. end
  47.  
  48.  
  49. return graphite
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement