Как собирать логи в Elasticsearch - PullRequest
2 голосов
/ 07 января 2020

У меня есть журналы веб-приложений на разных серверах (много машин). Как я могу собрать эти журналы в системе, где у меня установлены Elasti c search и Kibana. Когда я искал, я нашел только учебники, которые показывают настройки, где logs, logstash, beats, elasticsearch и kibana все вместе.

Ответы [ 6 ]

4 голосов
/ 26 января 2020

Поскольку у вас много машин, которые создают журналы, вам необходимо настроить стек ELK с помощью Filebeat, Logsta sh, Elasticsearch и Kibana.

  • Вам необходимо настроить filebeat экземпляр на каждой машине.

Он будет прослушивать ваши файлы журналов на каждой машине и перенаправлять их в экземпляр logsta sh, который вы упомянули в filebeat.yml файле конфигурации, как показано ниже:

#=========================== Filebeat inputs =============================

filebeat.inputs:

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /path_to_your_log_1/ELK/your_log1.log
    - /path_to_your_log_2/ELK/your_log2.log

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["private_ip_of_logstash_server:5044"]
  • Logsta sh сервер прослушивает порт 5044 и передает все журналы через файлы конфигурации logsta sh:

    input {
          beats { port => 5044 }      
    }
    filter {
        # your log filtering logic is here
    }
    output {
            elasticsearch {
                hosts => [ "elasticcsearch_server_private_ip:9200" ]
                index => "your_idex_name"
            }
    }
    
  • In logsta sh Вы можете фильтровать и разбивать свои журналы на поля и отправлять их вasticsearch.

  • Elasticsearch сохраняет все данные, которые мы отправляем через logsta sh, в индексы.
  • Все данные в База данныхasticsearch может быть прочитана через Kibana. Мы можем создавать информационные панели с различными типами диаграмм на основе наших данных, используя kibana.

Ниже приведена базовая c архитектура для ELK с filebeat:

image

3 голосов
/ 07 января 2020
  • Сначала необходимо установить Filebeat, который собирает журналы со всех веб-серверов.
  • После этого необходимо передавать журналы из Filebeat -> Logsta sh.
  • In Logsta sh Вы можете форматировать и отбрасывать ненужные журналы на основе шаблона Grok.
  • Пересылать журналы из Logsta sh -> Elasticsearch для хранения и индексации.
  • Подключите Kibana с Elasticsearch, чтобы добавить Index и просматривать журналы в матрице на основе выбранного индекса.
2 голосов
/ 28 января 2020

Чтобы получить все журналы вашего веб-приложения, вам нужно настроить стек ELK. Прямо сейчас у вас есть настройка поиска elasti c, представляющая собой базу данных, в которой сохраняются все данные журналов. Чтобы просмотреть эти журналы, вам нужен Kibana, который представляет собой пользовательский интерфейс, а затем вам нужны Logsta sh и Filebeat, чтобы прочитать эти журналы вашего приложения и перенести его в Logsta sh или непосредственно в Elasticsearch.
Если вы хотите правильная система централизованных журналов, тогда я рекомендую вам использовать Logsta sh также с Filebeat. Поскольку у вас есть разные серверы, чем на каждом сервере, вы устанавливаете Filebeat и на свой главный сервер, на котором у вас есть kibana, а Elasticsearch устанавливает Logsta sh и указывает все Filebeats на этот сервер.

FileBeats - это легкие поставщики данных, которые мы устанавливаем в качестве агентов на серверах для отправки определенных c типов рабочих данных в Logsta sh, а затем logsta sh выполняет фильтрацию и отправляет эти данные журналов вasticsearch.

Проверка Как настроить ELK следуйте инструкциям на этом сайте. Также посмотрите FileBeat + ELK Setup

2 голосов
/ 27 января 2020

Как уже упоминалось в других ответах, вам нужно будет установить Filebeat на все ваши экземпляры, чтобы прослушивать ваш файл журнала и отправлять журналы. Ваша конфигурация Filebeat будет зависеть от формата вашего журнала (например, log4j) и от того, куда вы хотите его отправить (например: Kafka, Logsta sh, Elasticsearch).

Пример конфигурации:

filebeat.inputs:
- type: log
  paths:
    - /var/log/system.log
  multiline.pattern: '^\REGEX_TO_MATCH_YOUR_LOG_FORMAT'
  multiline.negate: true
  multiline.match: after

output.elasticsearch:
  hosts: ["https://localhost:9200"]
  username: "filebeat_internal"
  password: "YOUR_PASSWORD"

Также Logsta sh является , а не обязательным, если вы не хотите его использовать, журналы можно отправлять напрямую в Elasticsearch, но вам потребуется настроить конвейер загрузки в кластере Elasticsearch для обработки входящих журналы, подробнее о приемных конвейерах здесь .

Также еще одна полезная ссылка: Работа с входящими конвейерами в ElasticSearch и Filebeat

1 голос
/ 28 января 2020

Если вы не хотите добавлять другой инструмент в стек Elasticsearch и Kibana, вы можете напрямую отправлять журналы в Elasticsearch, но вы должны быть осторожны при построении своего конвейера, чтобы иметь более стабильную систему.

Для сбора журналов вы можете использовать python или другой язык, но для python я бы использовал эту библиотеку: https://elasticsearch-py.readthedocs.io/en/master/

Существует также другой средний учебник для python:

https://medium.com/naukri-engineering/elasticsearch-tutorial-for-beginners-using-python-b9cb48edcedc

Если вы предпочитаете другие языки, чтобы pu sh ваши журналы упругого поиска, наверняка вы также можете использовать их. Я просто предложил python, потому что я более знаком с ним, и вы также можете использовать его для создания быстрого прототипа, прежде чем делать его живым продуктом.

1 голос
/ 07 января 2020

Вы можете использовать Splunk и Splunk forwarder, чтобы собрать все логи вместе. Используйте сервер пересылки Splunk на веб-серверах, чтобы пересылать все журналы на централизованный сервер, на котором установлен Splunk.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...