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

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

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

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

Решение

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

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

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

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

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

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


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

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

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

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


Требования

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

    Download 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. (Необязательно) Подготовьте сертификат безопасности. Если режим безопасности и 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 {
      # 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 > Elasticsearch.
    3. В списке кластеров найдите целевой кластер и нажмите Kibana в столбце Operation, чтобы войти в консоль Kibana.
    4. В левой панели навигации Kibana выберите 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 cluster, подготовьте Linux ECS с выделенным EIP и настройте правила security group, чтобы разрешить локальный порт (например, 9100).
  2. Создайте SSH‑туннель.
    1. На jump server выполните следующую команду для настройки port mapping, которая перенаправляет запросы, отправленные на открытый порт на 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 cluster — 192.168.0.81, а приватный IP‑адрес jump server — 192.168.0.227, команда port mapping выглядит следующим образом:

      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 Elasticsearch 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) Подготовьте сертификат безопасности. Если для целевого CSS cluster включён security mode и HTTPS, необходимо загрузить сертификат безопасности кластера в ECS.
    1. Obtaining the Security Certificate.
    2. Загрузите загруженный сертификат безопасности в ECS.
  4. (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
  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 > Elasticsearch.
    3. В списке кластеров найдите целевой кластер и нажмите Kibana в столбце Operation, чтобы войти в консоль Kibana.
    4. В левой панели навигации Kibana выберите 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.

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

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

Для доступа к кластеру Elasticsearch в режиме безопасности, использующему HTTPS, выполните следующие шаги, чтобы получить сертификат безопасности CloudSearchService.cer, если это требуется.

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