fluent-plugin-geovis 0.0.2 → 0.0.3
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 +4 -4
- data/fluent-plugin-geovis.gemspec +1 -1
- data/lib/fluent/plugin/filter_geovis.rb +98 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c9f1a5ffa607e0cf5e9d28c26cb4c5b50092f43e750b31b05568d45bc88f3b8
|
4
|
+
data.tar.gz: 8b8c93bfa7360461709e5e4d73cd42ff81a5843d191c8ad43c8cc54cfb9a59cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d26eeeaad6ca0d44968bc46e45bc982ea26b9d01427f4ae0aecd6bb53d03636d5a03e3c2d9754752c2dd61cca1378e5aded3be9c20aaae2de62cb5ca5e402fac
|
7
|
+
data.tar.gz: 2c344b51b54d911baf0760029e7697fca5df2be120b4ff82778d9e979a73b469a191475ab9e223f91c03ea63b6a5103efccb52c33a1a0b05fd6b0962c03d9784
|
@@ -7,16 +7,111 @@ module Fluent
|
|
7
7
|
class GeovisFilter < Fluent::Plugin::Filter
|
8
8
|
Fluent::Plugin.register_filter("geovis", self)
|
9
9
|
|
10
|
+
K8_POD_CA_CERT = 'ca.crt'
|
11
|
+
K8_POD_TOKEN = 'token'
|
12
|
+
desc 'use the k8s insecure port,like 8080,if true then init the http kubeclient'
|
13
|
+
config_param :insecure, :bool, default: false
|
14
|
+
desc 'the kube-apiserver restful url'
|
15
|
+
config_param :kubernetes_url, :string, default: nil
|
16
|
+
desc 'the k8s serviceAccount for comunicating with kube-apiserver'
|
17
|
+
config_param :secret_dir, :string, default: '/var/run/secrets/kubernetes.io/serviceaccount'
|
18
|
+
|
19
|
+
config_param :apiVersion, :string, default: 'v1'
|
20
|
+
config_param :client_cert, :string, default: nil
|
21
|
+
config_param :client_key, :string, default: nil
|
22
|
+
config_param :ca_file, :string, default: nil
|
23
|
+
config_param :verify_ssl, :bool, default: true
|
24
|
+
config_param :bearer_token_file, :string, default: nil
|
25
|
+
|
10
26
|
def configure(conf)
|
11
27
|
super
|
12
|
-
|
28
|
+
|
29
|
+
def log.trace?
|
30
|
+
level == Fluent::Log::LEVEL_TRACE
|
31
|
+
end
|
32
|
+
require 'kubeclient'
|
33
|
+
|
34
|
+
log.info "==================================FetchpodnameFilter configure"
|
35
|
+
|
36
|
+
# Use Kubernetes default service account if we're in a pod.
|
37
|
+
if @kubernetes_url.nil?
|
38
|
+
log.debug "Kubernetes URL is not set - inspecting environment"
|
39
|
+
|
40
|
+
env_host = ENV['KUBERNETES_SERVICE_HOST']
|
41
|
+
env_port = ENV['KUBERNETES_SERVICE_PORT']
|
42
|
+
if !env_host.nil? && !env_port.nil?
|
43
|
+
if insecure
|
44
|
+
@kubernetes_url = "http://#{env_host}:#{env_port}/api"
|
45
|
+
else
|
46
|
+
@kubernetes_url = "https://#{env_host}:#{env_port}/api"
|
47
|
+
end
|
48
|
+
log.debug "Kubernetes URL is now '#{@kubernetes_url}'"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Use SSL certificate and bearer token from Kubernetes service account.
|
53
|
+
if Dir.exist?(@secret_dir)
|
54
|
+
log.debug "Found directory with secrets: #{@secret_dir}"
|
55
|
+
ca_cert = File.join(@secret_dir, K8_POD_CA_CERT)
|
56
|
+
pod_token = File.join(@secret_dir, K8_POD_TOKEN)
|
57
|
+
|
58
|
+
if @ca_file.nil? and File.exist?(ca_cert)
|
59
|
+
log.debug "Found CA certificate: #{ca_cert}"
|
60
|
+
@ca_file = ca_cert
|
61
|
+
end
|
62
|
+
|
63
|
+
if @bearer_token_file.nil? and File.exist?(pod_token)
|
64
|
+
log.debug "Found pod token: #{pod_token}"
|
65
|
+
@bearer_token_file = pod_token
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
if !@kubernetes_url.nil?
|
70
|
+
if insecure
|
71
|
+
@client = Kubeclient::Client.new @kubernetes_url, @apiVersion
|
72
|
+
else
|
73
|
+
ssl_options = {
|
74
|
+
client_cert: !@client_cert.nil? ? OpenSSL::X509::Certificate.new(File.read(@client_cert)) : nil,
|
75
|
+
client_key: !@client_key.nil? ? OpenSSL::PKey::RSA.new(File.read(@client_key)) : nil,
|
76
|
+
ca_file: @ca_file,
|
77
|
+
verify_ssl: @verify_ssl ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
|
78
|
+
}
|
79
|
+
|
80
|
+
auth_options = {}
|
81
|
+
|
82
|
+
if !@bearer_token_file.nil?
|
83
|
+
bearer_token = File.read(@bearer_token_file)
|
84
|
+
auth_options[:bearer_token] = bearer_token
|
85
|
+
end
|
86
|
+
|
87
|
+
log.debug "Creating K8S client"
|
88
|
+
@client = Kubeclient::Client.new @kubernetes_url, @apiVersion,
|
89
|
+
ssl_options: ssl_options,
|
90
|
+
auth_options: auth_options
|
91
|
+
end
|
92
|
+
|
93
|
+
begin
|
94
|
+
@client.api_valid?
|
95
|
+
rescue KubeException => kube_error
|
96
|
+
raise Fluent::ConfigError, "Invalid Kubernetes API #{@apiVersion} endpoint #{@kubernetes_url}: #{kube_error.message}"
|
97
|
+
end
|
98
|
+
end
|
13
99
|
end
|
14
100
|
|
15
|
-
def
|
16
|
-
super
|
101
|
+
def filter_stream(tag, es)
|
17
102
|
puts "==================================FetchpodnameFilter filter"
|
103
|
+
return es if (es.respond_to?(:empty?) && es.empty?) || !es.is_a?(Fluent::EventStream)
|
104
|
+
new_es = Fluent::MultiEventStream.new
|
105
|
+
es.each do |time, record|
|
106
|
+
puts record['uuid']
|
107
|
+
|
108
|
+
new_es.add(time, record)
|
109
|
+
end
|
110
|
+
|
111
|
+
new_es
|
18
112
|
end
|
19
113
|
|
20
114
|
end
|
21
115
|
end
|
22
116
|
end
|
117
|
+
|