Skip to content

Instantly share code, notes, and snippets.

@richm
Created July 13, 2018 18:36
Show Gist options
  • Save richm/d6a0e40d7796ef0c576f87fcabae8627 to your computer and use it in GitHub Desktop.
Save richm/d6a0e40d7796ef0c576f87fcabae8627 to your computer and use it in GitHub Desktop.
test connections from fluentd to elasticsearch
require 'elasticsearch'
require 'excon'
class ESConnTester
def initialize(host='logging-es', port=9200)
@host = host
@port = port
@scheme = 'https'
@client_key = '/etc/fluent/keys/key'
@client_cert = '/etc/fluent/keys/cert'
@client_key_pass = nil
@reload_connections = false
@reload_on_failure = false
@resurrect_after = 60
@transport_logger = Logger.new(STDERR)
@content_type = "application/json"
@request_timeout = 2147483648
@ssl_verify = true
@ca_file = '/etc/fluent/keys/ca'
@ssl_version = :TLSv1_2
@user = 'fluentd'
@password = 'changeme'
end
def get_connection_options
hosts = [{host: @host, port: @port, scheme: @scheme, user: @user, password: @password}]
{ hosts: hosts }
end
def client
excon_options = { client_key: @client_key, client_cert: @client_cert, client_key_pass: @client_key_pass }
adapter_conf = lambda {|f| f.adapter :excon, excon_options }
transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(get_connection_options.merge(
options: {
reload_connections: @reload_connections,
reload_on_failure: @reload_on_failure,
resurrect_after: @resurrect_after,
retry_on_failure: 5,
logger: @transport_logger,
transport_options: {
headers: { 'Content-Type' => @content_type.to_s },
request: { timeout: @request_timeout },
ssl: { verify: @ssl_verify, ca_file: @ca_file, version: @ssl_version }
},
http: {
user: @user,
password: @password
}
}), &adapter_conf)
es = Elasticsearch::Client.new transport: transport, log: true
es.ping
es
end
end
conn = ESConnTester.new.client
require 'elasticsearch'
require 'excon'
class ESConnTester
def initialize(host='logging-es', port=9200)
@host = host
@port = port
@scheme = 'https'
@client_key = '/etc/fluent/keys/key'
@client_cert = '/etc/fluent/keys/cert'
@client_key_pass = nil
@reload_connections = false
@reload_on_failure = false
@resurrect_after = 60
@transport_logger = Logger.new(STDERR)
@content_type = "application/json"
@request_timeout = 2147483648
@ssl_verify = true
@ca_file = '/etc/fluent/keys/ca'
@ssl_version = :TLSv1_2
@user = 'fluentd'
@password = 'changeme'
end
def get_connection_options
hosts = [{host: @host, port: @port, scheme: @scheme, user: @user, password: @password}]
{ hosts: hosts }
end
def client
excon_options = { client_key: @client_key, client_cert: @client_cert, client_key_pass: @client_key_pass }
adapter_conf = lambda {|f| f.adapter :excon, excon_options }
transport = Elasticsearch::Transport::Transport::HTTP::Faraday.new(get_connection_options.merge(
options: {
reload_connections: @reload_connections,
reload_on_failure: @reload_on_failure,
resurrect_after: @resurrect_after,
retry_on_failure: 5,
logger: @transport_logger,
transport_options: {
headers: { 'Content-Type' => @content_type.to_s },
request: { timeout: @request_timeout },
ssl: { verify: @ssl_verify, ca_file: @ca_file, version: @ssl_version }
},
http: {
user: @user,
password: @password
}
}), &adapter_conf)
es = Elasticsearch::Client.new transport: transport, log: true
es.ping
es
end
end
conn = ESConnTester.new.client
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment