mirror of
https://github.com/elastic/logstash.git
synced 2025-04-24 22:57:16 -04:00
92 lines
3.2 KiB
Ruby
92 lines
3.2 KiB
Ruby
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
# or more contributor license agreements. Licensed under the Elastic License;
|
|
# you may not use this file except in compliance with the Elastic License.
|
|
|
|
require "logstash/config/source/base"
|
|
require 'license_checker/licensed'
|
|
require 'helpers/elasticsearch_options'
|
|
|
|
module LogStash module Monitoring
|
|
class InternalPipelineSource < LogStash::Config::Source::Base
|
|
include LogStash::LicenseChecker::Licensed
|
|
include LogStash::Helpers::ElasticsearchOptions
|
|
include LogStash::Util::Loggable
|
|
FEATURE = 'monitoring'
|
|
|
|
def initialize(pipeline_config, agent, settings)
|
|
super(pipeline_config.settings)
|
|
@pipeline_config = pipeline_config
|
|
@settings = settings
|
|
@agent = agent
|
|
@es_options = es_options_from_settings_or_modules(FEATURE, @settings)
|
|
setup_license_checker(FEATURE)
|
|
end
|
|
|
|
def pipeline_configs
|
|
@pipeline_config
|
|
end
|
|
|
|
def match?
|
|
valid_basic_license?
|
|
end
|
|
|
|
def update_license_state(xpack_info)
|
|
return if valid_basic_license?
|
|
super(xpack_info) if xpack_info
|
|
if valid_basic_license?
|
|
logger.info("Validated license for monitoring. Enabling monitoring pipeline.")
|
|
enable_monitoring()
|
|
end
|
|
end
|
|
|
|
private
|
|
def valid_basic_license?
|
|
@license_state ? license_check : false
|
|
end
|
|
|
|
def enable_monitoring
|
|
@agent.converge_state_and_update
|
|
end
|
|
|
|
def populate_license_state(xpack_info)
|
|
if xpack_info.failed?
|
|
{
|
|
:state => :error,
|
|
:log_level => :error,
|
|
:log_message => "Failed to fetch X-Pack information from Elasticsearch. This is likely due to failure to reach a live Elasticsearch cluster."
|
|
}
|
|
elsif !xpack_info.installed?
|
|
{
|
|
:state => :error,
|
|
:log_level => :error,
|
|
:log_message => "X-Pack is installed on Logstash but not on Elasticsearch. Please install X-Pack on Elasticsearch to use the monitoring feature. Other features may be available."
|
|
}
|
|
elsif !xpack_info.license_available?
|
|
{
|
|
:state => :error,
|
|
:log_level => :error,
|
|
:log_message => 'Monitoring is not available: License information is currently unavailable. Please make sure you have added your production elasticsearch connection info in the xpack.monitoring.elasticsearch settings.'
|
|
}
|
|
elsif !xpack_info.license_one_of?(::LogStash::LicenseChecker::LICENSE_TYPES)
|
|
{
|
|
:state => :error,
|
|
:log_level => :error,
|
|
:log_message => "Monitoring is not available: #{xpack_info.license_type} is not a valid license for this feature."
|
|
}
|
|
elsif !xpack_info.license_active?
|
|
{
|
|
:state => :ok,
|
|
:log_level => :warn,
|
|
:log_message => 'Monitoring requires a valid license. You can continue to monitor Logstash, but please contact your administrator to update your license'
|
|
}
|
|
else
|
|
unless xpack_info.feature_enabled?(FEATURE)
|
|
logger.warn('Monitoring installed and enabled in Logstash, but not enabled in Elasticsearch')
|
|
end
|
|
|
|
{ :state => :ok, :log_level => :info, :log_message => 'Monitoring License OK' }
|
|
end
|
|
end
|
|
|
|
end
|
|
end end
|