203 lines
7.0 KiB
Puppet
203 lines
7.0 KiB
Puppet
notice('MODULAR: fuel-plugin-telemetry: hiera.pp')
|
|
|
|
$plugin_data = hiera_hash('telemetry', undef)
|
|
$network_metadata = hiera_hash('network_metadata')
|
|
$hiera_file = '/etc/hiera/plugins/telemetry.yaml'
|
|
$telemetry = hiera('telemetry')
|
|
prepare_network_config(hiera_hash('network_scheme', {}))
|
|
|
|
# Ceilometer
|
|
|
|
$ceilometer_hash = hiera_hash('ceilometer', $default_ceilometer_hash)
|
|
$ceilometer_alarm_history_time_to_live = $ceilometer_hash['alarm_history_time_to_live']
|
|
$ceilometer_event_time_to_live = $ceilometer_hash['event_time_to_live']
|
|
$ceilometer_metering_time_to_live = $ceilometer_hash['metering_time_to_live']
|
|
$ceilometer_http_timeout = $ceilometer_hash['http_timeout']
|
|
$ceilometer_notification_driver = $ceilometer_hash['notification_driver']
|
|
$ceilometer_db_password = $ceilometer_hash['db_password']
|
|
$ceilometer_enabled = true
|
|
$ceilometer_metering_secret = $ceilometer_hash['metering_secret']
|
|
$ceilometer_user_password = $ceilometer_hash['user_password']
|
|
$elasticsearch_script_inline = 'on'
|
|
$elasticsearch_script_indexed = 'on'
|
|
$elasticsearch_mode = $plugin_data['elasticsearch_mode']
|
|
|
|
# Elasticsearch
|
|
$es_vip_name = 'es_vip_mgmt'
|
|
|
|
case $elasticsearch_mode {
|
|
'remote': {
|
|
$es_server = $plugin_data['elastic_search_ip']
|
|
$es_port = $plugin_data['elastic_search_port']
|
|
}
|
|
'local': {
|
|
if $network_metadata['vips'][$es_vip_name] {
|
|
$es_server = $network_metadata['vips'][$es_vip_name]['ipaddr']
|
|
} else {
|
|
$es_server = ''
|
|
}
|
|
$es_port = '9200'
|
|
}
|
|
default: {
|
|
fail("'${elasticsearch_mode}' mode not supported for Elasticsearch")
|
|
}
|
|
}
|
|
|
|
# InfluxDB
|
|
|
|
if $telemetry['influxdb_address'] {
|
|
|
|
notice('Use external InfluxDB')
|
|
|
|
$influxdb_mode = 'remote'
|
|
|
|
$influxdb_address = $telemetry['influxdb_address']
|
|
$influxdb_port = $telemetry['influxdb_port']
|
|
$influxdb_database = $telemetry['influxdb_database']
|
|
$influxdb_user = $telemetry['influxdb_user']
|
|
$influxdb_password = $telemetry['influxdb_password']
|
|
|
|
$retention_period = '30'
|
|
|
|
} else {
|
|
|
|
notice('Use StackLight integrated InfluxDB')
|
|
|
|
$influxdb_mode = 'local'
|
|
|
|
if !hiera('influxdb_grafana',false) {
|
|
fail(join([
|
|
'The StackLight InfluxDB-Grafana Plugin not found, ',
|
|
'please configure external InfluxDB in advanced settings or install the plugin'
|
|
]))
|
|
}
|
|
|
|
$influxdb_grafana = hiera('influxdb_grafana')
|
|
$influxdb_nodes = get_nodes_hash_by_roles($network_metadata, ['influxdb_grafana', 'primary-influxdb_grafana'])
|
|
$nodes_array = values($influxdb_nodes)
|
|
|
|
if count($nodes_array)==0 {
|
|
fail(join([
|
|
'No nodes with InfluxDB Grafana role, please add one or more nodes',
|
|
'with this role to the environment or configure external InfluxDB in advanced settings'
|
|
]))
|
|
}
|
|
|
|
$influxdb_vip_name = 'influxdb'
|
|
if $network_metadata['vips'][$influxdb_vip_name] {
|
|
$influxdb_address = $network_metadata['vips'][$influxdb_vip_name]['ipaddr']
|
|
} else {
|
|
$influxdb_address = $nodes_array[0]['network_roles']['management']
|
|
}
|
|
|
|
$retention_period = $influxdb_grafana['retention_period']
|
|
$influxdb_user = $influxdb_grafana['influxdb_username']
|
|
$influxdb_password = $influxdb_grafana['influxdb_userpass']
|
|
$influxdb_port = '8086'
|
|
$influxdb_database = 'ceilometer'
|
|
$influxdb_rootpass = $influxdb_grafana['influxdb_rootpass']
|
|
|
|
}
|
|
|
|
# Rabbit
|
|
|
|
$amqp_host = get_network_role_property('management', 'ipaddr')
|
|
$amqp_port = hiera('amqp_port')
|
|
$rabbit_info = hiera('rabbit')
|
|
$rabbit_password = $rabbit_info['password']
|
|
$rabbit_user = $rabbit_info['user']
|
|
$amqp_url = "amqp://${rabbit_user}:${rabbit_password}@${amqp_host}:${amqp_port}/"
|
|
|
|
# metadata_fields definition
|
|
$metadata_fields_default = join(['status deleted container_format min_ram updated_at ',
|
|
'min_disk is_public size checksum created_at disk_format protected instance_host ',
|
|
'host display_name instance_id instance_type status state user_metadata.stack'])
|
|
$metadata_fields_plugin = $plugin_data['metadata_fields']
|
|
|
|
# Kafka
|
|
$kafka_port = 9092
|
|
$zookeeper_port = 2181
|
|
$kafka_nodes = get_nodes_hash_by_roles($network_metadata, ['kafka', 'primary-kafka'])
|
|
$kafka_ip_map = get_node_to_ipaddr_map_by_network_role($kafka_nodes, 'management')
|
|
|
|
if count($kafka_ip_map)>0 {
|
|
notice('Kafka nodes found')
|
|
$kafka_enabled = true
|
|
$kafka_ips = sort(values($kafka_ip_map))
|
|
# Format: host:port,host:port for ceiolmeter.conf
|
|
$tmp_brokers_list = join($kafka_ips,":${kafka_port},")
|
|
$broker_list = join([$tmp_brokers_list,":${kafka_port}"])
|
|
$tmp_zookeeper_list = join($kafka_ips,":${zookeeper_port},")
|
|
$zookeeper_list = join([$tmp_zookeeper_list,":${zookeeper_port}"])
|
|
} else {
|
|
notice('No Kafka nodes found')
|
|
$kafka_enabled = false
|
|
}
|
|
|
|
$calculated_content = inline_template('
|
|
---
|
|
ceilometer:
|
|
alarm_history_time_to_live: "<%= @ceilometer_alarm_history_time_to_live %>"
|
|
event_time_to_live: "<%= @ceilometer_event_time_to_live %>"
|
|
metering_time_to_live: "<%= @ceilometer_metering_time_to_live %>"
|
|
http_timeout: "<%= @ceilometer_http_timeout %>"
|
|
notification_driver: "<%= @ceilometer_notification_driver %>"
|
|
db_password: "<%= @ceilometer_db_password %>"
|
|
enabled: "<%= @ceilometer_enabled %>"
|
|
metering_secret: "<%= @ceilometer_metering_secret %>"
|
|
user_password: "<%= @ceilometer_user_password %>"
|
|
|
|
# Required for StackLight LMA ElasticSearch params
|
|
lma::elasticsearch::script_inline: "<%= @elasticsearch_script_inline %>"
|
|
lma::elasticsearch::script_indexed: "<%= @elasticsearch_script_indexed %>"
|
|
|
|
# Elasticsearch
|
|
|
|
telemetry::elasticsearch::server: "<%= @es_server %>"
|
|
telemetry::elasticsearch::rest_port: "<%= @es_port %>"
|
|
|
|
# IndluxDB
|
|
|
|
telemetry::influxdb::mode: <%= @influxdb_mode %>
|
|
telemetry::influxdb::address: <%= @influxdb_address %>
|
|
telemetry::influxdb::port: <%= @influxdb_port %>
|
|
telemetry::influxdb::database: <%= @influxdb_database %>
|
|
telemetry::influxdb::user: <%= @influxdb_user %>
|
|
telemetry::influxdb::password: <%= @influxdb_password %>
|
|
telemetry::influxdb::retention_period: <%= @retention_period %>
|
|
telemetry::influxdb::rootpass: <%= @influxdb_rootpass %>
|
|
|
|
# Heka
|
|
|
|
telemetry::heka::version: "0.10.0"
|
|
telemetry::heka::max_message_size: 262144
|
|
telemetry::heka::max_process_inject: 1
|
|
telemetry::heka::max_timer_inject: 10
|
|
telemetry::heka::poolsize: 100
|
|
telemetry::heka::config_dir: "/etc/telemetry-collector-heka"
|
|
|
|
# Kafka
|
|
|
|
<% if @kafka_enabled -%>
|
|
telemetry::kafka::broker_list: "<%= @broker_list %>"
|
|
telemetry::kafka::nodes_list:
|
|
<% @kafka_ips.each do |s| -%>
|
|
- "<%= s %>"
|
|
<% end -%>
|
|
telemetry::kafka::zookeeper_list: "<%= @zookeeper_list %>"
|
|
<% end -%>
|
|
telemetry::kafka::enabled: <%= @kafka_enabled %>
|
|
telemetry::kafka::port: <%= @kafka_port %>
|
|
|
|
telemetry::rabbit::url: "<%= @amqp_url %>"
|
|
|
|
telemetry::metadata_fields: "<%= @metadata_fields_default %> <%= @metadata_fields_plugin %>"
|
|
telemetry::lua::modules_dir: "/usr/share/telemetry_lua_modules"
|
|
|
|
')
|
|
|
|
file { $hiera_file:
|
|
ensure => file,
|
|
content => $calculated_content,
|
|
}
|