Как собрать журнал с разных серверов на центральный сервер (Elasti c search и kibana) - PullRequest
0 голосов
/ 06 января 2020

Мне поручено создать центральный сервер регистрации. В моем случае существует много серверов веб-приложений. Моя задача - получить журналы с этих разных серверов и управлять ими на центральном сервере, где будут elastic-search и kibana.

Вопрос

  1. Есть Можно ли получить журналы с серверов, которые имеют разные publi c IP? Если возможно, как?
  2. Сколько ресурсов (ЦП, памяти, хранилища) требуется на центральном сервере.

Видимые вещи

  • Изучите примеры настроек, в которых все журналы и приложения находятся только на одном компьютере.

Ищите способ отправки журналов по publi c IP на elasti c -search.

Ответы [ 2 ]

2 голосов
/ 28 января 2020
  1. Да, можно получать журналы с серверов, которые имеют разные публичные c IP. Вам необходимо настроить агент, такой как filebeat (предоставляется elasti c), на каждый сервер, который создает журналы.

    • Вам необходимо настроить filebeat instance на каждом компьютере.

Он будет прослушивать ваши файлы журналов на каждом компьютере и перенаправлять их в экземпляр 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"
            }
    }
    
  • В logsta sh вы можете фильтровать и разбивать ваши журналы на поля и отправлять их вasticsearch.

  • Ресурсы зависят от того, сколько данных вы производите, плана хранения данных, TPS и ваших пользовательских требований. Если вы можете предоставить более подробную информацию, я смог бы дать приблизительное представление о потребности в ресурсах.
1 голос
/ 01 февраля 2020

Я бы хотел отличаться от ответа Ишары. Вы можете отправлять журналы напрямую из filebeat вasticsearch без использования logsta sh, если ваши журналы являются обобщенными c типами (системные журналы, nginx журналы, apache журналы), используя этот подход Вам не нужно go влечет за собой дополнительные расходы и обслуживание logsta sh, поскольку filebeat обеспечивает встроенный процессор синтаксического анализа.

Если на вашем сервере установлена ​​ОС на основе Debian, я подготовил сценарий оболочки для установки и настройки filebeat. Вам необходимо изменить URL-адрес сервераasticsearch и изменить вторую последнюю строку в зависимости от модулей, которые вы хотите настроить.

Что касается вашего первого вопроса, да, вы можете запустить агент filebeat на каждом сервере и отправить данные для централизации Elasticsearch. По вашему второму вопросу, это зависит от количества логов, которые будет обрабатывать и хранить на сервереласти. Это также зависит от того, где находится кибана.

sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

sudo echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

sudo apt-get update && sudo apt-get install -y filebeat

sudo systemctl enable filebeat

sudo bash -c  "cat >/etc/filebeat/filebeat.yml" <<FBEOL
filebeat.inputs:

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

setup.template.name: "filebeat-system"
setup.template.pattern: "filebeat-system-*"
setup.template.settings:
  index.number_of_shards: 1

setup.ilm.enabled: false

setup.kibana:

output.elasticsearch:
  hosts: ["10.32.66.55:9200", "10.32.67.152:9200", "10.32.66.243:9200"]
  indices:
    - index: "filebeat-system-%{+yyyy.MM.dd}"
      when.equals:
        event.module: system

processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~

logging.level: warning

FBEOL

sudo filebeat modules enable system
sudo systemctl restart filebeat
...