# encoding: utf-8 # Origin https://groups.google.com/forum/#!msg/logstash-users/exgrB4iQ-mw/R34apku5nXsJ # and https://botbot.me/freenode/logstash/msg/4169496/ # via https://gist.github.com/electrical/4660061e8fff11cdcf37#file-jira-rb # Uses jiralicious as the bridge to JIRA # By Martin Cleaver, Blended Perspectives # with a lot of help from 'electrical' in #logstash require "logstash/outputs/base" require "logstash/namespace" # # This is so is most useful so you can use logstash to parse and structure # your logs and ship structured, json events to JIRA # # To use this, you'll need to ensure your JIRA instance allows REST calls class LogStash::Outputs::Jira < LogStash::Outputs::Base config_name "jira" # The hostname to send logs to. This should target your JIRA server # and has to have the REST interface enabled config :host, :validate => :string config :username, :validate => :string, :required => true config :password, :validate => :string, :required => true # Javalicious has no proxy support ### # JIRA Project number config :projectid, :validate => :string, :required => true # JIRA Issuetype number config :issuetypeid, :validate => :string, :required => true # JIRA Summary config :summary, :validate => :string, :required => true # JIRA Priority config :priority, :validate => :string, :required => true # JIRA Reporter config :reporter, :validate => :string # JIRA Reporter config :assignee, :validate => :string ### The following have not been implemented # Ticket creation method #config :method, :validate => :string, :default => 'new' # Search fields; When in 'append' method. search for a ticket that has these fields and data. #config :searchfields, :validate => :hash # createfields; Add data to these fields at initial creation #config :createfields, :validate => :hash # appendfields; Update data in these fields when appending data to an existing ticket #config :appendfields, :validate => :hash # Comment; Add this in the comment field ( is for new and append method the same ) #config :comment, :validate => :string public def register require "jiralicious" # 0.2.2 works for me # nothing to do end public def receive(event) return unless output?(event) if event == LogStash::SHUTDOWN finished return end Jiralicious.configure do |config| config.username = @username config.password = @password config.uri = @host config.auth_type = :cookie config.api_version = "latest" end issue = Jiralicious::Issue.new issue.fields.set_id("project", @projectid) # would have prefered a project key, https://github.com/jstewart/jiralicious/issues/16 issue.fields.set("summary", @summary) issue.fields.set_id("issuetype", @issuetypeid) issue.fields.set_name("reporter", @reporter) issue.fields.set_name("assignee", @assignee) issue.fields.set_id("priority", @priority) #puts issue.fields.to_yaml issue.save # if response.is_a?(Net::HTTPSuccess) # @logger.info("Event send to JIRA OK!") # else # @logger.warn("HTTP error", :error => response.error!) # end end # def receive end # class LogStash::Outputs::Jira