Class: Fluent::Plugin::LokiOutput
- Inherits:
-
Output
- Object
- Output
- Fluent::Plugin::LokiOutput
- Defined in:
- lib/fluent/plugin/out_loki.rb
Overview
Subclass of Fluent Plugin Output
Constant Summary collapse
- DEFAULT_BUFFER_TYPE =
'memory'.freeze
Instance Method Summary collapse
- #configure(conf) ⇒ Object
- #generic_to_loki(chunk) ⇒ Object
- #http_opts(uri) ⇒ Object
-
#write(chunk) ⇒ Object
flush a chunk to loki.
Instance Method Details
#configure(conf) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/fluent/plugin/out_loki.rb', line 59 def configure(conf) compat_parameters_convert(conf, :buffer) super @label_keys = @label_keys.split(/\s*,\s*/) if @label_keys end |
#generic_to_loki(chunk) ⇒ Object
106 107 108 109 110 111 |
# File 'lib/fluent/plugin/out_loki.rb', line 106 def generic_to_loki(chunk) # log.debug("GenericToLoki: converting #{chunk}") streams = chunk_to_loki(chunk) payload = payload_builder(streams) payload end |
#http_opts(uri) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/fluent/plugin/out_loki.rb', line 66 def http_opts(uri) opts = { use_ssl: uri.scheme == 'https' } opts end |
#write(chunk) ⇒ Object
flush a chunk to loki
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/fluent/plugin/out_loki.rb', line 74 def write(chunk) # streams by label payload = generic_to_loki(chunk) body = { 'streams': payload } # add ingest path to loki url uri = URI.parse(url + '/api/prom/push') req = Net::HTTP::Post.new( uri.request_uri ) req.add_field('Content-Type', 'application/json') req.add_field('X-Scope-OrgID', @tenant) if @tenant req.body = Yajl.dump(body) req.basic_auth(@username, @password) if @username opts = { use_ssl: uri.scheme == 'https' } log.info "sending #{req.body.length} bytes" res = Net::HTTP.start(uri.hostname, uri.port, **opts) { |http| http.request(req) } unless res && res.is_a?(Net::HTTPSuccess) res_summary = if res "#{res.code} #{res.} #{res.body}" else 'res=nil' end log.warn "failed to #{req.method} #{uri} (#{res_summary})" log.warn Yajl.dump(body) end end |