fluent-plugin-grafana-loki 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81585ccef86ed63befeb100c2387ec09041ea11fdcd5eb6572687f532169acc4
4
- data.tar.gz: d33975553c944a36357168ae7373aafd484e1d47f8eb68c1334913f4fa5b4f70
3
+ metadata.gz: 500a298bd9861429eb29eae445bdaf02f1d8802bcd554e107e9f9c69c9d722f9
4
+ data.tar.gz: cb1ea3ee1ad170544e32819e654916370fc7e80b8197c51fb5efd32877a257f0
5
5
  SHA512:
6
- metadata.gz: 262014b0bb6be9bf6b07434c803ea709476c3cfd3978b6bfead2ce8476e1403ad088c50cad792de29f2a12bd455f315e456c65c008ada33bd9a12cc75f671c78
7
- data.tar.gz: 6368d9b836044b00823ad9ed061dcfb4be8b7ff1132b9a6db40262bbed59096c349281997ab884f29b10590f873397d27d24a9d2eafba30c9a90c6329a6ab385
6
+ metadata.gz: 3d3bfc2e5121fd39744099572fb25761842f9039c23e5229b275ae2ecb4179c3157b2367b6edb80b7e3e29606d724b6e1ee562aad8198ade75d5342cd8ffc23f
7
+ data.tar.gz: 630c02f220ac15861caf3f34dbbc4a5721c96980dbc51bce5dd9bc7dfef93a4a6461640937bcb34cca9028a83220b3e4359fa0173371955f2b06e5ce8fe27295
data/README.md CHANGED
@@ -166,6 +166,22 @@ If using the GrafanaLab's hosted Loki, the username needs to be set to your inst
166
166
  ### tenant
167
167
  Loki is a multi-tenant log storage platform and all requests sent must include a tenant. For some installations the tenant will be set automatically by an authenticating proxy. Otherwise you can define a tenant to be passed through. The tenant can be any string value.
168
168
 
169
+ ### client certificate verification
170
+ Specify a pair of client certificate and private key with `cert` and `key` if a reverse proxy with client certificate verification is configured in front of Loki. `ca_cert` can also be specified if the server uses custom certificate authority.
171
+
172
+ ```
173
+ <match **>
174
+ @type loki
175
+
176
+ url "https://loki"
177
+
178
+ cert /path/to/certificate.pem
179
+ key /path/to/key.key
180
+ ca_cert /path/to/ca.pem
181
+
182
+ ...
183
+ </match>
184
+ ```
169
185
 
170
186
  ### output format
171
187
  Loki is intended to index and group log streams using only a small set of labels. It is not intended for full-text indexing. When sending logs to Loki the majority of log message will be sent as a single log "line".
@@ -40,6 +40,13 @@ module Fluent
40
40
  config_param :username, :string, default: nil
41
41
  config_param :password, :string, default: nil, secret: true
42
42
 
43
+ desc 'Client certificate'
44
+ config_param :cert, :string, default: nil
45
+ config_param :key, :string, default: nil
46
+
47
+ desc 'TLS'
48
+ config_param :ca_cert, :string, default: nil
49
+
43
50
  desc 'Loki tenant id'
44
51
  config_param :tenant, :string, default: nil
45
52
 
@@ -78,6 +85,17 @@ module Fluent
78
85
  @remove_keys.each do |key|
79
86
  @remove_keys_accessors.push(record_accessor_create(key))
80
87
  end
88
+
89
+ @cert = OpenSSL::X509::Certificate.new(File.read(@cert)) if @cert
90
+ @key = OpenSSL::PKey.read(File.read(key)) if @key
91
+
92
+ if !@key.is_a?(OpenSSL::PKey::RSA) && !@key.is_a?(OpenSSL::PKey::DSA)
93
+ raise "Unsupported private key type #{key.class}"
94
+ end
95
+
96
+ if !@ca_cert.nil? && !File.exist?(@ca_cert)
97
+ raise "CA certificate file #{@ca_cert} not found"
98
+ end
81
99
  end
82
100
 
83
101
  def multi_workers_ready?
@@ -110,6 +128,21 @@ module Fluent
110
128
  opts = {
111
129
  use_ssl: uri.scheme == 'https'
112
130
  }
131
+
132
+ if !@cert.nil? && !@key.nil?
133
+ opts = opts.merge(
134
+ verify_mode: OpenSSL::SSL::VERIFY_PEER,
135
+ cert: @cert,
136
+ key: @key
137
+ )
138
+ end
139
+
140
+ if !@ca_cert.nil?
141
+ opts = opts.merge(
142
+ ca_file: @ca_cert
143
+ )
144
+ end
145
+
113
146
  log.debug "sending #{req.body.length} bytes to loki"
114
147
  res = Net::HTTP.start(uri.hostname, uri.port, **opts) { |http| http.request(req) }
115
148
  unless res&.is_a?(Net::HTTPSuccess)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-grafana-loki
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - woodsaj
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-10-29 00:00:00.000000000 Z
12
+ date: 2019-11-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler