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

Поглощение данных с помощью самоуправляемого Logstash

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

Организации обычно генерируют большие объёмы журналов сервисов (в форматах JSON или CSV), часто распределённые по локальным серверам или сторонним облачным платформам. Для централизованного поиска и аналитики в реальном времени вы можете выбрать агрегацию таких данных в кластеры CSS OpenSearch. Однако по соображениям безопасности кластеры CSS часто развертываются в частных сетях (например, VPC), что ограничивает прямое поглощение данных из внешних источников. В этом разделе описывается, как с помощью open-source Logstash безопасно и эффективно поглощать данные в кластеры CSS как в частных, так и в публичных сетевых средах.

Решение

Logstash — это open-source, серверный конвейер обработки данных, который одновременно поглощает данные из нескольких источников, обрабатывает и преобразует их, а затем отправляет в кластеры CSS. Для получения дополнительной информации о Logstash см. официальный документ Getting started with Logstash.

В зависимости от места развертывания сервера Logstash это решение может использовать одну из следующих сетевых архитектур:

  • Сетевая архитектура 1: Прямое соединение внутри VPC (рекомендовано)

    Logstash развернут на ECS, который находится в том же VPC, что и целевой кластер CSS.

    Характеристики: быстро, просто в настройке и безопасно.

    Рисунок 1 Logstash и CSS в одном VPC


  • Сетевая архитектура 2: SSH‑соединение через публичную сеть

    Logstash развернут в локальном дата‑центре или на сервере, расположенном в публичной сети, что не позволяет ему напрямую обращаться к целевому кластеру CSS в частной сети. Для соединения необходимо использовать ECS с публичным IP‑адресом в качестве jump‑сервера. Этот jump‑сервер использует SSH‑перенаправление портов для передачи трафика от Logstash к целевому кластеру в облаке.

    Характеристики: подходит для миграции локальных данных в облако; необходимо настроить перенаправление портов.

    Рисунок 2 Logstash развернут в локальном дата‑центре или в публичной сети


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

  • На сервере, где развертывается Logstash, установлен JDK 1.8 или более поздней версии. Рекомендуется Linux‑сервер.
  • Вы загрузили OSS‑версию (чистый open‑source) Logstash. Рекомендуется Logstash OSS 7.10.2.

    Скачайте Logstash OSS по https://www.elastic.co/downloads/past-releases?product=logstash-oss.

  • Вы получили информацию о подключении как к источнику данных, так и к назначению, включая IP‑адреса, номера портов, учётные записи и пароли.
  • Исходные данные готовы к загрузке.

    Для примера, файл access_20181029.log уже находится в каталоге /tmp/access_log/ на сервере Logstash. Ниже приведён пример данных:

    | 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 |

Сценарий 1: Загрузка данных, когда Logstash и CSS находятся в одной VPC

  1. Подготовьте сеть: убедитесь, что ECS, на котором работает Logstash, и целевой кластер CSS находятся в одной VPC, и что группа безопасности VPC разрешает порт 9200.

    Ping приватного сетевого адреса кластера CSS с ECS, где планируется развернуть Logstash. Если успешно, они соединены.

  2. Установите Logstash на ECS. Ниже представлено руководство по установке для Red Hat Linux. Для других операционных систем см. Installing Logstash.
    1. Сначала используйте yum для установки JDK. Это необходимо, поскольку Logstash зависит от Java.
      yum install java # Replace it with the actual JDK version.
    2. Загрузите скачанный пакет Logstash на ECS.
    3. Используйте yum для установки Logstash.
      yum install logstash-oss-7.10.0-x86_64.rpm

      Замените logstash-oss-7.10.0-x86_64.rpm на фактическое имя пакета установки Logstash.

    1. Измените конфигурацию JVM Logstash для ускорения миграции данных кластера.

      Стандартный размер кучи памяти Logstash составляет 1 ГБ. Рекомендуется изменить его до половины памяти узла кластера.

      vim /etc/logstash/jvm.options
      -Xms4g
      -Xmx4g
  3. (Optional) Подготовьте сертификат безопасности. Если режим безопасности и HTTPS включены для целевого кластера CSS, вы должны загрузить сертификат безопасности кластера в ECS.
    1. Получение сертификата безопасности.
    2. Загрузите скачанный сертификат безопасности в ECS.
  4. Создайте файл конфигурации в каталоге установки Logstash.
    1. Создайте файл конфигурации, например, logstash-simple.conf.
      cd /logstash-x.x/ # Go to the Logstash installation directory.
      vi logstash-simple.conf # Create a configuration file.
    2. Определите input, filter и output в файле конфигурации.
      input {
      # Read local log files.
      file {
      path => "/tmp/access_log/*.log" # Path to the log files
      start_position => "beginning" # Start position for reading data
      }
      }
      filter {
      # Add data filtering logic here, such as grok and mutate.
      }
      output {
      elasticsearch {
      # Enter the cluster's private network address. For a multi-cluster node, enter multiple addresses to allow for load balancing.
      hosts => ["192.168.xxx.xxx:9200", "192.168.xxx.xxx:9200"]
      # Name of the index that events are written to.
      index => "my_import_index"
      # Configure the following for a security-mode cluster. (Delete them if security mode is disabled.)
      # user => "username" # CSS cluster account
      # password => "password" # CSS cluster password
      # ssl => true # Whether SSL is enabled
      # ssl_certificate_verification => false # Whether to enable certificate authentication
      # cacert => "/logstash/config/CloudSearchService.cer" # Absolute path to the security certificate
      # Commonly configured parameters to mitigate compatibility issues
      ilm_enabled => false # Disable index lifecycle management to prevent permission errors.
      manage_template => false # Disable template management.
      }
      }
    3. После завершения конфигурации введите :wq, чтобы сохранить файл конфигурации.
  5. Выполните файл конфигурации для загрузки данных в кластер CSS.
    ./bin/logstash -f logstash-simple.conf # Replace the file name with the actual configuration file name.

    Если возвращено сообщение, похожее на Successfully started Logstash API endpoint, и ошибка не сообщается, задача работает корректно.

  6. После загрузки проверьте целостность данных.
    1. Войдите в консоль управления CSS.
    2. В левой панели навигации выберите Clusters > OpenSearch.
    3. В списке кластеров найдите целевой кластер и нажмите Dashboards в столбце Operation, чтобы войти в OpenSearch Dashboards.
    4. В левой панели навигации выберите Dev Tools.

      Левая часть консоли — это поле ввода команды, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть отображает результат выполнения.

    5. Выполните следующую команду, чтобы проверить недавно загруженные данные:
      GET my_import_index/_count # Check the number of records ingested.
      GET my_import_index/_search # Check the content of the ingested data.

      Если результаты соответствуют источнику, загрузка данных выполнена успешно.

Сценарий 2: Загрузка данных, когда Logstash развернут в публичной сети

  1. Подготовьте jump server. В VPC, где находится кластер CSS, подготовьте Linux ECS с выделенным EIP и настройте правила security group, чтобы разрешить локальный порт (например, 9100).
  2. Создайте SSH‑туннель.
    1. На jump server выполните следующую команду для настройки перенаправления портов, которое перенаправляет запросы, отправленные на открытый порт на jump server, к целевому кластеру:
      ssh -g -L <Local port on the jump server>:<Private IP address of a CSS cluster node>:9200 -N -f root@<The jump server's private network address>

      Например, если открытый локальный порт (разрешённый правилами security group) на jump server — 9100, приватный IP‑адрес узла кластера CSS — 192.168.0.81, а приватный IP‑адрес jump server — 192.168.0.227, команда перенаправления портов выглядит следующим образом:

      ssh -g -L 9100:192.168.0.81:9200 -N -f root@192.168.0.227
      Note

      If the specified CSS cluster node is unavailable, the port mapping command will fail. If the cluster contains multiple nodes, replace <Private IP address of a CSS cluster node> with the IP address of another node. If the cluster contains only one node, you have to wait until the node recovers.

      Для получения дополнительной информации о SSH‑туннелировании см. SSH official documents.

    2. Проверьте подключение.
      curl http://<The jump server's public IP address>:<The jump server's local port>

      If the OpenSearch version information is returned, the tunnel is established. When you configure the Logstash configuration file later, set hosts to <The jump server's public IP address>:<The jump server's local port>.

  3. (Optional) Установите Logstash на сервер, развернутый во внешней сети. Ниже представлено руководство по установке для Red Hat Linux.
    1. Сначала используйте yum для установки JDK. Это необходимо, поскольку Logstash зависит от Java.
      yum install java # Replace it with the actual JDK version.
    2. Загрузите скачанный пакет Logstash в ECS.
    3. Используйте yum для установки Logstash.
      yum install logstash-oss-7.10.0-x86_64.rpm

      Замените logstash-oss-7.10.0-x86_64.rpm на фактическое имя пакета установки Logstash.

    1. Измените конфигурацию JVM Logstash для ускорения миграции данных кластера.

      По умолчанию размер кучи Logstash составляет 1 ГБ. Рекомендуется изменить его до половины памяти узла кластера.

      vim /etc/logstash/jvm.options
      -Xms4g
      -Xmx4g
  4. (Optional) Подготовьте сертификат безопасности. Если для целевого кластера CSS включены режим безопасности и HTTPS, необходимо загрузить сертификат безопасности кластера в ECS.
    1. Obtaining the Security Certificate.
    2. Загрузите скачанный сертификат безопасности в ECS.
  5. Создайте файл конфигурации в каталоге установки Logstash.
    1. Создайте файл конфигурации, например, logstash-simple.conf.
      cd /logstash-x.x/ # Go to the Logstash installation directory.
      vi logstash-simple.conf # Create a configuration file.
    2. Определите input, filter и output в файле конфигурации.
      input {
      # Read local log files.
      file {
      path => "/tmp/access_log/*.log" # Path to the log files
      start_position => "beginning" # Start position for reading data
      }
      }
      filter {
      # Add data filtering logic here, such as grok and mutate.
      }
      output {
      elasticsearch {
      # Enter the local address for the SSH tunnel.
      hosts => ["<The jump server's public IP address>:<The jump server's local port>"]
      # Name of the index that events are written to.
      index => "my_import_index"
      # Configure the following for a security-mode cluster. (Delete them if security mode is disabled.)
      # user => "username" # CSS cluster account
      # password => "password" # CSS cluster password
      # ssl => true # Whether SSL is enabled
      # ssl_certificate_verification => false # Whether to enable certificate authentication
      # cacert => "/logstash/config/CloudSearchService.cer" # Absolute path to the security certificate
      # Commonly configured parameters to mitigate compatibility issues
      ilm_enabled => false # Disable index lifecycle management to prevent permission errors.
      manage_template => false # Disable template management.
      }
      }
    3. После завершения конфигурации введите :wq для сохранения файла конфигурации.
  6. Выполните файл конфигурации для загрузки данных в кластер CSS.
    ./bin/logstash -f logstash-simple.conf # Replace the file name with the actual configuration file name.

    Если возвращается сообщение, похожее на Successfully started Logstash API endpoint, и ошибок не обнаружено, задача работает корректно.

  7. После загрузки проверьте целостность данных.
    1. Войдите в консоль управления CSS.
    2. В панели навигации слева выберите Clusters > OpenSearch.
    3. В списке кластеров найдите целевой кластер и нажмите Дашборд в столбце Operation, чтобы войти в OpenSearch Dashboards.
    4. В левой панели навигации выберите Dev Tools.

      Левая часть консоли представляет собой поле ввода команды, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть отображает результат выполнения.

    5. Выполните следующую команду, чтобы проверить недавно загруженные данные:
      GET my_import_index/_count # Check the number of records ingested.
      GET my_import_index/_search # Check the content of the ingested data.

      Если результаты соответствуют источнику, загрузка данных прошла успешно.

Получение сертификата безопасности

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

  1. Войдите в консоль управления CSS.
  2. В левой панели навигации выберите Clusters > OpenSearch.
  3. В списке кластеров нажмите название целевого кластера. Отобразится страница информации о кластере.
  4. Нажмите вкладку Overview. В области Network Information нажмите Download Certificate под HTTPS Access.