OpenSearch — Логирование и поиск

OpenSearch — инструмент для поиска и анализа данных в документах с открытым исходным кодом. Разработанный на основе Elasticsearch, OpenSearch предоставляет эффективное хранилище и обработку данных, а также масштабируемую архитектуру.

Общая схема сбора журналов и событий аудита описана в статье Журналы и аудит региона.

OpenSearch Dashboards — инструмент для визуализации данных, с помощью которого пользователи могут создавать информативные и интерактивные панели на основе данных из OpenSearch.

Пользователи могут взаимодействовать с данными на дашбордах, применять фильтры и детализировать информацию для более глубокого анализа.

Инструмент предоставляет различные типы визуализаций, включая графики, диаграммы и карты, чтобы визуально представлять разнообразные данные.

OpenSearch Dashboards поддерживает совместную работу, что позволяет нескольким пользователям одновременно создавать и редактировать дашборды.

Помимо этого, дашборды можно импортировать и экспортировать для обмена настройками и визуализациями между различными инсталляциями OpenSearch Dashboards.

При включённом хранении истории алертов (enable_alerts_state_history: yes) в OpenSearch Dashboards импортируются готовые панели для анализа алертов и заглушек. Администраторы также могут создавать собственные панели.

Для подключения к сервису используйте раздел Подключение к OpenSearch.

Создание пользовательских панелей с использованием различных виджетов и визуализаций

Для создания дашборда выполните следующие действия:

  1. Выберите источник данных (происходит определение источника данных из OpenSearch для визуализации).

  2. Добавьте визуализации (выбор и настройка виджетов и визуализаций для отображения данных).

  3. Сконфигурируйте фильтры (применение фильтров для уточнения отображаемых данных).

  4. Определите компоновки (размещение визуализаций на дашборде с учетом их взаимодействия).

  5. Сохраните и опубликуйте (сохранение созданного дашборда и возможность его публикации для общего доступа).

Создание пользовательской панели. Выбор визуализации

Создание пользовательской панели. Выбор визуализации

Создание пользовательской панели. Применение фильтров

Создание пользовательской панели. Применение фильтров

Создание пользовательской панели. Размещение визуализации

Создание пользовательской панели. Размещение визуализации

Подробнее о работе с OpenSearch Dashboards см. в документации OpenSearch Dashboards.

Добавление нового output для сборщика логов

Если требуется сбор логов в дополнительный output, выполните следующие действия:

  1. В репозитории региона в директории config/fluentd/output (создать при отсутствии) создайте (или отредактируйте при наличии) файл 03-opensearch.conf.

    Содержание 03-opensearch.conf:

    <match **>
    @type copy
    <store>
           @type opensearch
           hosts http://{{ opensearch_address }}:{{ opensearch_port }},https://адрес_нового_сборщика:порт_нового_сборщика
    {% if fluentd_opensearch_path != '' %}
           path {{ fluentd_opensearch_path }}
    {% endif %}
    {% if fluentd_opensearch_scheme == 'https' %}
           ssl_version {{ fluentd_opensearch_ssl_version }}
           ssl_verify {{ fluentd_opensearch_ssl_verify }}
    {% if fluentd_opensearch_cacert | length > 0 %}
           ca_file {{ fluentd_opensearch_cacert }}
    {% endif %}
    {% endif %}
    {% if fluentd_opensearch_user != '' and fluentd_opensearch_password != ''%}
           user {{ fluentd_opensearch_user }}
           password {{ fluentd_opensearch_password }}
    {% endif %}
           logstash_format true
           logstash_prefix {{ opensearch_log_index_prefix }}
           reconnect_on_error true
           reload_connections false
           reload_on_failure true
           request_timeout {{ fluentd_opensearch_request_timeout }}
           suppress_type_name true
           ssl_verify false
           <buffer>
           @type file
           path /var/lib/fluentd/data/opensearch.buffer/openstack.*
           flush_interval 15s
           chunk_limit_size 10M
           </buffer>
    </store>
    </match>
    
  2. Запустите пайплайн с тегом common и лимитом на Control-узлы: -t common --limit control.

Создание шаблона индексов в OpenSearch

Для создания шаблона индексов в OpenSearch выполните следующие действия:

  1. Откройте OpenSearch:

    • при включенной ролевой модели перейдите в Портале администратора в раздел Журналы событий > Анализ логов;

    • если ролевая модель выключена или OpenSearch настроен без интеграции с Порталом администратора, перейдите на страницу https://opensearch.<имя домена> и пройдите авторизацию.

  2. При первом входе OpenSearch направит вас на страницу создания шаблонов.

  3. Нажмите кнопку Create index pattern.

  4. В появившемся окне в поле Index pattern name укажите flog* и нажмите Next Step.

  5. В поле Time field выберите из выпадающего списка @timestamp и нажмите Create index pattern.

Настройка глубины хранения индексов в OpenSearch

Данная настройка выполняется в OpenSearch. Откройте OpenSearch:

  • при включенной ролевой модели перейдите в Портале администратора в раздел Журналы событий > Анализ логов;

  • если ролевая модель выключена или OpenSearch настроен без интеграции с Порталом администратора, перейдите на страницу https://opensearch.<имя домена> и пройдите авторизацию.

Затем выберите Index Management > State management policies и добавьте или измените политику:

{
    "policy": {
        "policy_id": "Retention",
        "description": "hot warm delete workflow",
        "schema_version": 16,
        "default_state": "hot",
        "states": [
            {
                "name": "hot",
                "actions": [
                    {
                        "retry": {
                            "count": 3,
                            "backoff": "exponential",
                            "delay": "1m"
                        },
                        "replica_count": {
                            "number_of_replicas": 1
                        }
                    }
                ],
                "transitions": [
                    {
                        "state_name": "warm",
                        "conditions": {
                            "min_index_age": "30d"
                        }
                    }
                ]
            },
            {
                "name": "warm",
                "actions": [
                    {
                        "retry": {
                            "count": 3,
                            "backoff": "exponential",
                            "delay": "1m"
                        },
                        "replica_count": {
                            "number_of_replicas": 0
                        }
                    }
                ],
                "transitions": [
                    {
                        "state_name": "delete",
                        "conditions": {
                            "min_index_age": "60d"
                        }
                    }
                ]
            },
            {
                "name": "delete",
                "actions": [
                    {
                        "retry": {
                            "count": 3,
                            "backoff": "exponential",
                            "delay": "1m"
                        },
                        "delete": {}
                    }
                ],
                "transitions": []
            }
        ],
        "ism_template": [
            {
                "index_patterns": [
                    "flog-*"
                ],
                "priority": 100
            }
        ]
    }
}

В данной политике:

  • Горячие/Hot–индексы хранятся до достижения общего возраста 30 дней с репликой 1. При достижении 30+ дней индексы переходят в warm состояние/state.

  • Прогретые/Warm–индексы хранятся до достижения общего возраста 60 дней с репликой 0. При достижении 60+ дней индексы переходят в delete, т.е. удаляются.