class Fluent::Plugin::MattermostOutput
Public Instance Methods
build_message(record)
click to toggle source
# File lib/fluent/plugin/out_mattermost.rb, line 102 def build_message(record) @message % record.to_json end
check_config_params()
click to toggle source
# File lib/fluent/plugin/out_mattermost.rb, line 106 def check_config_params() if @webhook_url.nil? || @channel_id.nil? || @message.nil? raise "Check in your Mattermost config, that all parameters in the configuration file are filled" abort end end
configure(conf)
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_mattermost.rb, line 29 def configure(conf) super end
get_infos(chunk)
click to toggle source
# File lib/fluent/plugin/out_mattermost.rb, line 92 def get_infos(chunk) messages = [] messages << "\n" chunk.msgpack_each do |time, record| messages << "#{build_message(record)}\n" end return messages end
message(record)
click to toggle source
# File lib/fluent/plugin/out_mattermost.rb, line 77 def message(record) payload = [{ "author_name": "Fluentd", "thumb_url": "https://coralogix.com/wp-content/uploads/2020/04/fluentd-guide-700x430.png", "color": @message_color, "fields": [ { "short": false, "title": @message_title, "value": record }] }] return payload end
post(payload)
click to toggle source
# File lib/fluent/plugin/out_mattermost.rb, line 52 def post(payload) url = URI(@webhook_url) https = Net::HTTP.new(url.host, url.port) https.use_ssl = @enable_tls if !@ca_path.nil? and @enable_tls == true https.ca_path = @ca_path end request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request.body = JSON.dump({ "channel_id": @channel_id, "attachments": message(payload) }) response = https.request(request) if response.read_body != "ok" log.error "response from mattermost: ", response.read_body else puts response.read_body end end
start()
click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_mattermost.rb, line 33 def start super check_config_params end
write(chunk)
click to toggle source
# File lib/fluent/plugin/out_mattermost.rb, line 38 def write(chunk) begin message = get_infos(chunk) post(message) rescue Timeout::Error => e log.warn "out_mattermost:", :error => e.to_s, :error_class => e.class.to_s raise e # let Fluentd retry rescue => e log.error "out_mattermost:", :error => e.to_s, :error_class => e.class.to_s log.warn_backtrace e.backtrace end end