# Connecting logstash to swift-ceph

**URL:** <https://discuss.elastic.co/t/connecting-logstash-to-swift-ceph/34901>\
**Category:** Logstash\
**Created:** [November 18, 2015, 9:02am UTC](https://discuss.elastic.co/t/connecting-logstash-to-swift-ceph/34901 "2015-11-18T09:02:34Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jin\_Nguyen](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jin_nguyen/32/781_2.png) [@Jin\_Nguyen](https://discuss.elastic.co/u/Jin_Nguyen)\
**Post date:** [November 18, 2015, 9:02am UTC](https://discuss.elastic.co/t/connecting-logstash-to-swift-ceph/34901/1 "2015-11-18T09:02:34Z")

</div>

Hi all,

I find out a custom plugin here [GitHub - jedipunkz/logstash-output-plugin-swift: Logstash output plugin for OpenStack Swift](https://github.com/jedipunkz/logstash-output-plugin-swift) to connect to swift Openstack. But what I need is connecting to swift on Ceph storage using ruby API. This is the code I modified:

> # encoding: utf-8
> 
> require "logstash/outputs/base"  
> require "logstash/namespace"  
> class LogStash::Outputs::Swift \< LogStash::Outputs::Base  
> config\_name "swift"  
> milestone 2  
> config :auth\_url, :validate =\> :string, :require =\> true  
> config :auth\_user, :validate =\> :string, :require =\> true  
> #config :auth\_tenant, :validate =\> :string, :require =\> true  
> config :auth\_api\_key, :validate =\> :string, :require =\> true  
> config :swift\_account, :validate =\> :string, :require =\> false  
> config :swift\_container, :validate =\> :string, :require =\> true  
> config :swift\_object\_key\_format, :validate =\> :string, :require =\> false  
> public  
> def register  
> require 'fog'  
> require 'zlib'  
> require 'time'  
> require 'tempfile'  
> #require 'open3'  
> @conn = CloudFiles::Connection.new :auth\_url =\> @auth\_url,  
> :username =\> @auth\_user,  
> :api\_key =\> @auth\_api\_key  
> @conn.change\_account @swift\_account if @swift\_account  
> end # register  
> public  
> def receive(event)  
> #require 'fog'  
> require 'zlib'  
> require 'time'  
> require 'tempfile'  
> require 'open3'  
> return unless output?(event)  
> i = 0  
> # @swift\_object\_key\_format = "%{path}%{time\_slice}\_%{index}.%{file\_extension}"  
> # swift\_path = @swift\_object\_key\_format.gsub(%r(%{[^}]+})) { |expr|  
> # values\_for\_swift\_object\_key[expr[2...expr.size-1]]  
> swift\_path = "testobject"  
> @mime\_type = 'application/x-gzip'  
> tmp = Tempfile.new("swift-")  
> begin  
> w = Zlib::GzipWriter.new(tmp)  
> chunk.write\_to(w)  
> w.close  
> File.open(tmp.path) do |file|  
> @conn.put\_object(@swift\_container, swift\_path, file, {:content\_type =\> @mime\_type})  
> end # File.open  
> rescue =\> e  
> @logger.warn("Failed to send event to Swift", :evnet =\> event, :exception =\> e,  
> :backtrace =\> e.backtrace)  
> ensure  
> w.close rescue nil  
> end # begin  
> end # def write  
> end # class LogStash::Outputs::Mongodb

But when I run the conf logstash, it occurs error like this:  
/opt/logstash/bin/logstash -f ../test\_swift.conf  
swift plugin is using the 'milestone' method to declare the version of the plugin this method is deprecated in favor of declaring the version inside the gemspec. {:level=\>:warn}  
Default settings used: Filter workers: 2  
The error reported is:  
Unable to connect to [http://s3.mydomain.net/auth](http://s3.mydomain.net/auth)

This is my test\_swift.conf file:

input {  
stdin {  
codec =\> "json"  
}  
}

output {  
swift {  
auth\_url =\> "[http://s3.mydomain.net/auth/v1.0](http://s3.mydomain.net/auth/v1.0)"  
auth\_user =\> "vinhn4:swift"  
auth\_api\_key =\> "KsG4/Ye/5tP0jgTfeD4n5KHlr5BQJEfc4hTuj0kd"  
swift\_container =\> "test"  
}  
}

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [November 18, 2015, 10:29am UTC](https://discuss.elastic.co/t/connecting-logstash-to-swift-ceph/34901/2 "2015-11-18T10:29:04Z")

</div>

You may want to raise an issue against the original plugin creator's repo.

---

<div class="post-metadata">

**Author:** ![Jin\_Nguyen](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jin_nguyen/32/781_2.png) [@Jin\_Nguyen](https://discuss.elastic.co/u/Jin_Nguyen)\
**Post date:** [November 19, 2015, 4:28am UTC](https://discuss.elastic.co/t/connecting-logstash-to-swift-ceph/34901/3 "2015-11-19T04:28:37Z")

</div>

I've connected to swift with above plugin with some modifies in code. It's connect but "Failed to send event to Swift"  
This is error "Failed to send event to Swift {:evnet=\>#\<LogStash::Event:0x692a56d6 @metadata\_accessors=#\<LogStash::Util::Accessors:0x76cbe9c4 @store={}, @lut={}\>, @cancelled=false, @data={"message"=\>"", "@version"=\>"1", "@timestamp"=\>"2015-11-19T04:19:46.519Z", "host"=\>"0.0.0.0"}, @metadata={}, @accessors=#\<LogStash::Util::Accessors:0x35e1a2e7 @store={"message"=\>"", "@version"=\>"1", "@timestamp"=\>"2015-11-19T04:19:46.519Z", "host"=\>"0.0.0.0"}, @lut={"host"=\>[{"message"=\>"", "@version"=\>"1", "@timestamp"=\>"2015-11-19T04:19:46.519Z", "host"=\>"0.0.0.0"}, "host"]}\>\>, :exception=\>#\<NameError: undefined local variable or method `chunk' for #<LogStash::Outputs::Swift:0x2bb684c3>>, :backtrace=>["/opt/logstash/vendor/local_gems/bc2a61ae/logstash-output-swift-2.0.0/lib/logstash/outputs/swift.rb:52:in`receive'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.0.0-java/lib/logstash/outputs/base.rb:80:in `handle'", "(eval):22:in`output\_func'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.0.0-java/lib/logstash/pipeline.rb:252:in `outputworker'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.0.0-java/lib/logstash/pipeline.rb:169:in`start\_outputs'"], :level=\>:warn}"

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 5:22am UTC](https://discuss.elastic.co/t/connecting-logstash-to-swift-ceph/34901/4 "2017-07-06T05:22:15Z")

</div>

Closed on July 6, 2017, 5:22am UTC


