class Aliyun::Log::Protocol
Constants
- DEFAULT_LOG_TIME_SHIFT
- INDEX_DEFAULT_TOKEN
Public Class Methods
new(config)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 9 def initialize(config) @http = Request.new(config) end
Public Instance Methods
build_log_pb(attrs, time = Time.now.to_i)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 108 def build_log_pb(attrs, time = Time.now.to_i) logs = attrs.is_a?(Array) ? attrs : [attrs] logs.map do |log_attr| contents = log_attr.map { |k, v| { key: k, value: v.to_s } } Protobuf::Log.new(time: time, contents: contents) end end
create_index(project_name, logstore_name, fields)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 177 def create_index(project_name, logstore_name, fields) body = { line: { token: INDEX_DEFAULT_TOKEN }, keys: {} } fields.each do |k, v| v[:token] = INDEX_DEFAULT_TOKEN if %w[text json].include?(v[:type].to_s) && v[:token].nil? body[:keys][k] = v end @http.post({ project: project_name, logstore: logstore_name, action: 'index' }, body.to_json) end
create_index_line(project_name, logstore_name, token = nil)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 168 def create_index_line(project_name, logstore_name, token = nil) body = { line: { token: token || INDEX_DEFAULT_TOKEN } } @http.post({ project: project_name, logstore: logstore_name, action: 'index' }, body.to_json) end
create_logstore(project_name, logstore_name, opt = {})
click to toggle source
# File lib/aliyun/log/protocol.rb, line 67 def create_logstore(project_name, logstore_name, opt = {}) body = { logstoreName: logstore_name, ttl: opt[:ttl] || 365, shardCount: opt[:shard_count] || 2, autoSplit: opt[:auto_split].nil? ? false : opt[:auto_split], maxSplitShard: opt[:max_split_shard], enable_tracking: opt[:enable_tracking].nil? ? false : opt[:enable_tracking] }.compact @http.post({ project: project_name, logstore: '' }, body.to_json) end
create_project(project_name, desc)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 37 def create_project(project_name, desc) body = { projectName: project_name, description: desc } @http.post({ project: project_name }, body.to_json) end
delete_index(project_name, logstore_name)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 205 def delete_index(project_name, logstore_name) body = { logstore_name: logstore_name } @http.delete({ project: project_name, logstore: logstore_name, action: 'index' }, body.to_json) end
delete_logstore(project_name, logstore_name)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 91 def delete_logstore(project_name, logstore_name) body = { logstore_name: logstore_name } @http.delete({ project: project_name, logstore: logstore_name }, body.to_json) end
delete_project(project_name)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 53 def delete_project(project_name) body = { projectName: project_name } @http.delete({ project: project_name }, body.to_json) end
get_histograms(project_name, logstore_name, opt = {})
click to toggle source
# File lib/aliyun/log/protocol.rb, line 140 def get_histograms(project_name, logstore_name, opt = {}) from = opt[:from] || (Time.now - DEFAULT_LOG_TIME_SHIFT).to_i to = opt[:to] || Time.now.to_i query = { type: 'histogram', from: from, to: to, query: opt[:query], topic: opt[:topic] }.compact @http.get({ project: project_name, logstore: logstore_name }, query) end
get_index(project_name, logstore_name)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 161 def get_index(project_name, logstore_name) query = { logstore_name: logstore_name } @http.get({ project: project_name, logstore: logstore_name, action: 'index' }, query) end
get_logs(project_name, logstore_name, opt = {})
click to toggle source
# File lib/aliyun/log/protocol.rb, line 124 def get_logs(project_name, logstore_name, opt = {}) from = opt[:from] || (Time.now - DEFAULT_LOG_TIME_SHIFT).to_i to = opt[:to] || Time.now.to_i query = { type: 'log', from: from, to: to, line: opt[:line], offset: opt[:offset], reverse: opt[:reverse], query: opt[:query], topic: opt[:topic] }.compact @http.get({ project: project_name, logstore: logstore_name }, query) end
get_logstore(project_name, logstore_name)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 96 def get_logstore(project_name, logstore_name) query = { logstore_name: logstore_name } attrs = @http.get({ project: project_name, logstore: logstore_name }, query) attrs = JSON.parse(attrs) attrs['projectName'] = project_name Logstore.from_json(attrs, self) end
get_project(project_name)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 30 def get_project(project_name) query = { projectName: project_name } attrs = @http.get({ project: project_name }, query) attrs = JSON.parse(attrs) Project.from_json(attrs, self) end
list_logstores(project_name, size = nil, offset = nil)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 58 def list_logstores(project_name, size = nil, offset = nil) query = { offset: offset, size: size }.compact data = @http.get({ project: project_name, logstore: '' }, query) JSON.parse(data) end
list_projects(size = nil, offset = nil)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 13 def list_projects(size = nil, offset = nil) query = { offset: offset, size: size }.compact data = @http.get(nil, query) data = JSON.parse(data) data['projects'] = data['projects'].map do |attrs| Project.from_json(attrs, self) end data end
list_topics(project_name, logstore_name, opt = {})
click to toggle source
# File lib/aliyun/log/protocol.rb, line 153 def list_topics(project_name, logstore_name, opt = {}) query = { type: 'topic', line: opt[:line] || 100 } @http.get({ project: project_name, logstore: logstore_name }, query) end
projects(size = nil, offset = nil)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 26 def projects(size = nil, offset = nil) list_projects(size, offset)['projects'] end
put_log(project_name, logstore_name, logs, opts = {})
click to toggle source
# File lib/aliyun/log/protocol.rb, line 116 def put_log(project_name, logstore_name, logs, opts = {}) logs = build_log_pb(logs, opts[:time] || Time.now.to_i) lg_pb = Protobuf::LogGroup.new(logs: logs, topic: opts[:topic]) @http.post({ project: project_name, logstore: logstore_name, is_pb: true }, lg_pb) end
put_logs(project_name, logstore_name, content)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 104 def put_logs(project_name, logstore_name, content) @http.post({ project: project_name, logstore: logstore_name, is_pb: true }, content) end
update_index(project_name, logstore_name, fields)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 191 def update_index(project_name, logstore_name, fields) body = { line: { token: INDEX_DEFAULT_TOKEN }, keys: {} } fields.each do |k, v| v[:token] = INDEX_DEFAULT_TOKEN if %w[text json].include?(v[:type].to_s) && v[:token].nil? body[:keys][k] = v end @http.put({ project: project_name, logstore: logstore_name, action: 'index' }, body.to_json) end
update_logstore(project_name, logstore_name, opt = {})
click to toggle source
# File lib/aliyun/log/protocol.rb, line 79 def update_logstore(project_name, logstore_name, opt = {}) body = { logstore_name: logstore_name, ttl: opt[:ttl] || 365, shardCount: opt[:shard_count] || 2, autoSplit: opt[:auto_split].nil? ? false : opt[:auto_split], maxSplitShard: opt[:max_split_shard], enable_tracking: opt[:enable_tracking].nil? ? false : opt[:enable_tracking] }.compact @http.put({ project: project_name, logstore: logstore_name }, body.to_json) end
update_project(project_name, desc)
click to toggle source
# File lib/aliyun/log/protocol.rb, line 45 def update_project(project_name, desc) body = { projectName: project_name, description: desc } @http.put({ project: project_name }, body.to_json) end