mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2026-06-16 07:08:41 +02:00
Merge pull request #15973 from Security-Onion-Solutions/reyesj2/dlm-support
Data stream lifecycle management support
This commit is contained in:
@@ -16,40 +16,35 @@
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% set soc_annotation_lines = [] %}
|
||||
{% set defaults_lines = [] %}
|
||||
{% for k in matched_integration_names %}
|
||||
{% do soc_annotation_lines.append(' ' ~ k ~ ': *dataStreamSettings') %}
|
||||
{% do defaults_lines.append(' ' ~ k ~ ':') %}
|
||||
{% set defaults_yaml = salt['slsutil.serialize']('yaml', ADDON_INTEGRATION_DEFAULTS[k], default_flow_style=False).strip() %}
|
||||
{% for line in defaults_yaml.splitlines() %}
|
||||
{% do defaults_lines.append(' ' ~ line) %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% set es_soc_annotations = '/opt/so/saltstack/default/salt/elasticsearch/soc_elasticsearch.yaml' %}
|
||||
{{ es_soc_annotations }}:
|
||||
file.serialize:
|
||||
- dataset:
|
||||
{% set data = salt['file.read'](es_soc_annotations) | load_yaml %}
|
||||
{% set es = data.get('elasticsearch', {}) %}
|
||||
{% set index_settings = es.get('index_settings', {}) %}
|
||||
{% set input = index_settings.get('so-logs', {}) %}
|
||||
{% for k in matched_integration_names %}
|
||||
{% do index_settings.update({k: input}) %}
|
||||
{% endfor %}
|
||||
{% for k in addon_integration_keys %}
|
||||
{% if k not in matched_integration_names and k in index_settings %}
|
||||
{% do index_settings.pop(k) %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{{ data }}
|
||||
manage_soc_annotations:
|
||||
file.blockreplace:
|
||||
- name: {{ es_soc_annotations }}
|
||||
- marker_start: ' # START managed SOC integration annotations'
|
||||
- marker_end: ' # END managed SOC integration annotations'
|
||||
- content: {{ soc_annotation_lines | join('\n') | tojson }}
|
||||
- insert_after_match: '^ # Managed SOC integration annotations are inserted below this line\.'
|
||||
- append_if_not_found: False
|
||||
- show_changes: True
|
||||
|
||||
{# Managed elasticsearch/defaults.yaml file for enabling 'Revert to default' via SOC UI for newly added config items #}
|
||||
{% set es_defaults = '/opt/so/saltstack/default/salt/elasticsearch/defaults.yaml' %}
|
||||
{{ es_defaults }}:
|
||||
file.serialize:
|
||||
- dataset:
|
||||
{% set data = salt['file.read'](es_defaults) | load_yaml %}
|
||||
{% set es = data.get('elasticsearch', {}) %}
|
||||
{% set index_settings = es.get('index_settings', {}) %}
|
||||
{% for k in matched_integration_names %}
|
||||
{% set input = ADDON_INTEGRATION_DEFAULTS[k] %}
|
||||
{% do index_settings.update({k: input})%}
|
||||
{% endfor %}
|
||||
{% for k in addon_integration_keys %}
|
||||
{% if k not in matched_integration_names and k in index_settings %}
|
||||
{% do index_settings.pop(k) %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{{ data }}
|
||||
{% endif %}
|
||||
file.blockreplace:
|
||||
- marker_start: ' # START managed SOC integration defaults'
|
||||
- marker_end: ' # END managed SOC integration defaults'
|
||||
- content: {{ defaults_lines | join('\n') | tojson }}
|
||||
- insert_after_match: '^ index_settings:$'
|
||||
- append_if_not_found: False
|
||||
- show_changes: True
|
||||
{% endif %}
|
||||
|
||||
@@ -761,9 +761,55 @@ bootstrap_so_soc_database() {
|
||||
echo "so_soc bootstrap complete."
|
||||
}
|
||||
|
||||
# Existing grids should keep ILM unless an admin explicitly opts in to DLM.
|
||||
pin_elasticsearch_data_retention_method() {
|
||||
local elasticsearch_file=/opt/so/saltstack/local/pillar/elasticsearch/soc_elasticsearch.sls
|
||||
mkdir -p "$(dirname "$elasticsearch_file")"
|
||||
[[ -f "$elasticsearch_file" ]] || touch "$elasticsearch_file"
|
||||
|
||||
if so-yaml.py get -r "$elasticsearch_file" elasticsearch.data_retention_method >/dev/null 2>&1; then
|
||||
echo "elasticsearch.data_retention_method already set; leaving as-is."
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Pinning existing grid to ILM data retention."
|
||||
so-yaml.py add "$elasticsearch_file" elasticsearch.data_retention_method ILM
|
||||
chown socore:socore "$elasticsearch_file"
|
||||
}
|
||||
|
||||
# Addes auto_expand_replicas setting to .kibana_streams index template
|
||||
#
|
||||
# In Kibana 9.3.3 the auto_expand_replicas setting was not added to the .kibana_streams index template. Causing single node deployments to be stuck in yellow state (unable to assign replica). Here we update the template in place using the so_kibana system user (system managed index template) to include the auto_expand_replicas setting
|
||||
#
|
||||
# Reference: https://github.com/elastic/kibana/issues/263048
|
||||
kibana_backport_streams_index_template() {
|
||||
local current_template updated_template
|
||||
current_template=$(so-elasticsearch-query "_index_template/.kibana_streams" --retry 3 --retry-delay 5 --fail)
|
||||
|
||||
if [[ -z "$current_template" ]]; then
|
||||
echo "Index template .kibana_streams does not exist, skipping backport."
|
||||
return 0
|
||||
fi
|
||||
|
||||
updated_template=$(jq '.index_templates[0].index_template | .template.settings += {"index.auto_expand_replicas": "0-1"} | del(.created_date_millis, .modified_date_millis)' <<< "$current_template")
|
||||
|
||||
if ! kibana_user_pass=$(/usr/sbin/so-yaml.py get -r /opt/so/saltstack/local/pillar/elasticsearch/auth.sls elasticsearch.auth.users.so_kibana_user.pass); then
|
||||
echo "Unable to retrieve so_kibana_user password, skipping .kibana_streams index template backport."
|
||||
return 0
|
||||
fi
|
||||
|
||||
if ! so-elasticsearch-query "_index_template/.kibana_streams" -XPUT -d "$updated_template" -u "so_kibana:$kibana_user_pass" --retry 3 --retry-delay 5 --fail; then
|
||||
echo "Unable to automatically update .kibana_streams index template"
|
||||
return 0
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
up_to_3.2.0() {
|
||||
fix_logstash_0013_lumberjack_pipeline_name
|
||||
|
||||
pin_elasticsearch_data_retention_method
|
||||
|
||||
INSTALLEDVERSION=3.2.0
|
||||
}
|
||||
|
||||
@@ -774,6 +820,8 @@ post_to_3.2.0() {
|
||||
echo "Regenerating Elastic Agent Installers"
|
||||
/sbin/so-elastic-agent-gen-installers
|
||||
|
||||
kibana_backport_streams_index_template
|
||||
|
||||
POSTVERSION=3.2.0
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user