Облачная платформаAdvanced

Использование разработанного внутри компании Logstash для загрузки данных в кластер OpenSearch

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

С CSS, вы можете использовать разработанный внутри компании Logstash для загрузки данных в OpenSearch для эффективного поиска и исследования. Поддерживаемые форматы данных включают JSON и CSV.

Logstash — это открытая, серверная конвейерная обработка данных, который загружает данные из нескольких источников одновременно, обрабатывает и преобразует их, а затем отправляет в OpenSearch. Для получения дополнительной информации о Logstash посетите https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html

В зависимости от места развертывания Logstash существуют два сценария загрузки данных:

Предварительные условия

  • Для облегчения операций рекомендуется развернуть Logstash на Хосте, работающем под операционной системой Linux (OS).
  • Logstash должен использовать OSS‑версию, совместимую с версией CSS‑кластера. Чтобы скачать Logstash, перейдите к https://www.elastic.co/downloads/logstash-oss.
  • JDK должен быть установлен до установки Logstash. В Linux‑OS вы можете выполнить yum -y install java-1.8.0 команда для установки JDK 1.8.0. В Windows‑OS вы можете скачать требуемую версию JDK с официaльный веб‑сайт JDK, а затем установите его, следуя руководству по установке.
  • После установки Logstash выполните указанные ниже шаги для загрузки данных. Для получения подробной информации о том, как установить Logstash, посетите следующий веб‑сайт: https://www.elastic.co/guide/en/logstash/current/installing-logstash.html
  • В Загрузка данных при развертывании Logstash с использованием ECS сценарий, убедитесь, что ECS и целевой кластер Elasticsearch находятся в одном VPC.

Загрузка данных при развертывании Logstash во внешней сети

Рисунок 1 иллюстрирует процесс загрузки данных при развертывании Logstash во внешней сети.

