One place for hosting & domains

      Elastic

      Установка Elasticsearch, Logstash и Kibana (комплекс Elastic) в Ubuntu 18.04


      Автор выбрал Internet Archive для получения пожертвования в рамках программы Write for DOnations.

      Введение

      Комплекс Elastic Stack (прежнее название — комплекс ELK) представляет собой набор программного обеспечения Elastic с открытым исходным кодом, обеспечивающий возможности поиска, анализа и визуализации журналов, сгенерированных любым источником в любом формате (централизованное ведение журнала). Централизованное ведение журнала очень полезно для выявления проблем с серверами или приложениями, поскольку обеспечивает возможности поиска всех журнальных записей в одном месте. Также данная возможность позволяет выявлять проблемы, распространяющиеся на несколько серверов, посредством сопоставления их журналов за определенный период времени.

      Комплекс Elastic Stack имеет четыре основных компонента:

      • Elasticsearch: распределенная поисковая система RESTful, которая сохраняет все собранные данные.
      • Logstash: элемент обработки данных комплекса Elastic, отправляющий входящие данные в Elasticsearch.
      • Kibana: веб-интерфейс для поиска и визуализации журналов.
      • Beats: компактные элементы переноса данных одиночного назначения, которые могут отправлять данные с сотен или тысяч компютеров в Logstash или Elasticsearch.

      В этом обучающем модуле вы научитесь устанавливать Elastic Stack на сервере Ubuntu 18.04. Вы научитесь устанавливать все компоненты Elastic Stack, в том числе Filebeat, инструмент для перенаправления и централизации журналов и файлов, а также настраивать эти компоненты для сбора и визуализации системных журналов. Кроме того, поскольку компонент Kibana обычно доступен только через localhost, мы будем использовать Nginx в качестве прокси для обеспечения доступа через браузер. Мы установим все эти компоненты на одном сервере, который будем называть нашим сервером Elastic Stack.

      Примечание. При установке Elastic Stack необходимо использовать одну и ту же версию для всего комплекса. В этом обучающем модуле мы установим последние версии компонентов комплекса. На момент написания это Elasticsearch 6.4.3, Kibana 6.4.3, Logstash 6.4.3 и Filebeat 6.4.3.

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

      Для этого обучающего модуля вам потребуется следующее:

      • Сервер Ubuntu 18.04, настроенный в соответствии с указаниями обучающего модуля «Начальная настройка сервера для Ubuntu 18.04», включая пользователя без привилегий root с привилегиями sudo и настроенный брандмауэр ufw. Требования сервера комплекса Elastic к ресурсам процессора, оперативной памяти и хранения данных зависят от объема журналов, который вы планируете собирать. В этом обучающем модуле мы будем использовать для нашего комплекса Elastic сервер VPS со следующими спецификациями:

        • ОС: Ubuntu 18.04
        • ОЗУ: 4 ГБ
        • ЦП: 2
      • На сервере должно быть установлено программное обеспечение Java 8, которое требуется для Elasticsearch и Logstash. Обратите внимание, что версия Java 9 не поддерживается. Для установки следуйте указаниям раздела «Установка Oracle JDK» нашего руководства по установке Java 8 в Ubuntu 18.04.

      • На сервере должен быть установлен Nginx, который мы позднее настроим как обратный прокси для Kibana. Для настройки следуйте указаниям нашего обучающего модуля «Установка Nginx в Ubuntu 18.04».

      Кроме того, поскольку комплекс Elastic используется для доступа ценной информации о вашем сервере, которую вам нужно защищать, очень важно обеспечить защиту сервера сертификатом TLS/SSL. Это необязательно, но настоятельно рекомендуется.

      Однако поскольку вы будете вносить изменения в серверный блок Nginx в ходе выполнения этого обучающего модуля, разумнее всего будет пройти обучающий модуль «Let’s Encrypt в Ubuntu 18.04» после прохождения второго шага настоящего обучающего модуля. Если вы планируете настроить на сервере Let’s Encrypt, вам потребуется следующее:

      • Полностью квалифицированное доменное имя (FQDN). В этом обучающем модуле мы будем использовать имя example.com. Вы можете купить доменное имя на Namecheap, получить его бесплатно на Freenom или воспользоваться услугами любого предпочитаемого регистратора доменных имен.
      • На вашем сервере должны быть настроены обе нижеследующие записи DNS. В руководстве «Введение в DigitalOcean DNS» содержится подробная информация по их добавлению.

        • Запись A, где example.com указывает на публичный IP-адрес вашего сервера.
        • Запись A, где www.example.com указывает на публичный IP-адрес вашего сервера.

      Шаг 1 — Установка и настройка Elasticsearch

      Компоненты комплекса Elastic отсутствуют в репозиториях пакетов Ubuntu по умолчанию. Однако их можно установить с помощью APT после добавления списка источников пакетов Elastic.

      Все пакеты комплекса Elastic подписаны ключом подписи Elasticsearch для защиты вашей системы от поддельных пакетов. Ваш диспетчер пакетов будет считать надежными пакеты, для которых проведена аутентификация с помощью ключа. На этом шаге вы импортируете открытый ключ Elasticsearch GPG и добавить список источников пакетов Elastic для установки Elasticsearch.

      Для начала запустите следующую команду для импорта открытого ключа Elasticsearch GPG в APT:

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

      Затем добавьте список источников Elastic в каталог sources.list.d, где APT будет искать новые источники:

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

      Затем обновите списки пакетов, чтобы APT мог прочитать новый источник Elastic:

      Установите Elasticsearch с помощью следующей команды:

      • sudo apt install elasticsearch

      После завершения установки Elasticsearch используйте предпочитаемый текстовый редактор для редактирования главного файла конфигурации Elasticsearch с именем elasticsearch.yml. Мы будем использовать nano:

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Примечание. Файл конфигурации Elasticsearch имеет формат YAML, и это значит, что отступы имеют большое значение! Не добавляйте никакие дополнительные пробелы при редактировании этого файла.

      Elasticsearch прослушивает весь трафик порта 9200. Вы можете захотеть ограничить внешний доступ к вашему экземпляру Elasticsearch, чтобы посторонние не могли читать ваши данные или отключать ваш кластер Elasticsearch через REST API. Найдите строку с указанием network.host, уберите с нее значок комментария и замените значение на localhost, чтобы она выглядела следующим образом:

      /etc/elasticsearch/elasticsearch.yml

      . . .
      network.host: localhost
      . . .
      

      Сохраните и закройте файл elasticsearch.yml, нажав CTRL+X, а затем Y и ENTER, если вы используете nano. Затем запустите службу Elasticsearch с помощью systemctl:

      • sudo systemctl start elasticsearch

      Затем запустите следующую команду, чтобы активировать Elasticsearch при каждой загрузке сервера:

      • sudo systemctl enable elasticsearch

      Вы можете протестировать работу службы Elasticsearch, отправив запрос HTTP:

      • curl -X GET "localhost:9200"

      Вы получите ответ, содержащий базовую информацию о локальном узле:

      Output

      { "name" : "ZlJ0k2h", "cluster_name" : "elasticsearch", "cluster_uuid" : "beJf9oPSTbecP7_i8pRVCw", "version" : { "number" : "6.4.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "04711c2", "build_date" : "2018-09-26T13:34:09.098244Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }

      Мы настроили и запустили Elasticsearch, и теперь можем перейти к установке Kibana, следующего компонента комплекса Elastic.

      Шаг 2 — Установка и настройка информационной панели Kibana

      Согласно официальной документации, Kibana следует устанавливать только после установки Elasticsearch. Установка в этом порядке обеспечивает правильность установки зависимостей компонентов.

      Поскольку вы уже добавили источник пакетов Elastic на предыдущем шаге, вы можете просто установить все остальные компоненты комплекса Elastic с помощью apt:

      Затем активируйте и запустите службу Kibana:

      • sudo systemctl enable kibana
      • sudo systemctl start kibana

      Поскольку согласно настройкам Kibana прослушивает только localhost, мы должны задать обратный прокси, чтобы разрешить внешний доступ. Для этого мы используем Nginx, который должен быть уже установлен на вашем сервере.

      Вначале нужно использовать команду openssl для создания административного пользователя Kibana, которого вы будете использовать для доступа к веб-интерфейсу Kibana. Для примера мы назовем эту учетную запись kibanaadmin, однако для большей безопасности мы рекомендуем выбрать нестандартное имя пользователя, которое будет сложно угадать.

      Следующая команда создаст административного пользователя Kibana и пароль и сохранит их в файле htpasswd.users. Вы настроите Nginx для использования этого имени пользователя и пароля и моментально прочитаете этот файл:

      • echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

      Введите и подтвердить пароль в диалоговом окне. Запомните или запишите эти учетные данные, поскольку они вам потребуются для доступа к веб-интерфейсу Kibana.

      Теперь мы создадим файл серверного блока Nginx. В качестве примера мы присвоим этому файлу имя example.com, хотя вы можете дать ему более описательное имя. Например, если вы настроили записи FQDN и DNS для этого сервера, вы можете присвоить этому файлу имя FQDN:

      • sudo nano /etc/nginx/sites-available/example.com

      Добавьте в файл следующий блок кода, заменив example.com для соответствия FQDN или публичному IP-адресу вашего сервера. Этот код настраивает Nginx для перенаправления трафика HTTP вашего сервера в приложение Kibana, которое прослушивает порт localhost:5601. Также он настраивает Nginx для чтения файла htpasswd.users и требует использования базовой аутентификации.

      Если вы выполнили предварительный обучающий модуль по Nginx до конца, возможно вы уже создали этот файл и заполнили его. В этом случае удалите из файла все содержание и добавьте следующее:

      /etc/nginx/sites-available/example.com

      server {
          listen 80;
      
          server_name example.com;
      
          auth_basic "Restricted Access";
          auth_basic_user_file /etc/nginx/htpasswd.users;
      
          location / {
              proxy_pass http://localhost:5601;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
          }
      }
      

      Завершив редактирование, сохраните и закройте файл.

      Затем активируйте новую конфигурацию, создав символическую ссылку на каталог sites-enabled. Если вы уже создали файл серверного блока с тем же именем, что и в обучающем модуле по Nginx, вам не нужно выполнять эту команду:

      • sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

      Затем проверьте конфигурацию на синтаксические ошибки:

      Если в результатах будут показаны какие-либо ошибки, вернитесь и еще раз проверьте правильность изменений в файле конфигурации. Когда вы увидите на экране результатов сообщение syntax is ok, перезапустите службу Nginx:

      • sudo systemctl restart nginx

      Если вы следовали указаниям модуля по начальной настройке сервера, у вас должен быть включен брандмауэр UFW. Чтобы разрешить соединения с Nginx, мы можем изменить правила с помощью следующей команды:

      • sudo ufw allow 'Nginx Full'

      Примечание. Если вы выполнили предварительный обучающий модуль Nginx, вы могли уже создать правило UFW, разрешающее профилю Nginx HTTP доступ через брандмауэр. Поскольку профиль Nginx Full разрешает трафик HTTP и HTTPS на брандмауэре, вы можете безопасно удалить ранее созданное правило. Для этого нужно использовать следующую команду:

      • sudo ufw delete allow 'Nginx HTTP'

      Теперь приложение Kibana доступно через FQDN или публичный IP-адрес вашего сервера комплекса Elastic. Вы можете посмотреть страницу состояния сервера Kibana, открыв следующий адрес и введя свои учетные данные в диалоге:

      http://your_server_ip/status
      

      На этой странице состояния отображается информация об использовании ресурсов сервера, а также выводится список установленных плагинов.

      |Страница состояния Kibana

      Примечание. Как указывалось в разделе предварительных требований, рекомендуется включить на сервере SSL/TLS. Вы можете следовать указаниям этого модуля, чтобы получить бесплатный сертификат SSL для Nginx в Ubuntu 18.04. После получения сертификата SSL/TLS вы можете вернуться и завершить прохождение этого обучающего модуля.

      Теперь информационная панель Kibana настроена и мы перейдем к установке следующего компонента: Logstash.

      Шаг 3 — Установка и настройка Logstash

      Хотя Beats может отправлять данные напрямую в базу данных Elasticsearch, мы рекомендуем использовать для обработки данных Logstash. Это позволит вам собирать данные из разных источников, преобразовывать их в общий формат и экспортировать в другую базу данных.

      Установите Logstash с помощью следующей команды:

      • sudo apt install logstash

      После установки Logstash вы можете перейти к настройке. Файлы конфгурации Logstash имеют формат JSON и находятся в каталоге /etc/logstash/conf.d. При настройке полезно представлять Logstash как конвейер, который принимает данные с одной стороны, обрабатывает их и отправляет в пункт назначения (в данном случае в Elasticsearch). Конвейер Logstash имеет два обязательных элемента, input и output, а также необязательный элемент filter. Плагины ввода потребляют данные источника, плагины фильтра обрабатывают данные, а плагины вывода записывают данные в пункт назначения.

      Конвейер Logstash

      Создайте файл конфигурации с именем 02-beats-input.conf, где вы настроите ввод данных Filebeat:

      • sudo nano /etc/logstash/conf.d/02-beats-input.conf

      Вставьте следующую конфигурацию input. В ней задается ввод beats, который прослушивает порт TCP 5044.

      /etc/logstash/conf.d/02-beats-input.conf

      input {
        beats {
          port => 5044
        }
      }
      

      Сохраните и закройте файл. Затем создайте файл конфигурации с именем 10-syslog-filter.conf, куда мы добавим фильтр для системных журналов или syslogs:

      • sudo nano /etc/logstash/conf.d/10-syslog-filter.conf

      Вставьте следующую конфигурацию фильтра syslog. В этом примере конфигурация системных журналов взята из официальной документации по Elastic. Этот фильтр используется для синтаксического анализа входящих системных журналов, их структуризации и преобразования в удобный для использования вид с помощью панелей Kibana:

      /etc/logstash/conf.d/10-syslog-filter.conf

      filter {
        if [fileset][module] == "system" {
          if [fileset][name] == "auth" {
            grok {
              match => { "message" => ["%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:[%{POSINT:[system][auth][pid]}])?: %{DATA:[system][auth][ssh][event]} %{DATA:[system][auth][ssh][method]} for (invalid user )?%{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]} port %{NUMBER:[system][auth][ssh][port]} ssh2(: %{GREEDYDATA:[system][auth][ssh][signature]})?",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:[%{POSINT:[system][auth][pid]}])?: %{DATA:[system][auth][ssh][event]} user %{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:[%{POSINT:[system][auth][pid]}])?: Did not receive identification string from %{IPORHOST:[system][auth][ssh][dropped_ip]}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sudo(?:[%{POSINT:[system][auth][pid]}])?: s*%{DATA:[system][auth][user]} :( %{DATA:[system][auth][sudo][error]} ;)? TTY=%{DATA:[system][auth][sudo][tty]} ; PWD=%{DATA:[system][auth][sudo][pwd]} ; USER=%{DATA:[system][auth][sudo][user]} ; COMMAND=%{GREEDYDATA:[system][auth][sudo][command]}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} groupadd(?:[%{POSINT:[system][auth][pid]}])?: new group: name=%{DATA:system.auth.groupadd.name}, GID=%{NUMBER:system.auth.groupadd.gid}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} useradd(?:[%{POSINT:[system][auth][pid]}])?: new user: name=%{DATA:[system][auth][user][add][name]}, UID=%{NUMBER:[system][auth][user][add][uid]}, GID=%{NUMBER:[system][auth][user][add][gid]}, home=%{DATA:[system][auth][user][add][home]}, shell=%{DATA:[system][auth][user][add][shell]}$",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} %{DATA:[system][auth][program]}(?:[%{POSINT:[system][auth][pid]}])?: %{GREEDYMULTILINE:[system][auth][message]}"] }
              pattern_definitions => {
                "GREEDYMULTILINE"=> "(.|n)*"
              }
              remove_field => "message"
            }
            date {
              match => [ "[system][auth][timestamp]", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
            }
            geoip {
              source => "[system][auth][ssh][ip]"
              target => "[system][auth][ssh][geoip]"
            }
          }
          else if [fileset][name] == "syslog" {
            grok {
              match => { "message" => ["%{SYSLOGTIMESTAMP:[system][syslog][timestamp]} %{SYSLOGHOST:[system][syslog][hostname]} %{DATA:[system][syslog][program]}(?:[%{POSINT:[system][syslog][pid]}])?: %{GREEDYMULTILINE:[system][syslog][message]}"] }
              pattern_definitions => { "GREEDYMULTILINE" => "(.|n)*" }
              remove_field => "message"
            }
            date {
              match => [ "[system][syslog][timestamp]", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
            }
          }
        }
      }
      

      Сохраните и закройте файл после завершения.

      Наконец, создайте файл конфигурации 30-elasticsearch-output.conf:

      • sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

      Вставьте следующую конфигурацию output. Этот вывод настраивает Logstash для хранения данных Beats в Elasticsearch, запущенном на порту localhost:9200, в индексе с названием используемого компонента Beat. В этом обучающем модуле используется компонент Beat под названием Filebeat:

      /etc/logstash/conf.d/30-elasticsearch-output.conf

      output {
        elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
        }
      }
      

      Сохраните и закройте файл.

      Если вы you хотите добавить фильтры для других приложений, использующих ввод Filebeat, присваивайте файлам имена, чтобы их можно было сортировать между конфигурациями ввода и вывода. Это значит, что имена файлов должны начинаться с двузначных чисел от 02 до 30.

      Протестируйте свою конфигурацию Logstash с помощью следующей команды:

      • sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

      Если ошибок синтаксиса нет, вы увидите сообщение Configuration OK спустя несколько секунд. Если вы не увидите этого сообщения, проверьте ошибки вывода и обновите конфигурацию для их исправления.

      Если тестирование конфигурации выполнено успешно, запустите и активируйте Logstash, чтобы изменения конфигурации вступили в силу:

      • sudo systemctl start logstash
      • sudo systemctl enable logstash

      Теперь Logstash работает нормально и полностью настроен, и мы можем перейти к установке Filebeat.

      Шаг 4 — Установка и настройка Filebeat

      Комплекс Elastic Stack использует несколько компактных элементов транспортировки данных (Beats) для сбора данных из различных источников и их транспортировки в Logstash или Elasticsearch. Ниже перечислены компоненты Beats, доступные в Elastic:

      • Filebeat: собирает и отправляет файлы журнала.
      • Metricbeat: собирает метрические показатели использования систем и служб.
      • Packetbeat: собирает и анализирует данные сети.
      • Winlogbeat: собирает данные журналов событий Windows.
      • Auditbeat: собирает данные аудита Linux и отслеживает целостность файлов.
      • Heartbeat: отслеживает доступность услуг посредством активного зондирования.

      В этом обучающем модуле мы используем Filebeat для перенаправления локальных журналов в комплекс Elastic Stack.

      Установите Filebeat с помощью apt:

      • sudo apt install filebeat

      Затем настройте Filebeat для подключения к Logstash. Здесь мы изменим образец файла конфигурации, входящий в комплектацию Filebeat.

      Откройте файл конфигурации Filebeat:

      • sudo nano /etc/filebeat/filebeat.yml

      Примечание. Как и в Elasticsearch, файл конфигурации Filebeat имеет формат YAML. Это означает, что в файле учитываются отступы, и вы должны использовать точно такое количество пробелов, как указано в этих инструкциях.

      Filebeat поддерживает разнообразные выводы, но обычно события отправляются только напрямую в Elasticsearch или в Logstash для дополнительной обработки. В этом обучающем модуле мы будем использовать Logstash для дополнительной обработки данных, собранных Filebeat. Filebeat не потребуется отправлять данные в Elasticsearch напрямую, поэтому мы отключим этот вывод. Для этого мы найдем раздел output.elasticsearch и поставим перед следующими строками значок комментария #:

      /etc/filebeat/filebeat.yml

      ...
      #output.elasticsearch:
        # Array of hosts to connect to.
        #hosts: ["localhost:9200"]
      ...
      

      Затем настроим раздел output.logstash. Уберите режим комментариев для строк output.logstash: и hosts: ["localhost:5044"], удалив значки #. Так мы настроим Filebeat для подключения к Logstash на сервере комплекса Elastic Stack через порт 5044, который мы ранее задали для ввода Logstash:

      /etc/filebeat/filebeat.yml

      output.logstash:
        # The Logstash hosts
        hosts: ["localhost:5044"]
      

      Сохраните и закройте файл.

      Функции Filebeat можно расширить с помощью модулей Filebeat. В этом обучающем модуле мы будем использовать модуль system, который собирает и проверяет данные журналов, созданных службой регистрации систем в распространенных дистрибутивах Linux.

      Давайте активируем его:

      • sudo filebeat modules enable system

      Вы увидите список включенных и отключенных модулей с помощью следующей команды:

      • sudo filebeat modules list

      Вы увидите примерно следующий список:

      Output

      Enabled: system Disabled: apache2 auditd elasticsearch icinga iis kafka kibana logstash mongodb mysql nginx osquery postgresql redis traefik

      Filebeat по умолчанию настроен для использования путей по умолчанию для системных журналов и журналов авторизации. Для целей данного обучающего модуля вам не нужно ничего изменять в конфигурации. Вы можете посмотреть параметры модуля в файле конфигурации /etc/filebeat/modules.d/system.yml.

      Затем загрузите в Elasticsearch шаблон индекса. Индекс Elasticsearch — это коллекция документов со сходными характеристиками. Индексы идентифицируются по имени, которое используется для ссылки на индекс при выполнении различных операций внутри него. Шаблон индекса применяется автоматически при создании нового индекса.

      Используйте следующую команду для загрузки шаблона:

      • sudo filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

      Output

      Loaded index template

      В комплект Filebeat входят образцы информационных панелей Kibana, позволяющие визуализировать данные Filebeat в Kibana. Прежде чем вы сможете использовать информационные панели, вам нужно создать шаблон индекса и загрузить информационные панели в Kibana.

      При загрузке информационных панелей Filebeat подключается к Elasticsearch для проверки информации о версиях. Для загрузки информационных панелей при включенном Logstash необходимо отключить вывод Logstash и активировать вывод Elasticsearch:

      • sudo filebeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

      Вы получите следующий результат:

      Output

      2018-09-10T08:39:15.844Z INFO instance/beat.go:273 Setup Beat: filebeat; Version: 6.4.2 2018-09-10T08:39:15.845Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:15.845Z INFO pipeline/module.go:98 Beat name: elk 2018-09-10T08:39:15.845Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:15.849Z INFO elasticsearch/client.go:708 Connected to Elasticsearch version 6.4.2 2018-09-10T08:39:15.856Z INFO template/load.go:129 Template already exists and will not be overwritten. Loaded index template Loading dashboards (Kibana must be running and reachable) 2018-09-10T08:39:15.857Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:15.865Z INFO elasticsearch/client.go:708 Connected to Elasticsearch version 6.4.2 2018-09-10T08:39:15.865Z INFO kibana/client.go:113 Kibana url: http://localhost:5601 2018-09-10T08:39:45.357Z INFO instance/beat.go:659 Kibana dashboards successfully loaded. Loaded dashboards 2018-09-10T08:39:45.358Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:45.361Z INFO elasticsearch/client.go:708 Connected to Elasticsearch version 6.4.2 2018-09-10T08:39:45.361Z INFO kibana/client.go:113 Kibana url: http://localhost:5601 2018-09-10T08:39:45.455Z WARN fileset/modules.go:388 X-Pack Machine Learning is not enabled Loaded machine learning job configurations

      Теперь вы можете запустить и активировать Filebeat:

      • sudo systemctl start filebeat
      • sudo systemctl enable filebeat

      Если вы правильно настроили комплекс Elastic, Filebeat начнет отправлять системный журнал и журналы авторизации в Logstash, откуда эти данные будут загружаться в Elasticsearch.

      Чтобы подтвердить получение этих данных в Elasticsearch необходимот отправить в индекс Filebeat запрос с помощью следующей команды:

      • curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

      Вы увидите примерно следующий результат:

      Output

      ... { "took" : 32, "timed_out" : false, "_shards" : { "total" : 3, "successful" : 3, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1641, "max_score" : 1.0, "hits" : [ { "_index" : "filebeat-6.4.2-2018.10.10", "_type" : "doc", "_id" : "H_bZ62UBB4D0uxFRu_h3", "_score" : 1.0, "_source" : { "@version" : "1", "message" : "Oct 10 06:22:36 elk systemd[1]: Reached target Local File Systems (Pre).", "@timestamp" : "2018-10-10T08:43:56.969Z", "host" : { "name" : "elk" }, "source" : "/var/log/syslog", "input" : { "type" : "log" }, "tags" : [ "beats_input_codec_plain_applied" ], "offset" : 296, "prospector" : { "type" : "log" }, "beat" : { "version" : "6.4.2", "hostname" : "elk", "name" : "elk" } } }, ...

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

      Шаг 5 — Изучение информационных панелей Kibana

      Давайте получше познакомимся с веб-интерфейсом Kibana, который мы установили на одном из предыдущих шагов.

      Откройте в браузере FQDN или публичный IP-адрес вашего сервера Elastic Stack. После ввода учетных данных, заданных на шаге 2, вы увидите главную страницу Kibana:

      Главная страница Kibana

      Нажмите ссылку Discover в левой панели навигации для обзора интерфейса. Выберите на странице Discover заранее настроенный индекс filebeat- для просмотра данных Filebeat. По умолчанию при этом будут выведены все данные журналов за последние 15 минут. Ниже вы увидите гистограмму с событиями журнала и некоторыми сообщениями журнала:

      Страница Discover

      Здесь вы можете искать и просматривать журналы, а также настраивать информационные панели. Сейчас на этой странице будет немного данных, потому что вы собираете системные журналы только со своего сервера Elastic Stack.

      Используйте левую панель навигации для перехода на страницу Dashboard и выполните на этой странице поиск информационных панелей Filebeat System. На этой странице вы можете искать образцы информационных панелей, входящих в комплектацию модуля system в Filebeat.

      Например, вы можете просматривать подробную статистику по сообщениям системного журнала:

      Информационная панель Syslog

      Также вы сможете видеть, какие пользователи использовали команду sudo и когда:

      Информационная панель Sudo

      В Kibana имеется множество других функций, в том числе функции фильтрации и составления диаграмм, так что вы можете свободно их исследовать.

      Заключение

      В этом обучающем модуле вы научились устанавливать и настраивать комплекс Elastic Stack для сбора и анализа данных системных журналов. Помните, что вы можете отправлять в Logstash практически любые типы данных журнала и индексированных данных с помощью Beats, однако данные будут более полезны, если они будут проанализированы и структурированы с помощью фильтра Logstash, который преобразует данные в единый формат, легко читаемый Elasticsearch.



      Source link

      Cómo instalar Elasticsearch, Logstash y Kibana (Elastic Stack) en Ubuntu 18.04


      El autor seleccionó el lnternet Archive para recibir una donación como parte del programa Write for DOnations.

      Introducción

      Elastic Stack, previamente conocida como la pila ELK, es una colección de software de código abierto producido por Elastic que le permite buscar, analizar, y visualizar registros generados desde cualquier fuente y en cualquier formato, una práctica conocida como registro centralizado. El registro centralizado puede ser muy útil al intentar identificar problemas en sus servidores o aplicaciones, ya que le permite realizar búsquedas en todos sus registros desde un solo sitio. También es útil porque le permite identificar problemas que abarcan varios servidores vinculando sus registros durante un período de tiempo específico.

      Elastic Stack cuenta con cuatro componentes principales:

      • Elasticsearch: motor de búsqueda de RESTful distribuido que almacena todos los datos recopilados.
      • Logstash: componente de procesamiento de datos de Elastic Stack que envía datos entrantes a Elasticsearch.
      • Kibana: interfaz web para buscar y visualizar registros.
      • Beats: transportadores de datos ligeros de uso único que pueden enviar datos de cientos o miles de máquinas a Logstash o Elasticsearch.

      A través de este tutorial, instalará Elastic Stack en un servidor de Ubuntu 18.04. Aprenderá a instalar todos los componentes de Elastic Stack, incluido Filebeat, un Beat que se usa para reenviar y centralizar registros y archivos, y los configurará para recopilar y visualizar registros del sistema. Además, debido a que Kibana normalmente está sólo disponible en el localhost, usaremos Nginx para hacer un proxy de modo que el acceso sea posible a través de un navegador web. Instalaremos todos estos componentes en un único servidor al que nos referiremos como nuestro servidor de pila de Elastic.

      Nota: Al instalar Elastic Stack, debe usar la misma versión en toda la pila. A los efectos de este tutorial, instalaremos las últimas versiones de toda la pila que, al redactarse el presente artículo, fueron Elasticsearch 6.4.3, Kibana 6.4.3, Logstash 6.4.3 y Filebeat 6.4.3.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      • Un servidor de Ubuntu 18.04 configurado siguiendo nuestra Guía de configuración inicial para servidores de Ubuntu 18.04, incluidos un usuario no root con privilegios sudo y un firewall configurado con ufw. La proporción de CPU, RAM y almacenamiento que su servidor de Elastic Stack requiere depende del volumen de registros que desee recopilar. Para este tutorial, usaremos un VPS con las siguientes especificaciones para nuestro servidor de Elastic Stack:

        • SO: Ubuntu 18.04
        • RAM: 4 GB
        • CPU: 2
      • Java 8 (requerido por Elasticsearch y Logstash) instalado en su servidor. Tenga en cuenta que Java 9 no es compatible. Para instalarlo, siga la sección “Instalar JDK de Oracle” de nuestra guía de instalación de Java 8 en Ubuntu 18.04.

      • Nginx instalado en su servidor, que configuraremos más adelante en esta guía como proxy inverso para Kibana. Para configurarlo, siga nuestra guía Cómo instalar Nginx en Ubuntu 18.04.

      Además, debido a que Elastic Stack se usa para acceder a información valiosa sobre su servidor a la que no quiere que accedan usuarios no autorizados, es importante que mantenga su servidor protegido instalando un certificado TLS o SSL. Esto es opcional, pero se** recomienda mucho**.

      Sin embargo, ya que eventualmente realizará cambios en su bloque de servidor de Nginx a lo largo de esta guía, es probable que tenga más sentido completar la guía de Let´s Encrypt sobre Ubuntu 18.04 al final del segundo paso de este tutorial. Teniendo eso en cuenta, si planea configurar Let´s Encrypt en su servidor, necesitará lo siguiente antes de hacerlo:

      • Un nombre de dominio totalmente apto (FQDN). Para este tutorial, se utilizará example.com en todo momento. Puede adquirir un nombre de dominio en Namecheap, obtener uno gratuito en Freenom o utilizar un registrador de dominios de su elección.
      • Los dos registros DNS que se indican a continuación se han configurado para su servidor. Puede utilizar esta introducción al DNS de DigitalOcean para obtener más información sobre cómo agregarlos.

        • Un registro A con example.com​​​ orientado a la dirección IP pública de su servidor.
        • Un registro A con example.com​​​ ​​orientado a la dirección IP pública de su servidor.

      Paso 1: Instalar y configurar Elasticsearch

      Los componentes de Elastic Stack no están disponibles en los repositorios de paquetes predeterminados de Ubuntu. Sin embargo, pueden instalarse con APT una vez que agregue la lista de fuentes de paquetes de Elastic.

      Todos los paquetes de Elastic Stack están firmados con la clave de firma de Elasticsearch para proteger su sistema contra la suplantación de paquetes. Su administrador de paquetes considerará confiables los paquetes autenticados con la clave. En este paso, importará la clave GPG pública de Elasticsearch y agregará la lista de fuentes de paquetes de Elastic para instalar Elasticsearch.

      Para comenzar, ejecute el siguiente comando a fin de importar la clave de GPG pública de Elasticsearch en APT:

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

      A continuación, agregue la lista de fuentes de Elastic al directorio sources.list.d, donde APT buscará nuevas fuentes:

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

      A continuación, actualice sus listas de paquetes para que APT lea la nueva fuente de Elastic:

      Luego, instale Elasticsearch con este comando:

      • sudo apt install elasticsearch

      Una vez que Elasticsearch complete la instalación, utilice su editor de texto preferido para editar el archivo de configuración principal de Elasticsearch, elasticsearch.yml. En este caso, utilizaremos nano:

      • sudo nano /etc/elasticsearch/elasticsearch.yml

      Nota: El archivo de configuración de Elasticsearch tiene formato YAML; esto significa que la indentación es muy importante. Asegúrese de no añadir espacios adicionales al editar este archivo.

      Elasticsearch escucha el tráfico de todos los lugares en el puerto 9200. Deberá restringir el acceso externo a su instancia de Elasticsearch para evitar que terceros lean sus datos o cierren su clúster de Elasticsearch a través de la API REST. Encuentre la línea que especifica network.host, quite los comentarios y sustituya su valor por localhost para que tenga este aspecto:

      /etc/elasticsearch/elasticsearch.yml

      . . .
      network.host: localhost
      . . .
      

      Guarde y cierre elasticsearch.yml presionando CTRL+X, seguido de Y y ENTER si está usando nano. A continuación, inicie el servicio de Elasticsearch con systemctl:

      • sudo systemctl start elasticsearch

      Luego, ejecute el siguiente comando para permitir que Elasticsearch se cargue cada vez que su servidor se inicie:

      • sudo systemctl enable elasticsearch

      Puede comprobar si su servicio de Elasticsearch se está ejecutando enviando una solicitud HTTP:

      • curl -X GET "localhost:9200"

      Visualizará una respuesta que mostrará información básica sobre su nodo local, similar a la siguiente:

      Output

      { "name" : "ZlJ0k2h", "cluster_name" : "elasticsearch", "cluster_uuid" : "beJf9oPSTbecP7_i8pRVCw", "version" : { "number" : "6.4.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "04711c2", "build_date" : "2018-09-26T13:34:09.098244Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }

      Ahora que Elasticsearch está configurado y activo, instalaremos Kibana, el siguiente componente de Elastic Stack.

      Paso 2: Instalar y configurar el panel de Kibana

      De acuerdo con la documentación oficial, deberá instalar Kibana sólo después de instalar Elasticsearch. La instalación en este orden garantiza que los componentes de los que depende cada producto estén correctamente implementados.

      Debido a que ya agregó la fuente de paquetes de Elastic en el paso anterior, puede instalar los componentes restantes de Elastic Stack usando apt:

      A continuación, habilite e inicie el servicio de Kibana:

      • sudo systemctl enable kibana
      • sudo systemctl start kibana

      Debido a que Kibana está configurado para escuchar solo en localhost, debemos configurar un proxy inverso para permitir el acceso externo a este. Utilizaremos Nginx para este propósito, que ya debería estar instalado en su servidor.

      Primero, utilice el comando openssl para crear un usuario administrativo de Kibana que usará para acceder a la interfaz web de Kibana. Como ejemplo, nombraremos esta cuenta kibanaadmin, pero para garantizar una mayor seguridad, le recomendamos elegir un nombre no estándar para su usuario que sea difícil de adivinar.

      Con el siguiente comando se crearán el usuario y la contraseña administrativa de Kibana, y se almacenarán en el archivo htpasswd.users. Configurará Nginx para que requiera este nombre de usuario y contraseña, y lea este archivo de manera momentánea:

      • echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

      Introduzca y confirme una contraseña cuando se le solicite. Recuerde este dato de inicio de sesión o tome nota de él, ya que lo necesitará para acceder a la interfaz web de Kibana.

      A continuación, crearemos un archivo de bloque de servidor de Nginx. Como ejemplo, nos referiremos a este archivo como example.com, aunque podría resultarle más útil dar al suyo un nombre más descriptivo. Por ejemplo, si tiene un FQDN y registros de DNS configurados para este servidor, podría dar a este archivo el nombre de su FQDN:

      • sudo nano /etc/nginx/sites-available/example.com

      Añada el siguiente bloque de código al archivo y asegúrese de actualizar example.com para que coincida con el FQDN o la dirección IP pública de su servidor. Con este código, se configura Nginx para dirigir el tráfico HTTP de su servidor a la aplicación de Kibana, que escucha en localhost:5601. También se configura Nginx para leer el archivo htpasswd.users y requerir la autenticación básica.

      Tenga en cuenta que si siguió todo el tutorial de los requisitos previos de Nginx, es posible que ya haya creado este archivo y lo haya completado con contenido. En ese caso, elimine todo el contenido existente en el archivo antes de añadir lo siguiente:

      /etc/nginx/sites-available/example.com

      server {
          listen 80;
      
          server_name example.com;
      
          auth_basic "Restricted Access";
          auth_basic_user_file /etc/nginx/htpasswd.users;
      
          location / {
              proxy_pass http://localhost:5601;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_cache_bypass $http_upgrade;
          }
      }
      

      Cuando termine, guarde y cierre el archivo.

      A continuación, habilite la nueva configuración creando un enlace simbólico al directorio sites-enabled. Si ya creó un archivo de bloque de servidor con el mismo nombre en el requisito previo de Nginx, no necesitará ejecutar este comando:

      • sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

      A continuación, compruebe que no haya errores de sintaxis en la configuración:

      Si se muestran errores en su resultado, regrese y verifique bien que el contenido que ingresó en su archivo de configuración se haya agregado correctamente. Una vez que vea syntax is ok en el resultado, reinicie el servicio de Nginx:

      • sudo systemctl restart nginx

      Si siguió la guía de configuración inicial para servidores, debería tener activado un firewall UFW. Para permitir las conexiones con Nginx, podemos ajustar las reglas escribiendo lo siguiente:

      • sudo ufw allow 'Nginx Full'

      Nota: Si siguió el tutorial de los requisitos previos de Nginx, es posible que haya creado una regla de UFW que admita el perfil Nginx HTTP en el firewall. Debido a que el perfil Nginx Full admite el paso del tráfico HTTP y HTTPS por el firewall, puede eliminar de forma segura la regla que creó en el tutorial de los requisitos previos. Hágalo con el siguiente comando:

      • sudo ufw delete allow 'Nginx HTTP'

      Con esto, el acceso a Kibana será posible a través de su FQDN o de la dirección IP pública de su servidor de Elastic Stack. Puede comprobar la página de estado del servidor de Kibana visitando la siguiente dirección e ingresando sus credenciales de inicio de sesión cuando se le soliciten:

      http://your_server_ip/status
      

      En esta página de estado se muestra información sobre el uso de los recursos del servidor y se enumeran los complementos instalados.

      Página de estado de Kibana

      Nota: Como se indica en la sección de requisitos previos, se le recomienda habilitar SSL o TLS en su servidor. Puede seguir este tutorial ahora para obtener un certificado SSL gratuito para Nginx en Ubuntu 18.04. Una vez que obtenga sus certificados SSL y TLS, puede volver y completar este tutorial.

      Ahora que el panel de Kibana está configurado, instalaremos el siguiente componente: Logstash.

      Paso 3: Instalar y configurar Logstash

      Aunque es posible que Beats envíe datos de manera directa a la base de datos de Elasticsearch, recomendamos usar Logstash para procesar los datos. Esto le permitirá recopilar datos de diferentes fuentes, transformarlos en un formato común y exportarlos a otra base de datos.

      Instale Logstash con este comando:

      • sudo apt install logstash

      Después de instalar Logstash, puede continuar con su configuración. Los archivos de configuración de Logstash están escritos en el formato JSON y se alojan en el directorio /etc/logstash/conf.d. Al configurarlo, es útil considerar a Logstash como un ducto que obtiene datos en un extremo, los procesa de una manera u otra y los envía a su destino (en este caso, el destino será Elasticsearch). Un proceso de Logstash tiene dos elementos necesarios, input y output, y un elemento opcional, filter. Los complementos de entrada consumen datos de una fuente, los complementos del filtro procesan los datos y los complementos de salida escriben los datos en un destino.

      Proceso de Logstash

      Cree un archivo de configuración llamado 02-beats-input.conf en el que establecerá su entrada de Filebeat:

      • sudo nano /etc/logstash/conf.d/02-beats-input.conf

      Introduzca la siguiente configuración de input. Con esto, se especifica una entrada de beats que escuchará en el puerto TCP 5044.

      /etc/logstash/conf.d/02-beats-input.conf

      input {
        beats {
          port => 5044
        }
      }
      

      Guarde y cierre el archivo. A continuación, cree un archivo de configuración llamado 10syslog-filter.conf, en el que añadiremos un filtro para registros de sistema, también conocido como syslogs:

      • sudo nano /etc/logstash/conf.d/10-syslog-filter.conf

      Introduzca la siguiente configuración del filtro de syslog. Este ejemplo de registro de sistema se tomó de la documentación oficial de Elastic. Este filtro se utiliza para analizar los registros de sistema entrantes a fin de hacer que tengan estructura y puedan utilizarse en los paneles predeterminados de Kibana:

      /etc/logstash/conf.d/10-syslog-filter.conf

      filter {
        if [fileset][module] == "system" {
          if [fileset][name] == "auth" {
            grok {
              match => { "message" => ["%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:[%{POSINT:[system][auth][pid]}])?: %{DATA:[system][auth][ssh][event]} %{DATA:[system][auth][ssh][method]} for (invalid user )?%{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]} port %{NUMBER:[system][auth][ssh][port]} ssh2(: %{GREEDYDATA:[system][auth][ssh][signature]})?",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:[%{POSINT:[system][auth][pid]}])?: %{DATA:[system][auth][ssh][event]} user %{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:[%{POSINT:[system][auth][pid]}])?: Did not receive identification string from %{IPORHOST:[system][auth][ssh][dropped_ip]}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sudo(?:[%{POSINT:[system][auth][pid]}])?: s*%{DATA:[system][auth][user]} :( %{DATA:[system][auth][sudo][error]} ;)? TTY=%{DATA:[system][auth][sudo][tty]} ; PWD=%{DATA:[system][auth][sudo][pwd]} ; USER=%{DATA:[system][auth][sudo][user]} ; COMMAND=%{GREEDYDATA:[system][auth][sudo][command]}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} groupadd(?:[%{POSINT:[system][auth][pid]}])?: new group: name=%{DATA:system.auth.groupadd.name}, GID=%{NUMBER:system.auth.groupadd.gid}",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} useradd(?:[%{POSINT:[system][auth][pid]}])?: new user: name=%{DATA:[system][auth][user][add][name]}, UID=%{NUMBER:[system][auth][user][add][uid]}, GID=%{NUMBER:[system][auth][user][add][gid]}, home=%{DATA:[system][auth][user][add][home]}, shell=%{DATA:[system][auth][user][add][shell]}$",
                        "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} %{DATA:[system][auth][program]}(?:[%{POSINT:[system][auth][pid]}])?: %{GREEDYMULTILINE:[system][auth][message]}"] }
              pattern_definitions => {
                "GREEDYMULTILINE"=> "(.|n)*"
              }
              remove_field => "message"
            }
            date {
              match => [ "[system][auth][timestamp]", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
            }
            geoip {
              source => "[system][auth][ssh][ip]"
              target => "[system][auth][ssh][geoip]"
            }
          }
          else if [fileset][name] == "syslog" {
            grok {
              match => { "message" => ["%{SYSLOGTIMESTAMP:[system][syslog][timestamp]} %{SYSLOGHOST:[system][syslog][hostname]} %{DATA:[system][syslog][program]}(?:[%{POSINT:[system][syslog][pid]}])?: %{GREEDYMULTILINE:[system][syslog][message]}"] }
              pattern_definitions => { "GREEDYMULTILINE" => "(.|n)*" }
              remove_field => "message"
            }
            date {
              match => [ "[system][syslog][timestamp]", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
            }
          }
        }
      }
      

      Guarde y cierre el archivo cuando termine.

      Por último, cree un archivo de configuración llamado 30-elasticsearch-output.conf:

      • sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

      Introduzca la siguiente configuración de output. Básicamente, con este resultado se configura Logstash para almacenar los datos de Beats en Elasticsearch, que se ejecuta en localhost:9200, en un índice con el nombre del Beat utilizado. El Beat utilizado en este tutorial es Filebeat:

      /etc/logstash/conf.d/30-elasticsearch-output.conf

      output {
        elasticsearch {
          hosts => ["localhost:9200"]
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
        }
      }
      

      Guarde y cierre el archivo.

      Si desea añadir filtros para otras aplicaciones que utilizan la entrada de Filebeat, asegúrese de dar nombres a los archivos de modo que estén ordenados entre la configuración de entrada y salida, lo que significa que los nombres de archivo deben comenzar con un número de dos dígitos entre 02 y 30.

      Pruebe su configuración de Logstash con el siguiente comando:

      • sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

      Si no hay errores de sintaxis, en su resultado verá Configuration OK después de unos segundos. Si no visualiza esto en su resultado, verifique cualquier error que aparezca en su resultado y actualice su configuración para corregirlo.

      Si su prueba de configuración tiene éxito, inicie y habilite Logstash para implementar los cambios de configuración:

      • sudo systemctl start logstash
      • sudo systemctl enable logstash

      Ahora que Logstash se ejecuta de manera correcta y está totalmente configurado, instalaremos Filebeat.

      Paso 4: Instalar y configurar Filebeat

      La pila de Elastic utiliza varios transportadores de datos ligeros llamados Beats para recopilar datos de varias fuentes y transportarlos a Logstash o Elasticsearch. Aquí se muestran los Beats que ahora están disponibles en Elastic:

      • Filebeat: recopila y envía archivos de registro.
      • Metricbeat: recopila métricas de sus sistemas y servicios.
      • Packetbeat: recopila y analiza datos de red.
      • Winlogbeat: recopila registros de eventos de Windows.
      • Auditbeat: recopila datos del marco de trabajo de auditoría de Linux y supervisa la integridad de los archivos.
      • Heartbeat: supervisa la disponibilidad de los servicios con sondeo activo.

      En este tutorial, usaremos Filebeat para reenviar registros locales a nuestra pila de Elastic.

      Instale Filebeat usando apt:

      • sudo apt install filebeat

      A continuación, configure Filebeat para establecer conexión con Logstash. Aquí, modificaremos el archivo de configuración de ejemplo que viene con Filebeat.

      Abra el archivo de configuración de Filebeat:

      • sudo nano /etc/filebeat/filebeat.yml

      Nota: Al igual que con Elasticsearch, el archivo de configuración de Filebeat está en formato YAML. Esto significa que una correcta indentación es esencial. Por lo tanto, asegúrese de usar el mismo número de espacios que se indican en estas instrucciones.

      Filebeat admite numerosas salidas, pero por lo general sólo enviará eventos directamente a Elasticsearch o a Logstash para su procesamiento adicional. En este tutorial, usaremos Logstash para aplicar procesamiento adicional a los datos recopilados por Filebeat. Filebeat no tendrá que enviar datos de manera directa a Elasticsearch, por lo que desactivaremos esa salida. Para hacerlo, encuentre la sección output.elasticsearch y comente las siguientes líneas anteponiéndoles “#”:

      /etc/filebeat/filebeat.yml

      ...
      #output.elasticsearch:
        # Array of hosts to connect to.
        #hosts: ["localhost:9200"]
      ...
      

      A continuación, configure la sección output.logstash. Elimine el comentario de las líneas output.logstash: y hosts: ["localhost:5044"] quitando el “#”. Con esto, se configurará Filebeat para establecer conexión con Logstash en su servidor de Elastic Stack en el puerto 5044, para el que especificamos una entrada de Logstash previamente:

      /etc/filebeat/filebeat.yml

      output.logstash:
        # The Logstash hosts
        hosts: ["localhost:5044"]
      

      Guarde y cierre el archivo.

      La funcionalidad de Filebeat puede ampliarse con módulos de Filebeat. En este tutorial usaremos el módulo de sistema, que recopila y analiza registros creados por el servicio de registro del sistema de distribuciones comunes de Linux.

      Vamos a habilitarlo:

      • sudo filebeat modules enable system

      Puede ver una lista de módulos habilitados y desactivados ejecutando lo siguiente:

      • sudo filebeat modules list

      Verá una lista similar a la siguiente:

      Output

      Enabled: system Disabled: apache2 auditd elasticsearch icinga iis kafka kibana logstash mongodb mysql nginx osquery postgresql redis traefik

      Por defecto, Filebeat está configurado para usar rutas predeterminadas para los registros syslog y de autorización. En el caso de este tutorial, no necesita aplicar cambios en la configuración. Puede ver los parámetros del módulo en el archivo de configuración /etc/filebeat/modules.d/system.yml.

      A continuación, cargue la plantilla de índice en Elasticsearch. Un índice de Elasticsearch es un conjunto de documentos que tienen características similares. Los índices se identifican con un nombre, que se utiliza para referirse al índice cuando se realizan varias operaciones dentro de este. La plantilla de índice se aplicará de forma automática al crear un nuevo índice.

      Para cargar la plantilla, utilice el siguiente comando:

      • sudo filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

      Output

      Loaded index template

      Filebeat viene empaquetado con paneles de muestra de Kibana que le permiten visualizar datos de Filebeat en Kibana. Para poder usar los paneles, deberá crear el patrón de índice y cargar los paneles en Kibana.

      Al cargarse los paneles, Filebeat se conecta a Elasticsearch para verificar la información de la versión. Para cargar paneles cuando se habilite Logstash, deberá desactivar el resultado de Logstash y habilitar el de Elasticsearch:

      • sudo filebeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

      Verá un resultado similar a este:

      Output

      2018-09-10T08:39:15.844Z INFO instance/beat.go:273 Setup Beat: filebeat; Version: 6.4.2 2018-09-10T08:39:15.845Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:15.845Z INFO pipeline/module.go:98 Beat name: elk 2018-09-10T08:39:15.845Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:15.849Z INFO elasticsearch/client.go:708 Connected to Elasticsearch version 6.4.2 2018-09-10T08:39:15.856Z INFO template/load.go:129 Template already exists and will not be overwritten. Loaded index template Loading dashboards (Kibana must be running and reachable) 2018-09-10T08:39:15.857Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:15.865Z INFO elasticsearch/client.go:708 Connected to Elasticsearch version 6.4.2 2018-09-10T08:39:15.865Z INFO kibana/client.go:113 Kibana url: http://localhost:5601 2018-09-10T08:39:45.357Z INFO instance/beat.go:659 Kibana dashboards successfully loaded. Loaded dashboards 2018-09-10T08:39:45.358Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200 2018-09-10T08:39:45.361Z INFO elasticsearch/client.go:708 Connected to Elasticsearch version 6.4.2 2018-09-10T08:39:45.361Z INFO kibana/client.go:113 Kibana url: http://localhost:5601 2018-09-10T08:39:45.455Z WARN fileset/modules.go:388 X-Pack Machine Learning is not enabled Loaded machine learning job configurations

      Ahora podrá iniciar y habilitar Filebeat:

      • sudo systemctl start filebeat
      • sudo systemctl enable filebeat

      Si configuró su pila de Elastic de manera correcta, Filebeat iniciará el envío de sus registros syslog y de autorización a Logstash, que a su vez cargará esos datos en Elasticsearch.

      Para verificar que Elasticsearch realmente reciba estos datos, consulte el índice de Filebeat con este comando:

      • curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

      Verá un resultado similar a este:

      Output

      ... { "took" : 32, "timed_out" : false, "_shards" : { "total" : 3, "successful" : 3, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1641, "max_score" : 1.0, "hits" : [ { "_index" : "filebeat-6.4.2-2018.10.10", "_type" : "doc", "_id" : "H_bZ62UBB4D0uxFRu_h3", "_score" : 1.0, "_source" : { "@version" : "1", "message" : "Oct 10 06:22:36 elk systemd[1]: Reached target Local File Systems (Pre).", "@timestamp" : "2018-10-10T08:43:56.969Z", "host" : { "name" : "elk" }, "source" : "/var/log/syslog", "input" : { "type" : "log" }, "tags" : [ "beats_input_codec_plain_applied" ], "offset" : 296, "prospector" : { "type" : "log" }, "beat" : { "version" : "6.4.2", "hostname" : "elk", "name" : "elk" } } }, ...

      Si en su resultado no se muestran aciertos, Elasticsearch significa que no está cargando ningún registro bajo el índice que buscó y deberá verificar su configuración en busca de errores. Si obtuvo el resultado esperado, continúe con el siguiente paso, en el que veremos la manera de explorar algunos de los paneles de Kibana.

      Paso 5: Explorar los paneles de Kibana

      Veamos Kibana, la interfaz web que instalamos previamente.

      En un navegador web, diríjase al FQDN o a la dirección IP pública de su servidor de Elastic Stack. Después de ingresar las credenciales de inicio de sesión que definió en el paso 2, verá la página de inicio de Kibana:

      Página de inicio de Kibana

      Haga clic en el enlace Discover de la barra de navegación del lado izquierdo. En la página Discover, seleccione el patrón de índice predeterminado de filebeat-* para ver datos de Filebeat. Por defecto, esto le mostrará todos los datos de registro de los últimos 15 minutos. Visualizará un histograma con eventos de registro y algunos mensajes de registro a continuación:

      Página de Discover

      Aquí puede buscar y explorar sus registros y también personalizar su panel. Sin embargo, en este punto no habrá muchos registros porque solo recopila syslogs de su servidor de Elastic Stack.

      Utilice el panel del lado izquierdo para acceder a la página Dashboard y buscar los paneles de Filebeat System. Una vez ahí, puede buscar los paneles de muestra que vienen con el módulo system de Filebeat.

      Por ejemplo, puede ver estadísticas detalladas basadas en sus mensajes de syslog:

      Panel de Syslog

      También puede ver los usuarios que utilizaron el comando sudo y el momento en que lo hicieron:

      Panel de sudo

      Kibana tiene muchas otras características, como graficar y filtrar. No dude en explorarlas.

      Conclusión

      A través de este tutorial, aprendió a instalar y configurar Elastic Stack para recopilar y analizar registros del sistema. Recuerde que puede enviar casi cualquier tipo de datos de registro o de índice a Logstash usando Beats, pero los datos se vuelven aún más útiles si se analizan y estructuran con un filtro de Logstash, ya que transforma los datos en un formato uniforme que Elasticsearch puede leer de forma sencilla.



      Source link

      How to Deploy the Elastic Stack on Kubernetes


      Updated by Linode Written by Tyler Langlois

      What is the Elastic Stack?

      The Elastic Stack is a collection of open source projects from Elastic that help collect and visualize a wide variety of data sources. Elasticsearch can store and aggregate data such as log files, container metrics, and more. The products in the stack include: Elasticsearch, Logstash, Kibana, and now Beats.

      In this guide:

      At the end of this guide, you will have a deployment installed and configured that you can further use for application logs or monitoring Kubernetes itself.

      Caution

      This guide’s example instructions will create the following billable resources on your Linode account: four (4) Linodes and three (3) Block Storage volumes. If you do not want to keep using the example cluster that you create, be sure to delete the cluster Linodes and volumes when you have finished the guide.

      If you remove the resources afterward, you will only be billed for the hour(s) that the resources were present on your account. Consult the Billing and Payments guide for detailed information about how hourly billing works and for a table of plan pricing.

      Before You Begin

      Note

      This guide uses Kubernetes services which are private by default. Local listeners are opened which allow you to access the services on your local browser, however, web servers and NodeBalancers are out scope for this guide. Due to this, you should complete the steps of this guide from your local computer or from a computer that you will give you access the web browser. If you wish to be able to access these services from a public domain, please see our guide on Getting Started with NodeBalancers.
      1. Install the Kubernetes CLI (kubectl) on your computer, if it is not already.

      2. Follow the How to Deploy Kubernetes on Linode with the k8s-alpha CLI guide to set up a Kubernetes cluster. This guide will use a three node + master node cluster. You can use the following Linode k8s-alpha CLI command to create your cluster:

        linode-cli k8s-alpha create example-cluster --node-type g6-standard-2 --nodes 3 --master-type g6-standard-2 --region us-east --ssh-public-key ~/.ssh/id_rsa.pub
        
        • You should use this guide instead of manual installation via a method such as kubeadmin, as the k8s-alpha tool will setup support for persistent volume claims.

        • Node sizes are important when configuring Elasticsearch, and this guide assumes 4GB Linode instances.

        • This guide also assumes that your cluster has role-based access control (RBAC) enabled. This feature became available in Kubernetes 1.6. It is enabled on clusters created via the k8s-alpha Linode CLI.

      3. You should also make sure that your Kubernetes CLI is using the right cluster context. Run the get-contexts subcommand to check:

        kubectl config get-contexts
        
      4. Set up Helm in your Kubernetes cluster by following the How to Install Apps on Kubernetes with Helm guide and stop following the steps in this guide upon reaching the Use Helm Charts to Install Apps section.

      Configure Helm

      After following the prerequisites for this guide, you should have a Kubernetes cluster with Helm installed and configured.

      1. Add the elastic chart repository to your local installation of Helm:

        helm repo add elastic https://helm.elastic.co
        
      2. Fetch the updated list of charts from all configured chart repositories:

        helm repo update
        
      3. Search for the official elasticsearch chart to confirm Helm has been configured correctly. Note that this chart released by Elastic differs from the chart bundled with the default installation of Helm.

        helm search elasticsearch --version 7
        

        This command should return results similar to the following. Note that your exact version numbers may be different.

        NAME                    CHART VERSION   APP VERSION     DESCRIPTION
        elastic/elasticsearch   7.3.2           7.3.2           Official Elastic helm chart for Elasticsearch
        

      Your Helm environment is now prepared to install official Elasticsearch charts into your kubernetes cluster.

      Install Charts

      Install Elasticsearch

      Before installing the chart, ensure that resources are set appropriately. By default, the elasticsearch chart allocates 1G of memory to the JVM heap and sets Kubernetes resource requests and limits to 2G. Using a Linode 4GB instance is compatible with these defaults, but if you are using a different instance type, you will need to provide different values to the chart at install time in order to ensure that running pods are within the resource constraints of the node sizes you have chosen.

      1. Install the elasticsearch chart. This command will wait to complete until all pods are started and ready:

        helm install --name elasticsearch --wait --timeout=600 elastic/elasticsearch
        
      2. A three-node Elasticsearch cluster is now configured and available locally to the Kubernetes cluster. To confirm this, first port-forward a local port to the Elasticsearch service. You should leave this command running in a terminal window or tab in in the background for the remainder of this tutorial.

        kubectl port-forward svc/elasticsearch-master 9200:9200
        
      3. In another terminal window, send a request to this port:

        curl http://localhost:9200/
        
      4. You should see a response similar to the following:

        {
          "name" : "elasticsearch-master-0",
          "cluster_name" : "elasticsearch",
          "cluster_uuid" : "o66WYOm5To2znbZ0kOkDUw",
          "version" : {
            "number" : "7.3.2",
            "build_flavor" : "default",
            "build_type" : "docker",
            "build_hash" : "1c1faf1",
            "build_date" : "2019-09-06T14:40:30.409026Z",
            "build_snapshot" : false,
            "lucene_version" : "8.1.0",
            "minimum_wire_compatibility_version" : "6.8.0",
            "minimum_index_compatibility_version" : "6.0.0-beta1"
          },
          "tagline" : "You Know, for Search"
        }
        

      Note that your specific version numbers and dates may be different in this json response. Elasticsearch is operational, but not receiving or serving any data.

      Install Filebeat

      In order to start processing data, deploy the filebeat chart to your Kubernetes cluster. This will collect all pod logs and store them in Elasticsearch, after which they can be searched and used in visualizations within Kibana.

      1. Deploy the filebeat chart. No custom values.yaml file should be necessary:

        helm install --name filebeat --wait --timeout=600 elastic/filebeat
        
      2. Confirm that Filebeat has started to index documents into Elasticsearch by sending a request to the locally-forwarded Elasticsearch service port:

        curl http://localhost:9200/_cat/indices
        

        At least one filebeat index should be present, and output should be similar to the following:

          
                green open filebeat-7.3.12-2019.09.30-000001 peGIaeQRQq-bfeSG3s0RWA 1 1 9886 0 5.7mb 2.8mb
            
        

      Install Kibana

      Kibana will provide a frontend to Elasticsearch and the data collected by Filebeat.

      1. Deploy the kibana chart:

        helm install --name kibana --wait --timeout=600 elastic/kibana
        
      2. Port-forward the kibana-kibana service in order to access Kibana locally. Leave this command running in the background as well for the remainder of this tutorial.

        kubectl port-forward svc/kibana-kibana 5601:5601
        

      Configure Kibana

      Before visualizing pod logs, Kibana must be configured with an index pattern for Filebeat’s indices.

      1. With the previous port-forward command running in another terminal window, open your browser and navigate to http://localhost:5601

      2. A page similar to the following should render in your browser.

        Initial Kibana Page

      3. To begin configuring index patterns, scroll down until the Index Patterns button appears, and click it.

        Kibana Home Page Index Patterns

      4. The Index Patterns page should be displayed. Click the Create index pattern button to begin.

        Kibana Index Patterns Page

      5. From this page, enter “filebeat-*” into the Index pattern text box, then click the Next step button.

        Kibana Create Index Pattern

      6. In the following page, select @timestamp from the Time Filter field name dropdown menu, then click the Create index pattern button.

        Kibana Create Index Pattern

      7. A page with the index pattern details will then be shown. Click the Discover compass icon from the sidebar to view incoming logs.

        Kibana Select Discover

      8. The Discover page provides a realtime view of logs as they are ingested by Elasticsearch from your Kubernetes cluster. The histogram provides a view of log volume over time, which by default, spans the last 15 minutes. The sidebar on the left side of the user interface displays various fields parsed from json fields sent by Filebeat to Elasticsearch.

      9. Use the Filters box to search only for logs arriving from Kibana pods by filtering for kubernetes.container.name : "kibana". Click the Update button to apply the search filter.

        Note

        When searching in the filters box, field names and values are auto-populated.

        Kibana Filter

      10. In order to expand a log event, click the arrow next to an event in the user interface.

        Kibana Open Log Event

      11. Scroll down to view the entire log document in Kibana. Observe the fields provided by Filebeat, including the message field, which contains standard out and standard error messages from the container, as well as the kubernetes node and pod name in fields prefixed with kubernetes.

        Kibana Log Document

      12. Look closely at the message field in the log representation and note that the text field is formatted as json. While the terms in this field can be searched with free text search terms in Kibana, parsing this field will generally yield better results. The following section explains how to configure Filebeat and Kibana to achieve this.

      Update Stack Configuration

      At this point, the Elastic stack is functional and provides an interface to visualize and create dashboards for your logs from Kubernetes. This section will explain how to further configure the various components of the stack for greater visibility into your Kubernetes environment.

      1. Create a values file for Filebeat. This configuration will add the ability to provide autodiscover hints. Instead of changing the Filebeat configuration each time parsing differences are encountered, autodiscover hints permit fragments of Filebeat configuration to be defined at the pod level dynamically so that applications can instruct Filebeat as to how their logs should be parsed.

        filebeat-values.yml
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        
        ---
        
        filebeatConfig:
        filebeat.yml: |
        filebeat.autodiscover:
        providers:
          - type: kubernetes
        hints.enabled: true
        output.elasticsearch:
        hosts: '${ELASTICSEARCH_HOSTS:elasticsearch-master:9200}'
      2. Upgrade the filebeat deployment to use this new configuration file:

        helm upgrade --values filebeat-values.yml --wait --timeout=600 filebeat elastic/filebeat
        
      3. Once this command completes, Filebeat’s DaemonSet will have successfully updated all running pods.

      4. Next, create a Kibana values file to append annotations to the Kibana Deployment that will indicate that Filebeat should parse certain fields as json values. This configuration file will instruct Filebeat to parse the message field as json and store the parsed object underneath the kibana field.

        kibana-values.yml
        1
        2
        3
        4
        5
        
        ---
        
        podAnnotations:
        co.elastic.logs/processors.decode_json_fields.fields: message
        co.elastic.logs/processors.decode_json_fields.target: kibana
      5. Upgrade the Kibana Helm release in your Kubernetes cluster, passing this file as an argument for the Chart values.

        helm upgrade --values kibana-values.yml --wait --timeout=600 kibana elastic/kibana
        
      6. Note, triggering a rolling pod update of Kibana will cause the previous port-forward to lose track of running pods. Terminate the previous Kibana port-forward command in the background terminal with Ctrl-C and start the command again:

        kubectl port-forward svc/kibana-kibana 5601:5601
        
      7. Open a browser window to http://localhost:5601 and navigate to the same Index Patterns page again:

        Kibana Home Page Index Patterns

      8. From the Index Patterns page, select the filebeat-* index pattern.

        Kibana Filebeat Index Pattern

      9. From the index pattern page for filebeat-*, select the Refresh field list button.

        Kibana Refresh Fields

      10. Confirm this action by selecting the Refresh button in the pop-up dialog.

        Kibana Refresh Fields Confirm

      11. Navigate to the “Discover” page.

        Kibana Select Discover

      12. Filter for kibana containers again, scroll down, and expand a log document. Note that various fields have been parsed into the kibana field, such as kibana.req.method, indicating which HTTP verb was issued for a request for Kibana.

        Kibana Parsed Fields

      Metricbeat

      In addition to collecting logs with Filebeat, Metricbeat can collect pod and node metrics in order to visualize information such as resource utilization.

      Install Metricbeat

      1. Deploy the metricbeat chart.

        helm install --name metricbeat --wait --timeout=600 elastic/metricbeat
        
      2. Confirm that Metricbeat has started to index documents into Elasticsearch by sending a request to the locally-forwarded Elasticsearch service port:

        curl http://localhost:9200/_cat/indices
        
      3. At least one metricbeat index should be present, similar to the following:

        green open metricbeat-7.3.2-2019.09.30-000001 N75uVk_hTpmVbDKZE0oeIw 1 1   455  0   1.1mb 567.9kb
        

      Load Dashboards

      Metricbeat can install default Dashboards into Kibana to provide out-of-the-box visualizations for data collected by Kubernetes.

      Before following these steps, ensure that the port-forward command to expose Kibana over port 5601 locally is still running.

      Run the following commands on your local machine. This will communicate with Kibana over 127.0.0.1:5601 to import default Dashboards that will be populated by data from Metricbeat.

      Note

      Your commands should use the same version of Metricbeat deployed to your Kubernetes cluster. You can find this version by issuing the following command:

      helm get values --all metricbeat | grep imageTag
      

      For Linux

      1. Get the Metricbeat package.

        wget https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.3.2-linux-x86_64.tar.gz
        
      2. Unzip the package.

        tar xvzf metricbeat-7.3.2-linux-x86_64.tar.gz
        
      3. Navigate to the directory.

        cd metricbeat-7.3.2-linux-x86_64
        
      4. Setup the dashboards.

        ./metricbeat setup --dashboards
        

      For MacOS

      1. Get the Metricbeat package.

        wget https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.3.2-darwin-x86_64.tar.gz
        
      2. Unzip the package.

        tar xvzf metricbeat-7.3.2-darwin-x86_64.tar.gz
        
      3. Navigate to the directory.

        cd metricbeat-7.3.2-darwin-x86_64
        
      4. Setup the dashboards.

        ./metricbeat setup --dashboards
        

      Explore Dashboards

      1. Open a browser window to http://localhost:5601 and click the Dashboards icon on the left sidebar.

        Kibana Dashboards Link

      2. In the search box, enter “kubernetes” and press Enter. Select the [Metricbeat Kubernetes] Overview ECS dashboard.

        Kibana Dashboards

      3. The following dashboard displays several types of metrics about your Kubernetes cluster.

        Kibana Kubernetes Dashboards

      4. You can explore the various visualizations on this page in order to view metrics about pods, nodes, and the overall health of the Kubernetes cluster.

      Next Steps

      From this point onward, any additional workloads started in Kubernetes will be processed by Filebeat and Metricbeat in order to collect logs and metrics for later introspection within Kibana. As Kubernetes nodes are added or removed, the Filebeat and Metricbeat DaemonSets will automatically scale out pods to monitor nodes as they join the Kubernetes cluster.

      More Information

      You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

      Find answers, ask questions, and help others.

      This guide is published under a CC BY-ND 4.0 license.



      Source link