fluent-plugin-riak2f 0.0.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 +7 -0
- data/.gitignore +19 -0
- data/CHANGELOG +13 -0
- data/Gemfile +6 -0
- data/LICENSE.md +13 -0
- data/README.md +70 -0
- data/Rakefile +17 -0
- data/VERSION +1 -0
- data/browser.html +178 -0
- data/fluent-plugin-riak2f.gemspec +26 -0
- data/lib/fluent/plugin/out_riak2.rb +107 -0
- data/listkeys.rb +36 -0
- data/setup_index.sh +11 -0
- metadata +139 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8b7beab77e858e192eaada824cace1820196a979
|
4
|
+
data.tar.gz: 0136c5c1862058872fd54e3ba59e82b9326fd7e5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d409ac9126547b409b619075bf83e6f96e37bd4b93aacd7d4b873bb8dc30b2283aadd8cd3aa603268b986682441c71e2f0ee7466bcab2f63da0f09bb963f213d
|
7
|
+
data.tar.gz: d5d8f0da7053d1b89c5f6c902c457587ed4b3b231d7f014bb8dba7bd5334f821510cb4522118ec88b01bd1c249c145ed25476c727d63ed73c3666d9f880a2b2c
|
data/.gitignore
ADDED
data/CHANGELOG
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
0.0.5
|
2
|
+
=====
|
3
|
+
|
4
|
+
- update to support riak 2.0 bucket types
|
5
|
+
- update record to support riak search 2.0 (yokozuna) style json extraction
|
6
|
+
- write to a metadata crdt map bucket names
|
7
|
+
|
8
|
+
0.0.4
|
9
|
+
=====
|
10
|
+
|
11
|
+
- hard fork from https://github.com/kuenishi/fluent-plugin-riak , see README for more info
|
12
|
+
- bare minimum to support riak-ruby-client v2.1
|
13
|
+
- change UUID to v1 (timestamp based)
|
data/Gemfile
ADDED
data/LICENSE.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright 2014 Kota UENISHI, Collective Health, Inc.
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use this file except in compliance with the License.
|
5
|
+
You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
data/README.md
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
[fluent-plugin-riak2f](https://github.com/kyanagimoto/fluent-plugin-riak2), a plugin for [Fluentd](http://fluentd.org)
|
2
|
+
==================
|
3
|
+
|
4
|
+
|
5
|
+
`fluent-plugin-riak2f` is a fluentd output plugin designed to stuff log messages into a riak cluster.
|
6
|
+
|
7
|
+
This version is based on the work of [fluent-plugin-riak2](https://github.com/collectivehealth/fluent-plugin-riak2). We are very thankful for his effort and his decision to release the work under the Apache 2 license.
|
8
|
+
|
9
|
+
`fluent-plugin-riak2` is designed to be used with Riak 2.x clusters and it's yokozuna/solr based search engine. Support for secondary indicies is limited and should be considered deprecated.
|
10
|
+
|
11
|
+
Riak ( http://github.com/basho/riak ) is an open-source distributed KVS focused on availability.
|
12
|
+
|
13
|
+
Current status is still proof-of-concept: index setting and its configuration are to be decided. Also performance optimization is required. Another idea is in_tail_riak by using riak post-commit.
|
14
|
+
|
15
|
+
installation
|
16
|
+
------------
|
17
|
+
|
18
|
+
```bash
|
19
|
+
$ sudo gem install fluent-plugin-riak2f
|
20
|
+
```
|
21
|
+
|
22
|
+
Notice: you need Riak configured using eleveldb as backend.
|
23
|
+
|
24
|
+
|
25
|
+
fluent.conf example
|
26
|
+
-------------------
|
27
|
+
|
28
|
+
```
|
29
|
+
<match riak2.**>
|
30
|
+
type riak2
|
31
|
+
|
32
|
+
buffer_type memory
|
33
|
+
flush_interval 10s
|
34
|
+
retry_limit 5
|
35
|
+
retry_wait 1s
|
36
|
+
buffer_chunk_limit 256m
|
37
|
+
buffer_queue_limit 8096
|
38
|
+
bucket_type defalut # if not set, will use 'default'
|
39
|
+
bucket_name fluentdlog # if not set, will use 'fluentdlog'
|
40
|
+
|
41
|
+
# pb port
|
42
|
+
nodes 127.0.0.1:8087
|
43
|
+
#for cluster, define multiple machines
|
44
|
+
#nodes 192.168.100.128:10018 129.168.100.128:10028
|
45
|
+
</match>
|
46
|
+
|
47
|
+
```
|
48
|
+
|
49
|
+
- key format -> %Y%m%d%H%M%S-<uuid>
|
50
|
+
- value format -> [records] in JSON
|
51
|
+
- index:
|
52
|
+
|
53
|
+
- year_int -> year
|
54
|
+
- month_bin -> <year>-<month>
|
55
|
+
- tag_bin -> tags
|
56
|
+
|
57
|
+
easy querying log
|
58
|
+
-----------------
|
59
|
+
|
60
|
+
```bash
|
61
|
+
$ curl -X PUT http://localhost:8098/buckets/static/keys/browser.html -H 'Content-type: text/html' -d @browser.html
|
62
|
+
$ open http://localhost:8098/buckets/static/keys/browser.html
|
63
|
+
```
|
64
|
+
|
65
|
+
License
|
66
|
+
=======
|
67
|
+
|
68
|
+
Apache 2.0
|
69
|
+
|
70
|
+
Copyright Kota UENISHI, Collective Health, Inc.
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rake/testtask'
|
5
|
+
|
6
|
+
Rake::TestTask.new(:test) do |test|
|
7
|
+
test.libs << 'lib' << 'test'
|
8
|
+
test.test_files = FileList['test/plugin/*.rb']
|
9
|
+
test.verbose = true
|
10
|
+
end
|
11
|
+
|
12
|
+
task :coverage do |t|
|
13
|
+
ENV['SIMPLE_COV'] = '1'
|
14
|
+
Rake::Task["test"].invoke
|
15
|
+
end
|
16
|
+
|
17
|
+
task :default => [:build]
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
data/browser.html
ADDED
@@ -0,0 +1,178 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Riak mapreducer</title>
|
4
|
+
<style type="text/css">
|
5
|
+
body {
|
6
|
+
background: #678; text-align: center; width: 100%; font-family: 'Titillium', Monospace;
|
7
|
+
}
|
8
|
+
body div {
|
9
|
+
width: 80%; background: #ddd;
|
10
|
+
padding: 20px; text-align: left; margin: 0px auto;
|
11
|
+
}
|
12
|
+
h2 {
|
13
|
+
padding: 0px;
|
14
|
+
margin: 0px auto;
|
15
|
+
}
|
16
|
+
a {
|
17
|
+
text-shadow: 1px 1px #888888;
|
18
|
+
text-decoration:underline;
|
19
|
+
}
|
20
|
+
</style>
|
21
|
+
<script lang="JavaScript">
|
22
|
+
function get_map(){ return document.getElementById("map").value; }
|
23
|
+
function get_reduce(){ return document.getElementById("reduce").value; }
|
24
|
+
function get_bucketname(){ return document.getElementById("bucket").value; }
|
25
|
+
function exec_query(m, r){
|
26
|
+
var q = { inputs : get_bucketname(),
|
27
|
+
query : [
|
28
|
+
{ map: { language: "javascript", source: m}},
|
29
|
+
{ reduce: { language: "javascript", source: r}}
|
30
|
+
]};
|
31
|
+
var xmlhttp = new XMLHttpRequest();
|
32
|
+
xmlhttp.open("POST", "/mapred", false);
|
33
|
+
xmlhttp.setRequestHeader("Content-Type", "application/json");
|
34
|
+
xmlhttp.send(JSON.stringify(q, null, ""));
|
35
|
+
var result = xmlhttp.responseText;
|
36
|
+
|
37
|
+
var resultBox = document.getElementById("result");
|
38
|
+
resultBox.innerText = result;
|
39
|
+
}
|
40
|
+
</script>
|
41
|
+
</head>
|
42
|
+
|
43
|
+
<body>
|
44
|
+
<div id="content">
|
45
|
+
<div style="text-align:right">
|
46
|
+
<script lang="JavaScript">
|
47
|
+
</script>
|
48
|
+
bucket name:<input type="text" id="bucket" value="fluentlog"/>
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<h2>Run mapreduce on fluentd log</h2>
|
52
|
+
<table style="border: 1px solid black;">
|
53
|
+
<tr>
|
54
|
+
<th>map</th> <th>reduce</th>
|
55
|
+
</tr>
|
56
|
+
<tr>
|
57
|
+
<td>
|
58
|
+
<textarea name="map" id="map" rows="16" cols="50">
|
59
|
+
function(v){
|
60
|
+
var data = v.values[0].data;
|
61
|
+
var c = JSON.parse(data);
|
62
|
+
return [c.count];
|
63
|
+
}
|
64
|
+
</textarea>
|
65
|
+
</td><td>
|
66
|
+
<textarea name="reduce" id="reduce" rows="16" cols="50" >
|
67
|
+
function(v){
|
68
|
+
var sum = 0;
|
69
|
+
for( var i=0; i < v.length; ++i){
|
70
|
+
sum += v[i];
|
71
|
+
}
|
72
|
+
return [sum];
|
73
|
+
}
|
74
|
+
</textarea>
|
75
|
+
</td>
|
76
|
+
</tr>
|
77
|
+
<tr>
|
78
|
+
<th colspan="2"> <a onClick="exec_query(get_map(), get_reduce());">query</a> </th>
|
79
|
+
</tr>
|
80
|
+
<tr>
|
81
|
+
<td width="200px" colspan="2">
|
82
|
+
<div id="result" style="font: bold;"></div>
|
83
|
+
</td>
|
84
|
+
</tr>
|
85
|
+
<tr><td colspan="3">
|
86
|
+
<script lang="JavaScript">
|
87
|
+
function grep(){
|
88
|
+
|
89
|
+
}
|
90
|
+
</script>
|
91
|
+
<script lang="JavaScript" type="text/javascript">
|
92
|
+
function count_rank(){
|
93
|
+
var m = "function(v){
|
94
|
+
var data = v.values[0].data;
|
95
|
+
var c = JSON.parse(data);
|
96
|
+
var tags = {};
|
97
|
+
for(var i=0; i<c.length; ++i){
|
98
|
+
count = tags[c[i].tag];
|
99
|
+
if(count == null){ tags[c[i].tag] = 1; }
|
100
|
+
else{ tags[c[i].tag] = count+1; }
|
101
|
+
}
|
102
|
+
return [tags];
|
103
|
+
}";
|
104
|
+
var r = "function(v){
|
105
|
+
var tags = {};
|
106
|
+
for(var i=0; i<v.length; ++i){
|
107
|
+
for (var prop in v[i]) {
|
108
|
+
count = tags[prop];
|
109
|
+
if(count == null){ tags[prop] = v[i][prop]; }
|
110
|
+
else{ tags[prop] = count+v[i][prop]; }
|
111
|
+
}
|
112
|
+
}
|
113
|
+
return [tags];
|
114
|
+
}";
|
115
|
+
exec_query(m, r);
|
116
|
+
}
|
117
|
+
</script>
|
118
|
+
|
119
|
+
<!-- <a onClick="grep();">grep</a> <input type="text" id="grep" value="debug"/> -->
|
120
|
+
<a onClick="count_rank();">count&rank</a> <input type="text" id="count_rank" value="tag"/>
|
121
|
+
</td></tr>
|
122
|
+
</table>
|
123
|
+
|
124
|
+
<hr/>
|
125
|
+
<h2>Riak object viewer</h2>
|
126
|
+
<script lang="JavaScript">
|
127
|
+
function get(){
|
128
|
+
var key = document.getElementById("key").value;
|
129
|
+
var xmlhttp = new XMLHttpRequest();
|
130
|
+
xmlhttp.open("GET", "/buckets/"+ get_bucketname() +"/keys/"+key, false);
|
131
|
+
xmlhttp.send();
|
132
|
+
var result = xmlhttp.responseText;
|
133
|
+
console.log(result);
|
134
|
+
document.getElementById("object").innerText = result;
|
135
|
+
}
|
136
|
+
</script>
|
137
|
+
<a onClick="get();" >get</a> <input type="text" id="key" />
|
138
|
+
<div id="object"></div>
|
139
|
+
|
140
|
+
|
141
|
+
<h2>Riak keylister</h2>
|
142
|
+
<script lang="JavaScript">
|
143
|
+
function listkeys(){
|
144
|
+
var xmlhttp = new XMLHttpRequest();
|
145
|
+
xmlhttp.open("GET", "/buckets/"+ get_bucketname() +"/keys?keys=true", false);
|
146
|
+
xmlhttp.send();
|
147
|
+
var result = JSON.parse(xmlhttp.responseText);
|
148
|
+
console.log(result);
|
149
|
+
|
150
|
+
document.getElementById("keylist").innerText = result.keys.sort().join("\n");
|
151
|
+
}
|
152
|
+
</script>
|
153
|
+
<a onClick="listkeys();" >listkeys</a>
|
154
|
+
<div id="keylist"></div>
|
155
|
+
<hr/>
|
156
|
+
(C)@kuenishi distributed under Apache 2 license
|
157
|
+
</div>
|
158
|
+
<!--
|
159
|
+
<h2>Riak object putter</h2>
|
160
|
+
<script lang="JavaScript">
|
161
|
+
function put(){
|
162
|
+
var key = document.getElementById("key2").value;
|
163
|
+
var value = document.getElementById("value").value;
|
164
|
+
var xmlhttp = new XMLHttpRequest();
|
165
|
+
xmlhttp.open("PUT", "/buckets/fluentlog/keys/"+key, false);
|
166
|
+
xmlhttp.setRequestHeader("Content-Type", "application/json");
|
167
|
+
xmlhttp.send(value);
|
168
|
+
var result = xmlhttp.responseText;
|
169
|
+
console.log(result);
|
170
|
+
document.getElementById("object2").innerText = result;
|
171
|
+
}
|
172
|
+
</script>
|
173
|
+
<a onClick="put();" >put</a> <input type="text" id="key2" /> <input type="text" id="value" />
|
174
|
+
<div id="object2"></div>
|
175
|
+
-->
|
176
|
+
|
177
|
+
</body>
|
178
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.name = "fluent-plugin-riak2f"
|
6
|
+
gem.description = "Riak 2.x plugin for Fluent event collector"
|
7
|
+
gem.homepage = "https://github.com/kyanagimoto/fluent-plugin-riak2f"
|
8
|
+
gem.summary = gem.description
|
9
|
+
gem.version = File.read("VERSION").strip
|
10
|
+
gem.license = 'Apache-2.0'
|
11
|
+
gem.authors = ["koichi yanagimoto"]
|
12
|
+
gem.email = "kyanagi1107@gmail.com"
|
13
|
+
gem.has_rdoc = false
|
14
|
+
#gem.platform = Gem::Platform::RUBY
|
15
|
+
gem.files = `git ls-files`.split("\n")
|
16
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
gem.require_paths = ['lib']
|
19
|
+
|
20
|
+
gem.add_dependency "fluentd", "~> 0.10"
|
21
|
+
gem.add_dependency "riak-client", "~> 2.1.0"
|
22
|
+
gem.add_dependency "uuidtools", "~> 2.1.3"
|
23
|
+
gem.add_development_dependency "rake", ">= 0.9.2"
|
24
|
+
gem.add_development_dependency "simplecov", ">= 0.5.4"
|
25
|
+
gem.add_development_dependency "rr", ">= 1.0.0"
|
26
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
module Fluent
|
2
|
+
class Riak2Output < BufferedOutput
|
3
|
+
Fluent::Plugin.register_output('riak2', self)
|
4
|
+
include SetTimeKeyMixin
|
5
|
+
config_set_default :include_tag_key, true
|
6
|
+
include SetTagKeyMixin
|
7
|
+
config_set_default :include_time_key, true
|
8
|
+
|
9
|
+
config_param :bucket_type, :string, :default => "default"
|
10
|
+
config_param :bucket_name, :string, :default => "fluentlog"
|
11
|
+
config_param :riak2_metadata_bucket_type, :string, :default => ""
|
12
|
+
config_param :nodes, :string, :default => "localhost:8087"
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
super
|
16
|
+
require 'riak'
|
17
|
+
require 'msgpack'
|
18
|
+
require 'uuidtools'
|
19
|
+
end
|
20
|
+
|
21
|
+
def configure(conf)
|
22
|
+
super
|
23
|
+
@nodes = @nodes.split(',').map do |s|
|
24
|
+
ip,port = s.split(':')
|
25
|
+
{ :host => ip, :pb_port => port.to_i }
|
26
|
+
end
|
27
|
+
$log.info "riak nodes=#{@nodes}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def start
|
31
|
+
$log.debug " => #{@buffer.chunk_limit} #{@buffer.queue_limit} "
|
32
|
+
@client = Riak::Client.new(:nodes => @nodes)
|
33
|
+
@bucket = @client.bucket(@bucket_name)
|
34
|
+
@buf = {}
|
35
|
+
|
36
|
+
# $log.debug "riak2_metadata_bucket_type => #{@riak2_metadata_bucket_type}"
|
37
|
+
# $log.debug "bucket_type => #{@bucket_type}"
|
38
|
+
|
39
|
+
unless @riak2_metadata_bucket_type.empty?
|
40
|
+
# Here we are storing our bucket type and bucket name in a metadata map. This allows clients to query that map to see a list of all fluentd buckets.
|
41
|
+
|
42
|
+
# bucket_type/name/key is returns a metadata map
|
43
|
+
# config defined bucket type
|
44
|
+
metadata_bucket_type = @riak2_metadata_bucket_type
|
45
|
+
# bucket name
|
46
|
+
metadata_bucket_name = "fluent-plugin-riak2-metadata"
|
47
|
+
# root level key for our metadata map
|
48
|
+
metadata_key = "fluent-plugin-riak2-metadata-key"
|
49
|
+
|
50
|
+
# our metadata map has a kv where:
|
51
|
+
# 1. key is set_of_logfile_buckets_key
|
52
|
+
# 2. value is a set of strings.
|
53
|
+
#each string represents the bucket type and name for a single logfile
|
54
|
+
set_of_logfile_buckets_key = "all_buckets"
|
55
|
+
# inner key for our set of all logfile bucket type/name
|
56
|
+
|
57
|
+
mdbucket = @client.bucket(metadata_bucket_name)
|
58
|
+
Riak::Crdt::DEFAULT_BUCKET_TYPES[:map] = metadata_bucket_type
|
59
|
+
map = Riak::Crdt::Map.new(mdbucket, metadata_key)
|
60
|
+
map.sets[set_of_logfile_buckets_key].add "#{@bucket_type} #{@bucket_name}"
|
61
|
+
end
|
62
|
+
super
|
63
|
+
end
|
64
|
+
|
65
|
+
def format(tag, time, record)
|
66
|
+
[time, tag, record].to_msgpack
|
67
|
+
end
|
68
|
+
|
69
|
+
def write(chunk)
|
70
|
+
$log.debug " <<<<<===========\n"
|
71
|
+
records = []
|
72
|
+
chunk.msgpack_each do |time, tag, record|
|
73
|
+
record[@tag_key] = tag
|
74
|
+
records << record
|
75
|
+
$log.debug record
|
76
|
+
end
|
77
|
+
put_now(records)
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def put_now(records)
|
83
|
+
unless records.empty?
|
84
|
+
threads = []
|
85
|
+
records.each do |record|
|
86
|
+
# if you put log statements here,
|
87
|
+
# you must take care to NOT forward fluentd's logs to riak.
|
88
|
+
# you will trigger a recursive avalance of riak storage activity.
|
89
|
+
now = DateTime.now.strftime("%Y%m%d%H%M%S")
|
90
|
+
key = "#{now}-#{UUIDTools::UUID.timestamp_create.to_s}"
|
91
|
+
# $log.debug "#{@bucket_name} #{key} \n"
|
92
|
+
|
93
|
+
threads << Thread.new {
|
94
|
+
begin
|
95
|
+
robj = Riak::RObject.new(@bucket, key)
|
96
|
+
robj.content_type = "application/json"
|
97
|
+
robj.raw_data = record
|
98
|
+
robj.store(type: @bucket_type)
|
99
|
+
rescue => e
|
100
|
+
$log.error "ERROR #{e}"
|
101
|
+
end
|
102
|
+
}
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
data/listkeys.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'riak'
|
2
|
+
|
3
|
+
nodes = [{ :host => "127.0.0.1",
|
4
|
+
:pb_port => 8087 }]
|
5
|
+
|
6
|
+
|
7
|
+
c = Riak::Client.new( :nodes => nodes, :protocol => "pbc" )
|
8
|
+
#c.list_buckets
|
9
|
+
b = c.bucket("fluentlog")
|
10
|
+
|
11
|
+
def put(bucket)
|
12
|
+
o = Riak::RObject.new(bucket, "hoge")
|
13
|
+
o.content_type = "text/plain"
|
14
|
+
o.raw_data = "hogehoge"
|
15
|
+
o.store
|
16
|
+
end
|
17
|
+
|
18
|
+
def get(bucket)
|
19
|
+
o = bucket.get("hoge")
|
20
|
+
p o.content_type
|
21
|
+
p o.raw_data
|
22
|
+
end
|
23
|
+
|
24
|
+
def keys(bucket)
|
25
|
+
bucket.keys { |ks|
|
26
|
+
ks.each { |k|
|
27
|
+
o = bucket.get(k)
|
28
|
+
print "#{o.bucket.name}/#{o.key} (#{o.content_type})\n"
|
29
|
+
print " => #{o.raw_data}\n"
|
30
|
+
}
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
#put b
|
35
|
+
#get b
|
36
|
+
keys b
|
data/setup_index.sh
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
HOST=$1
|
4
|
+
|
5
|
+
echo setting up fluentlog_index at $HOST
|
6
|
+
curl -X PUT http://${HOST}/yz/index/fluentlog_index
|
7
|
+
echo "setting fluentlog_index to fluentlog bucket"
|
8
|
+
curl -X PUT http://${HOST}/buckets/fluentlog/props -H 'Content-type:application/json' -d '{"props":{"yz_index":"fluentlog_index"}}'
|
9
|
+
|
10
|
+
curl http://${HOST}/yz/index?index=true
|
11
|
+
curl http://${HOST}/buckets/fluentlog/props
|
metadata
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fluent-plugin-riak2f
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- koichi yanagimoto
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-06-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: fluentd
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.10'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: riak-client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.1.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: uuidtools
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.1.3
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.1.3
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.2
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.9.2
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.5.4
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.5.4
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rr
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.0.0
|
97
|
+
description: Riak 2.x plugin for Fluent event collector
|
98
|
+
email: kyanagi1107@gmail.com
|
99
|
+
executables: []
|
100
|
+
extensions: []
|
101
|
+
extra_rdoc_files: []
|
102
|
+
files:
|
103
|
+
- ".gitignore"
|
104
|
+
- CHANGELOG
|
105
|
+
- Gemfile
|
106
|
+
- LICENSE.md
|
107
|
+
- README.md
|
108
|
+
- Rakefile
|
109
|
+
- VERSION
|
110
|
+
- browser.html
|
111
|
+
- fluent-plugin-riak2f.gemspec
|
112
|
+
- lib/fluent/plugin/out_riak2.rb
|
113
|
+
- listkeys.rb
|
114
|
+
- setup_index.sh
|
115
|
+
homepage: https://github.com/kyanagimoto/fluent-plugin-riak2f
|
116
|
+
licenses:
|
117
|
+
- Apache-2.0
|
118
|
+
metadata: {}
|
119
|
+
post_install_message:
|
120
|
+
rdoc_options: []
|
121
|
+
require_paths:
|
122
|
+
- lib
|
123
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
requirements: []
|
134
|
+
rubyforge_project:
|
135
|
+
rubygems_version: 2.2.2
|
136
|
+
signing_key:
|
137
|
+
specification_version: 4
|
138
|
+
summary: Riak 2.x plugin for Fluent event collector
|
139
|
+
test_files: []
|