parameters: | |
fluentd: | |
agent: | |
config: | |
label: | |
notification_messages: | |
filter: | |
parse_publuisher_host: | |
tag: notification | |
type: parser | |
key_name: publisher_id | |
reserve_data: true | |
parser: | |
type: regexp | |
format: (?<publisher>\w+).(?<hostname>\w+) | |
save_hostname: | |
tag: notification | |
require: | |
- parse_publuisher_host | |
type: record_transformer | |
enable_ruby: true | |
record: | |
- name: Hostname | |
value: ${fluentd:dollar}{ record["hostname"] } | |
parse_source: | |
tag: notification | |
require: | |
- save_hostname | |
type: parser | |
key_name: event_type | |
reserve_data: true | |
parser: | |
type: regexp | |
format: (?<event_type_logger>\w+).+ | |
map_logger: | |
tag: notification | |
require: | |
- parse_source | |
type: record_transformer | |
enable_ruby: true | |
remove_keys: event_type_logger | |
record: | |
- name: Logger | |
value: ${fluentd:dollar}{ {'volume'=>'cinder', 'snapshot'=>'cinder', 'image'=>'glance', 'orchestration'=>'heat', 'identity'=>'keystone', 'compute'=>'nova', 'compute_task'=>'nova', 'scheduler'=>'nova', 'keypair'=>'nova', 'floatingip' =>'neutron', 'security_group' =>'neutron', 'security_group_rule' =>'neutron', 'network' =>'neutron', 'port' =>'neutron', 'router' =>'neutron', 'subnet' =>'neutron', 'sahara' =>'sahara'}[record["event_type_logger"]] } | |
get_payload_values: | |
tag: notification | |
require: | |
- map_logger | |
type: record_transformer | |
enable_ruby: true | |
record: | |
- name: Timestamp | |
value: ${fluentd:dollar}{ DateTime.strptime(record['timestamp'], '%Y-%m-%d %H:%M:%S.%N').strftime('%Y-%m-%dT%H:%M:%S.%3NZ') } | |
- name: severity_label | |
value: ${fluentd:dollar}{ record["priority"] } | |
- name: Severity | |
value: ${fluentd:dollar}{ {'TRACE'=>7,'DEBUG'=>7,'INFO'=>6,'AUDIT'=>6,'WARNING'=>4,'ERROR'=>3,'CRITICAL'=>2}[record['priority']].to_i } | |
- name: Hostname | |
value: '${fluentd:dollar}{ record["payload"].has_key?("host") ? record["payload"]["host"] : record["Hostname"] }' | |
- name: environment_label | |
value: ${_param:cluster_domain} | |
- name: tenant_id | |
value: ${fluentd:dollar}{ record.dig("payload", "tenant_id") } | |
- name: user_id | |
value: ${fluentd:dollar}{ record.dig("payload", "user_id") } | |
- name: display_name | |
value: ${fluentd:dollar}{ record.dig("payload", "display_name") } | |
- name: vcpus | |
value: ${fluentd:dollar}{ record.dig("payload", "vcpus") } | |
- name: availability_zone | |
value: ${fluentd:dollar}{ record.dig("payload", "availability_zone") } | |
- name: instance_id | |
value: ${fluentd:dollar}{ record.dig("payload", "instance_id") } | |
- name: instance_type | |
value: ${fluentd:dollar}{ record.dig("payload", "instance_type") } | |
- name: image_name | |
value: ${fluentd:dollar}{ record.dig("payload", "image_name") } | |
- name: memory_mb | |
value: ${fluentd:dollar}{ record.dig("payload", "memory_mb") } | |
- name: disk_gb | |
value: ${fluentd:dollar}{ record.dig("payload", "disk_gb") } | |
- name: state | |
value: ${fluentd:dollar}{ record.dig("payload", "state") } | |
- name: old_state | |
value: ${fluentd:dollar}{ record.dig("payload", "old_state") } | |
- name: old_task_state | |
value: ${fluentd:dollar}{ record.dig("payload", "old_task_state") } | |
- name: new_task_state | |
value: ${fluentd:dollar}{ record.dig("payload", "new_task_state") } | |
- name: network_id | |
value: ${fluentd:dollar}{ record.dig("payload", "network_id") } | |
- name: subnet_id | |
value: ${fluentd:dollar}{ record.dig("payload", "subnet_id") } | |
- name: port_id | |
value: ${fluentd:dollar}{ record.dig("payload", "port_id") } | |
- name: volume_id | |
value: ${fluentd:dollar}{ record.dig("payload", "volume_id") } | |
- name: size | |
value: ${fluentd:dollar}{ record.dig("payload", "size") } | |
- name: status | |
value: ${fluentd:dollar}{ record.dig("payload", "status") } | |
- name: replication_status | |
value: ${fluentd:dollar}{ record.dig("payload", "replication_status") } | |
pack_payload_to_json: | |
tag: notification | |
require: | |
- get_payload_values | |
type: record_transformer | |
enable_ruby: true | |
remove_keys: '["timestamp", "publisher_id", "priority", "notification_type", "payload"]' | |
record: | |
- name: Payload | |
value: ${fluentd:dollar}{ record["payload"].to_json } | |
match: | |
notifications_output: | |
tag: notification | |
type: elasticsearch | |
host: ${_param:fluentd_elasticsearch_host} | |
port: ${_param:fluentd_elasticsearch_port} | |
scheme: ${_param:fluentd_elasticsearch_scheme} | |
es_index_name: notification | |
tag_key: Type |