Рисунок 1 Процесс загрузки данных при развертывании Logstash во внешней сети


  1. Создайте jump Хост и настройте его следующим образом:
    • Jump Хост — это ECS, работающий под Linux OS, к нему привязан EIP.
    • Jump Хост находится в том же VPC, что и целевой кластер.
    • Для Jump Хоста настроено SSH локальное переадресование портов, позволяющее пересылать запросы с выбранного локального порта на порт 9200 на одном узле CSS кластера.
    • Обратитесь к Документация SSH по конфигурации локального переадресования портов.
  2. Используйте PuTTY для входа в jump Хост через его EIP.
  3. Выполните следующую команду, чтобы настроить отображение портов и перенаправить запросы, отправленные на открытый порт на jump host к целевому кластеру:
    ssh -g -L <Local port of the jump host:Private network address and port number of a node> -N -f root@<Private IP address of the jump host>
    • В приведённой выше команде, <Локальный порт jump host> относится к порту jump host, настроенному в 1.
    • В приведённой выше команде, <Private network address and port number of a node> относится к частному сетевому адресу и номеру порта узла в кластере. Если узел неисправен, выполнение команды завершится неудачей. Если кластер содержит несколько узлов, вы можете заменить значение <private network address and port number of a node> на частный сетевой адрес и номер порта любого доступного узла в кластере. Если кластер содержит только один узел, восстановите узел и снова выполните команду.
    • Замените <Частный IP адрес jump host> в предыдущей команде с IP address (with Private IP) созданного jump host в IP Address столбце в списке ECS в консоли управления ECS.

    Например, порт 9200 на jump host доступен из публичной сети, частный сетевой адрес и номер порта узла 192.168.0.81 и 9200, соответственно, и частный IP-адрес jump host 192.168.0.227. Необходимо выполнить следующую команду для выполнения порт‑маппинга:

    ssh -g -L 9200:192.168.0.81:9200 -N -f root@192.168.0.227
  4. Войдите в сервер, где развернут Logstash, и сохраните файлы для ingest на этом сервере.

    Например, файл данных access_20181029_log нужно загрузить, путь к файловому хранилищу /tmp/access_log/ (создайте папку access_log, если она еще не существует), и файл данных содержит следующие данные:

    | All | Heap used for segments | | 18.6403 | MB |
    | All | Heap used for doc values | | 0.119289 | MB |
    | All | Heap used for terms | | 17.4095 | MB |
    | All | Heap used for norms | | 0.0767822 | MB |
    | All | Heap used for points | | 0.225246 | MB |
    | All | Heap used for stored fields | | 0.809448 | MB |
    | All | Segment count | | 101 | |
    | All | Min Throughput | index-append | 66232.6 | docs/s |
    | All | Median Throughput | index-append | 66735.3 | docs/s |
    | All | Max Throughput | index-append | 67745.6 | docs/s |
    | All | 50th percentile latency | index-append | 510.261 | ms |
  5. На сервере, где развернут Logstash, выполните следующую команду для создания файла конфигурации logstash-simple.conf в каталоге установки Logstash:
    cd /<Logstash installation directory>/
    vi logstash-simple.conf
  6. Введите следующее содержимое в logstash-simple.conf:
    input {
    Location of data
    }
    filter {
    Related data processing
    }
    output {
    elasticsearch {
    hosts => "<EIP of the jump host>:<Number of the port assigned external network access permissions on the jump host>"
    }
    }
    • Элемент ввод параметр указывает источник данных. Установите этот параметр в соответствии с реальными условиями. Для получения подробной информации о ввод параметр и его использование, посетите следующий веб‑сайт: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
    • Элемент фильтр параметр указывает метод обработки данных. Например, извлекать и обрабатывать логи, чтобы преобразовать неструктурированную информацию в структурированную. Подробности о фильтр параметр и его использование, посетите следующий веб‑сайт: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
    • Эта output параметр указывает адрес назначения данных. Подробности о output параметр и его использование, посетите https://www.elastic.co/guide/en/logstash/current/output-plugins.html. Замените <EIP-адрес jump host> на IP-адрес (с EIP) созданного jump host в IP-адрес столбец в списке ECS в консоли управления ECS. <Порт, доступный из публичной сети на jump host> это номер порта, полученный в 1, например, 9200.

    Рассмотрите файлы данных в /tmp/access_log/ путь, указанный в 4 как пример. Предположим, что загрузка данных начинается с первой строки файла, условие фильтрации оставлено неопределённым (что указывает на отсутствие операций обработки данных), публичный IP‑адрес и номер порта jump host являются 192.168.0.227 и 9200, соответственно, и имя целевого индекса myindex. Отредактируйте файл конфигурации следующим образом, и введите :wq чтобы сохранить изменение и выйти.

    input {
    file{
    path => "/tmp/access_log/*"
    start_position => "beginning"
    }
    }
    filter {
    }
    output {
    elasticsearch {
    hosts => "192.168.0.227:9200"
    index => "myindex"
    }
    }
    Note

    Если возникла ошибка лицензии, установите ilm_enabled на false чтобы попытаться исправить ошибку.

    Если в кластере включён режим безопасности, сначала необходимо загрузить сертификат.

    1. Получение сертификата безопасности.
    2. Сохраните загруженный сертификат на сервере, где развернут Logstash.
    3. Измените logstash-simple.conf файл конфигурации.

      Учтите файлы данных в /tmp/access_log/ путь, указанный в 4 в качестве примера. Предположим, что загрузка данных начинается с первой строки файла, условие фильтрации оставлено неуказанным (что указывает на отсутствие операций обработки данных), публичный IP‑адрес и номер порта jump host являются 192.168.0.227 и 9200, соответственно, имя индекса для импорта данных myindex, и сертификат хранится в /logstash/config/CloudSearchService.cer. Отредактируйте файл конфигурации следующим образом и введите :wq для сохранения изменения и выхода.

      input{
      file {
      path => "/tmp/access_log/*"
      start_position => "beginning"
      }
      }
      filter {
      }
      output{
      elasticsearch{
      hosts => ["https://192.168.0.227:9200"]
      index => "myindex"
      user => "admin" # Username for accessing the security-mode cluster
      password => "******" # Password for accessing the security-mode cluster
      cacert => "/logstash/config/CloudSearchService.cer"
      manager_template => false
      ilm_enabled => false
      ssl => true
      ssl_certificate_verification => false
      }
      }

  7. Выполните следующую команду для импорта данных, собранных Logstash, в кластер:
    ./bin/logstash -f logstash-simple.conf

    Эту команду необходимо выполнить в каталоге, где находится logstash-simple.conf файл расположен. Например, если logstash-simple.conf файл хранится в /root/logstash-7.1.1/, перейдите в этот каталог перед выполнением команды.

  8. Войдите в консоль управления CSS.
  9. В навигационной панели слева выберите Кластеры > OpenSearch.
  10. В списке кластеров найдите целевой кластер и нажмите Дашборды в Операция столбце, чтобы войти в OpenSearch Dashboards.
  11. В левой навигационной панели выберите Dev Tools.
  12. На Консоль странице OpenSearch Dashboards выполните поиск загруженных данных.

    Запустите следующую команду для поиска данных. Проверьте результаты поиска. Если они соответствуют загруженным данным, загрузка данных прошла успешно.

    GET myindex/_search

