Merge "Remove Monasca Log Transformer"
This commit is contained in:
commit
6c18e5814e
14
ansible/monasca_cleanup.yml
Normal file
14
ansible/monasca_cleanup.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
- name: Cleanup unused Monasca services
|
||||||
|
hosts:
|
||||||
|
- monasca-api
|
||||||
|
- monasca-grafana
|
||||||
|
- monasca-log-transformer
|
||||||
|
- monasca-log-persister
|
||||||
|
- monasca-log-metrics
|
||||||
|
- monasca-thresh
|
||||||
|
- monasca-notification
|
||||||
|
- monasca-persister
|
||||||
|
roles:
|
||||||
|
- { role: monasca,
|
||||||
|
tags: monasca }
|
@ -20,10 +20,12 @@ monasca_services:
|
|||||||
mode: "http"
|
mode: "http"
|
||||||
external: true
|
external: true
|
||||||
port: "{{ monasca_api_port }}"
|
port: "{{ monasca_api_port }}"
|
||||||
|
# NOTE(dszumski): We can remove log_transformer and all other references after the
|
||||||
|
# Wallaby release
|
||||||
monasca-log-transformer:
|
monasca-log-transformer:
|
||||||
container_name: monasca_log_transformer
|
container_name: monasca_log_transformer
|
||||||
group: monasca-log-transformer
|
group: monasca-log-transformer
|
||||||
enabled: true
|
enabled: false
|
||||||
image: "{{ monasca_logstash_image_full }}"
|
image: "{{ monasca_logstash_image_full }}"
|
||||||
volumes: "{{ monasca_log_transformer_default_volumes + monasca_log_transformer_extra_volumes }}"
|
volumes: "{{ monasca_log_transformer_default_volumes + monasca_log_transformer_extra_volumes }}"
|
||||||
dimensions: "{{ monasca_log_transformer_dimensions }}"
|
dimensions: "{{ monasca_log_transformer_dimensions }}"
|
||||||
@ -175,7 +177,7 @@ monasca_all_topics:
|
|||||||
- name: "{{ monasca_transformed_logs_topic }}"
|
- name: "{{ monasca_transformed_logs_topic }}"
|
||||||
partitions: "{{ monasca_default_topic_partitions }}"
|
partitions: "{{ monasca_default_topic_partitions }}"
|
||||||
replication_factor: "{{ monasca_default_topic_replication_factor }}"
|
replication_factor: "{{ monasca_default_topic_replication_factor }}"
|
||||||
enabled: True
|
enabled: False
|
||||||
- name: "{{ monasca_events_topic }}"
|
- name: "{{ monasca_events_topic }}"
|
||||||
partitions: "{{ monasca_default_topic_partitions }}"
|
partitions: "{{ monasca_default_topic_partitions }}"
|
||||||
replication_factor: "{{ monasca_default_topic_replication_factor }}"
|
replication_factor: "{{ monasca_default_topic_replication_factor }}"
|
||||||
|
@ -14,21 +14,6 @@
|
|||||||
when:
|
when:
|
||||||
- kolla_action != "config"
|
- kolla_action != "config"
|
||||||
|
|
||||||
- name: Restart monasca-log-transformer container
|
|
||||||
vars:
|
|
||||||
service_name: "monasca-log-transformer"
|
|
||||||
service: "{{ monasca_services[service_name] }}"
|
|
||||||
become: true
|
|
||||||
kolla_docker:
|
|
||||||
action: "recreate_or_restart_container"
|
|
||||||
common_options: "{{ docker_common_options }}"
|
|
||||||
name: "{{ service.container_name }}"
|
|
||||||
image: "{{ service.image }}"
|
|
||||||
volumes: "{{ service.volumes }}"
|
|
||||||
dimensions: "{{ service.dimensions }}"
|
|
||||||
when:
|
|
||||||
- kolla_action != "config"
|
|
||||||
|
|
||||||
- name: Restart monasca-log-persister container
|
- name: Restart monasca-log-persister container
|
||||||
vars:
|
vars:
|
||||||
service_name: "monasca-log-persister"
|
service_name: "monasca-log-persister"
|
||||||
|
22
ansible/roles/monasca/tasks/cleanup.yml
Normal file
22
ansible/roles/monasca/tasks/cleanup.yml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
- name: Stop and remove containers for disabled monasca services
|
||||||
|
become: true
|
||||||
|
kolla_docker:
|
||||||
|
action: "stop_and_remove_container"
|
||||||
|
name: "{{ item.value.container_name }}"
|
||||||
|
when:
|
||||||
|
- inventory_hostname in groups[item.value.group]
|
||||||
|
- not item.value.enabled | bool
|
||||||
|
with_dict: "{{ monasca_services }}"
|
||||||
|
|
||||||
|
- name: Removing config for any disabled services
|
||||||
|
file:
|
||||||
|
path: "{{ node_config_directory }}/{{ item.key }}"
|
||||||
|
state: "absent"
|
||||||
|
become: true
|
||||||
|
when:
|
||||||
|
- inventory_hostname in groups[item.value.group]
|
||||||
|
- not item.value.enabled | bool
|
||||||
|
with_dict: "{{ monasca_services }}"
|
||||||
|
|
||||||
|
# NOTE(dszumski): Docker volume removal is currently a manual procedure
|
@ -160,29 +160,11 @@
|
|||||||
notify:
|
notify:
|
||||||
- Restart monasca-api container
|
- Restart monasca-api container
|
||||||
|
|
||||||
- name: Copying over monasca-log-transformer config
|
|
||||||
vars:
|
|
||||||
service: "{{ monasca_services['monasca-log-transformer'] }}"
|
|
||||||
template:
|
|
||||||
src: "{{ item }}"
|
|
||||||
dest: "{{ node_config_directory }}/monasca-log-transformer/log-transformer.conf"
|
|
||||||
mode: "0660"
|
|
||||||
become: true
|
|
||||||
with_first_found:
|
|
||||||
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/log-transformer.conf"
|
|
||||||
- "{{ node_custom_config }}/monasca/log-transformer.conf"
|
|
||||||
- "{{ role_path }}/templates/monasca-log-transformer/log-transformer.conf.j2"
|
|
||||||
when:
|
|
||||||
- inventory_hostname in groups[service['group']]
|
|
||||||
- service.enabled | bool
|
|
||||||
notify:
|
|
||||||
- Restart monasca-log-transformer container
|
|
||||||
|
|
||||||
- name: Ensuring logstash patterns folder exists
|
- name: Ensuring logstash patterns folder exists
|
||||||
vars:
|
vars:
|
||||||
service: "{{ monasca_services['monasca-log-transformer'] }}"
|
service: "{{ monasca_services['monasca-log-persister'] }}"
|
||||||
file:
|
file:
|
||||||
path: "{{ node_config_directory }}/monasca-log-transformer/logstash_patterns"
|
path: "{{ node_config_directory }}/monasca-log-persister/logstash_patterns"
|
||||||
state: "directory"
|
state: "directory"
|
||||||
mode: "0770"
|
mode: "0770"
|
||||||
become: true
|
become: true
|
||||||
@ -200,10 +182,10 @@
|
|||||||
|
|
||||||
- name: Copying over custom logstash patterns
|
- name: Copying over custom logstash patterns
|
||||||
vars:
|
vars:
|
||||||
service: "{{ monasca_services['monasca-log-transformer'] }}"
|
service: "{{ monasca_services['monasca-log-persister'] }}"
|
||||||
template:
|
template:
|
||||||
src: "{{ item.path }}"
|
src: "{{ item.path }}"
|
||||||
dest: "{{ node_config_directory }}/monasca-log-transformer/logstash_patterns/{{ item.path | basename }}"
|
dest: "{{ node_config_directory }}/monasca-log-persister/logstash_patterns/{{ item.path | basename }}"
|
||||||
mode: "0660"
|
mode: "0660"
|
||||||
with_items: "{{ monasca_custom_logstash_patterns.files }}"
|
with_items: "{{ monasca_custom_logstash_patterns.files }}"
|
||||||
become: true
|
become: true
|
||||||
@ -211,7 +193,7 @@
|
|||||||
- inventory_hostname in groups[service['group']]
|
- inventory_hostname in groups[service['group']]
|
||||||
- service.enabled | bool
|
- service.enabled | bool
|
||||||
notify:
|
notify:
|
||||||
- Restart monasca-log-transformer container
|
- Restart monasca-log-persister container
|
||||||
|
|
||||||
- name: Copying over monasca-log-persister config
|
- name: Copying over monasca-log-persister config
|
||||||
vars:
|
vars:
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
- import_tasks: config.yml
|
- import_tasks: config.yml
|
||||||
|
|
||||||
|
- import_tasks: cleanup.yml
|
||||||
|
|
||||||
- import_tasks: check-containers.yml
|
- import_tasks: check-containers.yml
|
||||||
|
|
||||||
# NOTE(dszumski): We don't want old Grafana instances running after
|
# NOTE(dszumski): We don't want old Grafana instances running after
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
input {
|
input {
|
||||||
kafka {
|
kafka {
|
||||||
bootstrap_servers => "{{ monasca_kafka_servers }}"
|
bootstrap_servers => "{{ monasca_kafka_servers }}"
|
||||||
topics => ["{{ monasca_transformed_logs_topic }}"]
|
topics => ["{{ monasca_raw_logs_topic }}"]
|
||||||
group_id => "log_metrics"
|
group_id => "log_metrics"
|
||||||
consumer_threads => "{{ monasca_log_pipeline_threads }}"
|
consumer_threads => "{{ monasca_log_pipeline_threads }}"
|
||||||
codec => json
|
codec => json
|
||||||
|
@ -1,15 +1,41 @@
|
|||||||
# Persist transformed logs to Elasticsearch
|
# Persist logs to Elasticsearch.
|
||||||
|
|
||||||
input {
|
input {
|
||||||
kafka {
|
kafka {
|
||||||
bootstrap_servers => "{{ monasca_kafka_servers }}"
|
bootstrap_servers => "{{ monasca_kafka_servers }}"
|
||||||
topics => ["{{ monasca_transformed_logs_topic }}"]
|
topics => ["{{ monasca_raw_logs_topic }}"]
|
||||||
group_id => "log_persister"
|
group_id => "log_persister"
|
||||||
consumer_threads => "{{ monasca_log_pipeline_threads }}"
|
consumer_threads => "{{ monasca_log_pipeline_threads }}"
|
||||||
codec => json
|
codec => json
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
filter {
|
||||||
|
# Update the timestamp of the event based on the time in the message.
|
||||||
|
date {
|
||||||
|
match => [ "[log][dimensions][timestamp]", "yyyy-MM-dd HH:mm:ss Z", "ISO8601"]
|
||||||
|
remove_field => [ "[log][dimensions][timestamp]", "[log][dimensions][Timestamp]" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Monasca Log API adds a timestamp when it processes a log entry. This
|
||||||
|
# timestamp needs to be converted from seconds since the epoch for
|
||||||
|
# Elasticsearch to parse it correctly. Here we make that conversion.
|
||||||
|
date {
|
||||||
|
match => ["creation_time", "UNIX"]
|
||||||
|
target => "creation_time"
|
||||||
|
}
|
||||||
|
|
||||||
|
# OpenStack log levels are uppercase, and syslog are lowercase.
|
||||||
|
# Furthermore, syslog has more log levels that OpenStack. To avoid
|
||||||
|
# mapping syslog log levels to OpenStack log levels, we standardise
|
||||||
|
# on the syslog style here.
|
||||||
|
if [log][dimensions][log_level] {
|
||||||
|
mutate {
|
||||||
|
lowercase => [ "[log][dimensions][log_level]" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
output {
|
output {
|
||||||
elasticsearch {
|
elasticsearch {
|
||||||
index => "monasca-%{[meta][tenantId]}-%{+YYYY.MM.dd}"
|
index => "monasca-%{[meta][tenantId]}-%{+YYYY.MM.dd}"
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
# Provide input/output streams for transforming Monasca logs.
|
|
||||||
# Filters should be provided in other configuration files.
|
|
||||||
|
|
||||||
input {
|
|
||||||
kafka {
|
|
||||||
bootstrap_servers => "{{ monasca_kafka_servers }}"
|
|
||||||
topics => ["{{ monasca_raw_logs_topic }}"]
|
|
||||||
group_id => "log_transformer"
|
|
||||||
consumer_threads => "{{ monasca_log_pipeline_threads }}"
|
|
||||||
codec => json
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
filter {
|
|
||||||
# Update the timestamp of the event based on the time in the message.
|
|
||||||
date {
|
|
||||||
match => [ "[log][dimensions][timestamp]", "yyyy-MM-dd HH:mm:ss Z", "ISO8601"]
|
|
||||||
remove_field => [ "[log][dimensions][timestamp]", "[log][dimensions][Timestamp]" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Monasca Log API adds a timestamp when it processes a log entry. This
|
|
||||||
# timestamp needs to be converted from seconds since the epoch for
|
|
||||||
# Elasticsearch to parse it correctly. Here we make that conversion.
|
|
||||||
date {
|
|
||||||
match => ["creation_time", "UNIX"]
|
|
||||||
target => "creation_time"
|
|
||||||
}
|
|
||||||
|
|
||||||
# OpenStack log levels are uppercase, and syslog are lowercase.
|
|
||||||
# Furthermore, syslog has more log levels that OpenStack. To avoid
|
|
||||||
# mapping syslog log levels to OpenStack log levels, we standardise
|
|
||||||
# on the syslog style here.
|
|
||||||
if [log][dimensions][log_level] {
|
|
||||||
mutate {
|
|
||||||
lowercase => [ "[log][dimensions][log_level]" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output {
|
|
||||||
kafka {
|
|
||||||
codec => json
|
|
||||||
bootstrap_servers => "{{ monasca_kafka_servers }}"
|
|
||||||
topic_id => "{{ monasca_transformed_logs_topic }}"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"command": "/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ --log.format json --path.logs /var/log/kolla/logstash/monasca-log-transformer -f /etc/logstash/conf.d/log-transformer.conf",
|
|
||||||
"config_files": [
|
|
||||||
{
|
|
||||||
"source": "{{ container_config_directory }}/log-transformer.conf",
|
|
||||||
"dest": "/etc/logstash/conf.d/log-transformer.conf",
|
|
||||||
"owner": "logstash",
|
|
||||||
"perm": "0600"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source": "{{ container_config_directory }}/logstash_patterns/*",
|
|
||||||
"dest": "/etc/logstash/conf.d/patterns/",
|
|
||||||
"owner": "logstash",
|
|
||||||
"perm": "0600",
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"permissions": [
|
|
||||||
{
|
|
||||||
"path": "/var/log/kolla/logstash",
|
|
||||||
"owner": "logstash:kolla",
|
|
||||||
"recurse": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -318,6 +318,42 @@ Apply the password changes by running the following command:
|
|||||||
|
|
||||||
kolla-ansible reconfigure -t monasca
|
kolla-ansible reconfigure -t monasca
|
||||||
|
|
||||||
|
Cleanup
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
From time-to-time it may be necessary to manually invoke the Monasca cleanup
|
||||||
|
command. If this is required during an upgrade it will be mentioned in the
|
||||||
|
release notes. It may also be necessary to run the cleanup command when
|
||||||
|
disabling certain parts of the Monasca pipeline. A full list of scenarios in
|
||||||
|
which you must run the cleanup command is given below:
|
||||||
|
|
||||||
|
- Upgrading from Victoria to Wallaby to remove the unused Monasca Log
|
||||||
|
Transformer service
|
||||||
|
|
||||||
|
The cleanup command can be invoked from the Kolla Ansible CLI, for example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
kolla-ansible monasca_cleanup
|
||||||
|
|
||||||
|
Following cleanup, you may also choose to remove unused container volumes.
|
||||||
|
It is recommended to run this manually on each Monasca service host. Note
|
||||||
|
that `docker prune` will indiscriminately remove all unused volumes,
|
||||||
|
which may not always be what you want. If you wish to keep a subset of
|
||||||
|
unused volumes, you can remove them individually.
|
||||||
|
|
||||||
|
To remove all unused volumes on a host:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
docker prune
|
||||||
|
|
||||||
|
To remove a single unused volume, run for example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
docker volume rm monasca_log_transformer_data
|
||||||
|
|
||||||
System requirements and performance impact
|
System requirements and performance impact
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -335,9 +371,8 @@ Monasca will deploy the following Docker containers:
|
|||||||
* Monasca Agent Statsd
|
* Monasca Agent Statsd
|
||||||
* Monasca API
|
* Monasca API
|
||||||
* Monasca Log API
|
* Monasca Log API
|
||||||
* Monasca Log Transformer (Logstash)
|
|
||||||
* Monasca Log Metrics (Logstash)
|
* Monasca Log Metrics (Logstash)
|
||||||
* Monasca Log Perister (Logstash)
|
* Monasca Log Persister (Logstash)
|
||||||
* Monasca Notification
|
* Monasca Notification
|
||||||
* Monasca Persister
|
* Monasca Persister
|
||||||
* Monasca Thresh (Apache Storm topology)
|
* Monasca Thresh (Apache Storm topology)
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
Monasca Log Transformer has been merged with Monasca Log Persister to
|
||||||
|
improve performance and reduce resource consumption. Any custom Monasca
|
||||||
|
Log Transformer configuration should be either merged into Monasca Log
|
||||||
|
Persister configuration, or moved outside of the Monasca pipeline, for
|
||||||
|
example, to Fluentd. Any custom Monasca Log Metrics config will also
|
||||||
|
need to be updated to read from the raw logs pipeline, rather than the
|
||||||
|
transformed logs pipeline. The transformed logs pipeline will be
|
||||||
|
removed from Kafka automatically, as will any log transformer containers.
|
||||||
|
There will be a short interruption to logging services whilst the
|
||||||
|
pipeline is updated. During this time it's likely that a small window
|
||||||
|
of logs will be lost from the transformed logs Kafka queue. If this
|
||||||
|
is a problem, the Monasca API should be stopped on all nodes prior to
|
||||||
|
upgrading Monasca. This will allow the transformed logs topic to drain
|
||||||
|
into Elasticsearch before the pipeline is reconfigured. Services such
|
||||||
|
as Fluentd, which post logs to the Monasca API, should buffer logs
|
||||||
|
whilst this happens up to the maximum configured buffer. Note that
|
||||||
|
there may be other services forwarding logs, and these will need to be
|
||||||
|
inspected independently. The Log Transformer volumes will remain on
|
||||||
|
the monitoring nodes and can be manually removed as described in the
|
||||||
|
`documentation
|
||||||
|
<https://docs.openstack.org/kolla-ansible/latest/reference/logging-and-monitoring/monasca-guide.html#cleanup>`__.
|
@ -133,6 +133,7 @@ Commands:
|
|||||||
mariadb_backup Take a backup of MariaDB databases
|
mariadb_backup Take a backup of MariaDB databases
|
||||||
--full (default)
|
--full (default)
|
||||||
--incremental
|
--incremental
|
||||||
|
monasca_cleanup Remove unused containers for the Monasca service
|
||||||
bootstrap-servers Bootstrap servers with kolla deploy dependencies
|
bootstrap-servers Bootstrap servers with kolla deploy dependencies
|
||||||
destroy Destroy Kolla containers, volumes and host configuration
|
destroy Destroy Kolla containers, volumes and host configuration
|
||||||
--include-images to also destroy Kolla images
|
--include-images to also destroy Kolla images
|
||||||
@ -175,6 +176,7 @@ prechecks
|
|||||||
check
|
check
|
||||||
mariadb_recovery
|
mariadb_recovery
|
||||||
mariadb_backup
|
mariadb_backup
|
||||||
|
monasca_cleanup
|
||||||
bootstrap-servers
|
bootstrap-servers
|
||||||
destroy
|
destroy
|
||||||
deploy
|
deploy
|
||||||
@ -359,6 +361,11 @@ case "$1" in
|
|||||||
EXTRA_OPTS="$EXTRA_OPTS -e kolla_action=backup -e mariadb_backup_type=${BACKUP_TYPE}"
|
EXTRA_OPTS="$EXTRA_OPTS -e kolla_action=backup -e mariadb_backup_type=${BACKUP_TYPE}"
|
||||||
PLAYBOOK="${BASEDIR}/ansible/mariadb_backup.yml"
|
PLAYBOOK="${BASEDIR}/ansible/mariadb_backup.yml"
|
||||||
;;
|
;;
|
||||||
|
(monasca_cleanup)
|
||||||
|
ACTION="Cleanup unused Monasca services"
|
||||||
|
EXTRA_OPTS="$EXTRA_OPTS -e kolla_action=cleanup"
|
||||||
|
PLAYBOOK="${BASEDIR}/ansible/monasca_cleanup.yml"
|
||||||
|
;;
|
||||||
(destroy)
|
(destroy)
|
||||||
ACTION="Destroy Kolla containers, volumes and host configuration"
|
ACTION="Destroy Kolla containers, volumes and host configuration"
|
||||||
PLAYBOOK="${BASEDIR}/ansible/destroy.yml"
|
PLAYBOOK="${BASEDIR}/ansible/destroy.yml"
|
||||||
|
Loading…
Reference in New Issue
Block a user