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

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

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

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

Logstash — это open-source, серверный конвейер обработки данных, который одновременно получает данные из нескольких источников, обрабатывает и преобразует их, а затем отправляет в Elasticsearch. Для получения подробной информации о 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 с официальный веб‑сайт 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 host и настройте его следующим образом:
    • Jump host — это ECS с ОС Linux, привязанный к EIP.
    • Jump host находится в том же VPC, что и кластер CSS.
    • Для jump host настроено локальное перенаправление портов SSH, которое пересылает запросы с выбранного локального порта на порт 9200 на одном узле кластера CSS.
    • Обратитесь к документация SSH для настройки локального перенаправления портов.
  2. Используйте PuTTY для входа в созданный jump host с помощью EIP.
  3. Выполните следующую команду для настройки сопоставления портов, чтобы перенаправлять запросы, отправленные на открытый порт на переходном хосте, к целевому кластеру:
    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>
    • В предыдущей команде, <Локальный порт переходного хоста> соответствует порту, полученному в 1.
    • В предыдущей команде, <Приватный сетевой адрес и номер порта узла> соответствует приватному сетевому адресу и номеру порта узла в кластере. Если узел неисправен, выполнение команды завершится с ошибкой. Если кластер содержит несколько узлов, вы можете заменить значение <приватный сетевой адрес и номер порта узла> на приватный сетевой адрес и номер порта любого доступного узла в кластере. Если кластер содержит только один узел, восстановите узел и выполните команду снова.
    • Заменить <Приватный IP-адрес jump host> в предыдущей команде с IP-адресом (с Приватный IP) созданного jump host в IP-адрес столбец в списке 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, и сохраните файлы данных, которые нужно импортировать, на сервере.

    Например, файл данных 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>"
    }
    }
    • The ввод параметр указывает источник данных. Установите этот параметр в соответствии с реальными условиями. Подробную информацию о ввод параметр и использовании параметра, посетите следующий веб‑сайт: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
    • The фильтр параметр указывает режим, в котором обрабатываются данные. Например, извлекать и обрабатывать журналы, чтобы преобразовать неструктурированную информацию в структурированную информацию. Для получения подробностей о фильтр параметр и использование параметра, посетите следующий веб‑сайт: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
    • Э вывод параметр указывает адрес назначения данных. Для получения подробностей о вывод параметр и использование параметра, посетите https://www.elastic.co/guide/en/logstash/current/output-plugins.html. Заменить <EIP адрес переходный хост> с IP-адресом (с EIP) созданного переходного хоста в IP-адрес столбец в списке ECS на консоли управления ECS. <Количество порта, назначенного для разрешений доступа к внешней сети на промежуточном хосте> это номер порта, полученный в 1, например, 9200.

    Рассмотрите файлы данных в /tmp/access_log/ путь, указанный в 4 например. Предположим, что импорт данных начинается с данных в первой строке файла данных, условие фильтрации оставлено неуказанным (что указывает на отсутствие операций обработки данных), публичный IP-адрес и номер порта промежуточного хоста 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. В навигационной панели слева выберите Кластеры > Elasticsearch.
  10. В списке кластеров найдите целевой кластер и нажмите Kibana в Операция столбце, чтобы войти в консоль Kibana.
  11. В левой навигационной панели выберите Dev Tools.
  12. В консоли Kibana выполните поиск загруженных данных.

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

    GET myindex/_search

Импорт данных при развернутом Logstash на ECS

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

Рисунок 2 Импорт данных при развернутом Logstash на ECS


  1. Убедитесь, что ECS, на котором развернут Logstash, и кластер, в который должны быть импортированы данные, находятся в одном VPC, порт 9200 у группы безопасности ECS были назначены разрешения на доступ во внешнюю сеть, и к ECS был привязан EIP.
    • Если в 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>"}
    }
    • Эта ввод параметр указывает источник данных. Установите этот параметр в соответствии с реальными условиями. Подробную информацию о ввод параметре и использовании параметра, посетите следующий веб‑сайт: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
    • Параметр filter параметр указывает режим, в котором обрабатываются данные. Например, извлекать и обрабатывать журналы, чтобы преобразовать неструктурированную информацию в структурированную информацию. Для получения подробной информации о filter параметр и использование параметра, посетите следующий веб‑сайт: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
    • Параметр output параметр указывает адрес назначения данных. Для получения подробной информации о output параметр и использование параметра, посетите 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-адрес и номер порта 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. В навигационной панели слева выберите Clusters > Elasticsearch.
  7. В списке кластеров найдите нужный кластер и щелкните Kibana в Операцию столбец для входа в консоль Kibana.
  8. В левой навигационной панели выберите Dev Tools.
  9. В консоли Kibana выполните поиск импортированных данных.

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

    GET myindex/_search

Obtaining the Security Certificate

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

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