Загрузка данных при развертывании Logstash с использованием ECS

Figure 2 иллюстрирует процесс загрузки данных, когда Logstash развернут на ECS, находящемся в том же VPC, что и целевой кластер.

Figure 2 Процесс загрузки данных при развертывании Logstash на ECS


  1. Убедитесь, что ECS, на котором развернут Logstash, и целевой кластер находятся в одном VPC, порт 9200 открыт в группе безопасности ECS, чтобы разрешить внешний сетевой доступ, и EIP был связан с ECS.
    • Если в VPC несколько серверов, вам достаточно связать EIP только с одним из этих серверов. Переключитесь на узел, где развернут Logstash, с узла, с которым связан EIP.
    • Если доступна частная линия или VPN, EIP не требуется.
  2. Используйте PuTTY для входа в ECS.

    Например, файл access_20181029_log хранится в /tmp/access_log/ путь ECS, и файл содержит следующие данные:

    | All | Heap used for segments | | 18.6403 | MB |
    | All | Heap used for doc values | | 0.119289 | MB |
    | All | Heap used for terms | | 17.4095 | MB |
    | All | Heap used for norms | | 0.0767822 | MB |
    | All | Heap used for points | | 0.225246 | MB |
    | All | Heap used for stored fields | | 0.809448 | MB |
    | All | Segment count | | 101 | |
    | All | Min Throughput | index-append | 66232.6 | docs/s |
    | All | Median Throughput | index-append | 66735.3 | docs/s |
    | All | Max Throughput | index-append | 67745.6 | docs/s |
    | All | 50th percentile latency | index-append | 510.261 | ms |

  3. Выполните следующую команду для создания файла конфигурации logstash-simple.conf в каталоге установки Logstash:
    cd /<Logstash installation directory>/
    vi logstash-simple.conf

    Введите следующее содержимое в logstash-simple.conf:

    input {
    Location of data
    }
    filter {
    Related data processing
    }
    output {
    elasticsearch{
    hosts => "<Private network address and port number of the node>"}
    }
    • Эта input параметр указывает источник данных. Установите этот параметр в соответствии с фактическими условиями. Для получения подробной информации о input параметр и его использование, посетите следующий веб‑сайт: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
    • Эта фильтр параметр указывает метод обработки данных. Например, извлекать и обрабатывать логи для преобразования неструктурированной информации в структурированную информацию. Для получения подробной информации о фильтр параметр и его использование, посетите следующий веб‑сайт: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
    • Эта вывод параметр указывает адрес назначения данных. Для получения подробной информации о вывод параметр и его использование, посетите https://www.elastic.co/guide/en/logstash/current/output-plugins.html. <частный сетевой адрес и номер порта узла> относится к частному сетевому адресу и номеру порта узла в кластере.

      Если кластер содержит несколько узлов, рекомендуется заменить значение <Приватный сетевой адрес и номер порта узла> с приватными сетевыми адресами и номерами портов всех узлов в кластере для предотвращения сбоев узлов. Используйте запятые (,) для разделения приватных сетевых адресов и номеров портов узлов. Следующий пример:

      hosts => ["192.168.0.81:9200","192.168.0.24:9200"]

      Если кластер содержит только один узел, формат следующий:

      hosts => "192.168.0.81:9200"

    Рассмотрите файлы данных в /tmp/access_log/ путь, упомянутый в 2 например. Предположим, что загрузка данных начинается с первой строки файла, условие фильтрации оставлено неопределённым (что указывает на отсутствие операций обработки данных), приватный сетевой адрес и номер порта узла в целевом кластере 192.168.0.81 и 9200, соответственно, и имя целевого индекса myindex. Отредактируйте файл конфигурации следующим образом и введите :wq чтобы сохранить изменение и выйти.

    input {
    file{
    path => "/tmp/access_log/*"
    start_position => "beginning"
    }
    }
    filter {
    }
    output {
    elasticsearch {
    hosts => "192.168.0.81:9200"
    index => "myindex"
    }
    }

    Если у кластера включён режим безопасности, сначала необходимо загрузить сертификат.

    1. Получение сертификата безопасности.
    2. Сохраните загруженный сертификат на сервер, где развернут Logstash.
    3. Измените logstash-simple.conf файл конфигурации.

      Рассмотрите файлы данных в /tmp/access_log/ путь, указанный в шаге 2 в качестве примера. Предположим, что загрузка данных начинается с первой строки файла, условие фильтрации не указано (что указывает на отсутствие операций обработки данных), публичный IP address и номер порта jump host являются 192.168.0.227 и 9200, соответственно, имя индекса для импорта данных myindex, а сертификат хранится в /logstash/config/CloudSearchService.cer. Отредактируйте файл конфигурации следующим образом и введите :wq чтобы сохранить изменения и выйти.

      input{
      file {
      path => "/tmp/access_log/*"
      start_position => "beginning"
      }
      }
      filter {
      }
      output{
      elasticsearch{
      hosts => ["https://192.168.0.227:9200"]
      index => "myindex"
      user => "admin" # Username for accessing the security-mode cluster
      password => "******" # Password for accessing the security-mode cluster
      cacert => "/logstash/config/CloudSearchService.cer"
      manager_template => false
      ilm_enabled => false
      ssl => true
      ssl_certificate_verification => false
      }
      }

  4. Выполните следующую команду, чтобы импортировать данные ECS, собранные Logstash, в кластер:
    ./bin/logstash -f logstash-simple.conf
  5. Войдите в консоль управления CSS.
  6. В левой навигационной панели выберите Кластеры > OpenSearch.
  7. В списке кластеров найдите целевой кластер и нажмите Дашборды в Операция столбце, чтобы войти в OpenSearch Dashboards.
  8. В левой навигационной панели выберите Dev Tools.
  9. На Консоль страница OpenSearch Dashboards, выполните поиск по загруженным данным.

    Выполните следующую команду для поиска данных. Проверьте результаты поиска. Если они соответствуют загруженным данным, загрузка данных прошла успешно.

    GET myindex/_search

Obtaining the Security Certificate

Для доступа к OpenSearch‑кластеру в режиме безопасности, использующему HTTPS, необходимо загрузить сертификат безопасности. Чтобы получить этот сертификат безопасности (CloudSearchService.cer), выполните следующие действия:

  1. Войдите в консоль управления CSS.
  2. В навигационной панели слева выберите Clusters > OpenSearch.
  3. В списке кластеров щёлкните название целевого кластера. Отобразится страница информации о кластере.
  4. Щёлкните Overview вкладка. В Конфигурация область, клик Скачать сертификат рядом с HTTPS Доступ.