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