Привіт, Гість

dsoft blog

Як встановити Elasticsearch, Logstash і Kibana (Elastic Stack) на Ubuntu 22.04 для збирання docker логів

Published by ds

Elastic Stack — колись відомий як ELK Stack — це набір програмного забезпечення з відкритим кодом, створеного компанією Elastic , яке дозволяє шукати, аналізувати та візуалізувати журнали, згенеровані з будь-якого джерела в будь-якому форматі, практику, відому як централізоване логування . Це рішення може бути корисним для збирання, візуалізації та аналітики логів декількох серверів чи як в нашому випадку Docker container логів.

Elastic Stack складається з чотирьох основних компонентів:

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

У цій статті ми встановимо Elastic Stack на сервері Ubuntu 22.04. Ви дізнаєтеся, як інсталювати всі компоненти Elastic Stack — включаючи Filebeat , який використовується для надсилання логів і файлів до Logstash. Крім того, оскільки Kibana зазвичай доступна лише на localhost, ми використаємо Nginx для проксі-сервера, щоб він був доступним через веб-браузер. Ми встановимо всі ці компоненти на цьому ж сервері де в нас і Docker.

Крок 1 — Встановлення та налаштування Elasticsearch

Компоненти Elasticsearch недоступні в стандартних репозиторіях пакетів Ubuntu. Однак їх можна встановити за допомогою APT після додавання списку джерел пакетів Elastic.

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch |sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg

Далі додайте список джерел до sources.list.d:

echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Частина [signed-by=/usr/share/keyrings/elastic.gpg] вказує apt використовувати ключ, який ви завантажили, щоб перевірити інформацію про сховище та файл для пакетів Elasticsearch.

Далі оновіть списки пакетів

sudo apt update

Потім встановіть Elasticsearch за допомогою цієї команди:

sudo apt install elasticsearch

Тепер Elasticsearch встановлено та готово до налаштування. Використовуйте улюблений текстовий редактор, щоб відредагувати основний файл конфігурації Elasticsearch, elasticsearch.yml. Тут ми будемо використовувати nano:

sudo nano /etc/elasticsearch/elasticsearch.yml

Файл elasticsearch.ymlмістить параметри конфігурації для вашого кластера, вузла, шляхів, пам’яті, мережі, виявлення та шлюзу. 

Elasticsearch прослуховує трафік з будь-якого порту 9200. Ви захочете обмежити зовнішній доступ до свого екземпляра Elasticsearch, щоб запобігти стороннім особам читати ваші дані або вимикати ваш кластер Elasticsearch через його [REST API] ( https://en.wikipedia.org/wiki/Representational_state_transfer ). Щоб обмежити доступ і, таким чином, підвищити безпеку, знайдіть рядок, який визначає network.host, розкоментуйте його та замініть його значення на localhostтаке:

. . .
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .

Ми вказали localhost, що Elasticsearch слухає всі інтерфейси та пов’язані IP-адреси. Якщо ви хочете, щоб він слухав лише певний інтерфейс, ви можете вказати його IP замість localhost. Зберегти та закрити elasticsearch.yml. Якщо ви використовуєте nano, ви можете зробити це, натиснувши CTRL+X, потім , Yа потім ENTER.

Тепер запустимо Elasticsearch за допомогою systemctl.

sudo systemctl start elasticsearch

Далі виконайте таку команду, щоб увімкнути Elasticsearch для запуску під час кожного завантаження сервера:

sudo systemctl enable elasticsearch

Ви можете перевірити, чи працює ваша служба Elasticsearch:

Ви побачите відповідь із базовою інформацією

Output

{ "name" : "Elasticsearch",

"cluster_name" : "elasticsearch",

"cluster_uuid" : "n8Qu5CjWSmyIXBzRXK-j4A",

"version" : { "number" : "7.17.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "de7261de50d90919ae53b0eff9413fd7e5307301", "build_date" : "2022-03-28T15:12:21.446567561Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" },

"tagline" : "You Know, for Search" }

Тепер, коли Elasticsearch запущено, давайте встановимо Kibana, наступний компонент Elastic Stack.

Крок 2 — Встановлення та налаштування панелі Kibana

Згідно з офіційною документацією , ви повинні встановлювати Kibana лише після встановлення Elasticsearch. Встановлення в такому порядку гарантує правильне розміщення компонентів, від яких залежить кожен продукт.

sudo apt install kibana

Потім увімкніть і запустіть службу Kibana:

sudo systemctl enable kibana  

sudo systemctl start kibana

Оскільки Kibana налаштована лише на прослуховування localhost, ми повинні налаштувати зворотний проксі , щоб дозволити зовнішній доступ до нього. Для цього ми будемо використовувати Nginx, який вже повинен бути встановлений на вашому сервері.

Наступна команда створить адміністративного користувача та пароль Kibana та збереже їх у htpasswd.users

 Ви налаштуєте Nginx на запит цього імені користувача та пароля та миттєво прочитаєте цей файл:

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

У відповідь на запит введіть і підтвердьте пароль. Запам’ятайте або запам’ятайте цей логін, оскільки він знадобиться для доступу до веб-інтерфейсу Kibana.

Далі ми створимо файл блоку сервера Nginx. Як приклад, ми називатимемо цей файл як your_domain, хоча вам може бути корисно дати своєму файлу більш описову назву.

Використовуючи nano або улюблений текстовий редактор, створіть файл блоку сервера Nginx:

sudo nano /etc/nginx/sites-available/your_domain

Додайте наступний блок коду до файлу, обов’язково оновивши його your_domainвідповідно до FQDN вашого сервера або загальнодоступної IP-адреси

server {
    listen 80;

    server_name your_domain;

    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;
    }
}

збережіть і закрийте файл.

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain

перевірте конфігурацію на синтаксичні помилки:

sudo nginx -t

Перезавнтажуємо nginx

sudo systemctl reload nginx

Kibana тепер доступна

http://your_domain/status

Kibana Status is green

Тепер, коли інформаційну панель Kibana налаштовано, давайте встановимо наступний компонент: Logstash.

Крок 3 — Встановлення та налаштування Logstash

Встановіть Logstash за допомогою цієї команди:

sudo apt install logstash

Після встановлення Logstash можна переходити до його налаштування. Конфігураційні файли Logstash знаходяться в /etc/logstash/conf.d

Щоб отримати додаткові відомості про синтаксис конфігурації, ви можете ознайомитися з посиланням на конфігурацію, яке надає Elastic.

Створіть файл конфігурації під назвою, 02-beats-input.confде ви налаштуєте свій вхід Filebeat:

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

Вставте наступну inputконфігурацію. Це вказує beatsвхідні дані, які прослуховуватимуть порт TCP 5044.

input {
  beats {
    port => 5044
  }
}

Збережіть і закрийте файл.

Далі створіть файл конфігурації під назвою 30-elasticsearch-output.conf:

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

 

Збережіть і закрийте файл.

Перевірте свою конфігурацію Logstash за допомогою цієї команди:

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

Якщо синтаксичних помилок немає, результат буде відображено Config Validation Result: OK. Exiting Logstash

Якщо перевірка конфігурації пройшла успішно, запустіть і ввімкніть 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:

sudo nano /etc/filebeat/filebeat.yml

Filebeat підтримує численні виходи, але зазвичай ви надсилаєте події безпосередньо до Elasticsearch або Logstash для додаткової обробки. У цьому посібнику ми використаємо Logstash для додаткової обробки даних, зібраних Filebeat. Filebeat не потрібно буде надсилати дані безпосередньо до Elasticsearch, тому давайте вимкнемо цей вихід. Для цього знайдіть output.elasticsearchрозділ і закоментуйте наступні рядки, поставивши перед ними #:

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

Потім налаштуйте output.logstashрозділ. Розкоментуйте рядки output.logstash:та, hosts: ["localhost:5044"]видаливши #. Це налаштує Filebeat для підключення до Logstash на вашому сервері Elastic Stack через порт 5044, порт, для якого ми вказали вхід Logstash раніше:

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

Також на потрібно налаштувати відправлення файлів Логування Docker container для цього додаємо наступні рядки:

filebeat.inputs:
- type: docker
  containers.ids: '*'
  processors:
    - add_docker_metadata: ~

 

Збережіть і закрийте файл.

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

Давайте ввімкнемо:

sudo filebeat modules enable system

Ви можете переглянути список увімкнених і вимкнених модулів, виконавши:

sudo filebeat modules list

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

Далі нам потрібно налаштувати конвеєри введення Filebeat, які аналізують дані журналу перед тим, як надсилати їх через logstash до Elasticsearch. Щоб завантажити конвеєр прийому для системного модуля, введіть таку команду:

sudo filebeat setup --pipelines --modules system

Далі завантажте шаблон індексу в Elasticsearch. Індекс Elasticsearch — це набір документів, які мають схожі характеристики. Індекси ідентифікуються за допомогою імені, яке використовується для посилання на індекс під час виконання різноманітних операцій у ньому. Шаблон індексу буде автоматично застосовано під час створення нового індексу.

Щоб завантажити шаблон, використовуйте таку команду:

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

 

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

Під час завантаження інформаційних панелей Filebeat підключається до Elasticsearch, щоб перевірити інформацію про версію. Щоб завантажити інформаційні панелі, коли ввімкнено Logstash, потрібно вимкнути вихід Logstash і ввімкнути вихід Elasticsearch:

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

Через кілька хвилин ви повинні отримати такий результат:

Output

Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true` for enabling. Index setup finished.

...

Тепер ви можете запустити та включити Filebeat:

sudo systemctl start filebeat

sudo systemctl enable filebeat

Якщо ви правильно налаштували свій Elastic Stack, Filebeat почне надсилати ваш системний журнал і журнали авторизації в Logstash, який потім завантажить ці дані в Elasticsearch.

Крок 5 — Вивчення інформаційних панелей Kibana

 

Повернемося до веб-інтерфейсу Kibana, який ми встановили раніше.

У веб-браузері перейдіть до FQDN або публічної IP-адреси вашого сервера Elastic Stack. Якщо ваш сеанс було перервано, вам потрібно буде повторно ввести облікові дані, які ви визначили на кроці 2. Після входу ви маєте отримати домашню сторінку Kibana:

Клацніть посилання «Відкрити » на панелі навігації ліворуч (може знадобитися натиснути піктограму « Розгорнути» в нижньому лівому куті, щоб побачити пункти меню навігації). На сторінці Discover виберіть попередньо визначений шаблон індексу filebeat- *, щоб переглянути дані Filebeat. За замовчуванням тут відображатимуться всі дані журналу за останні 15 хвилин. Нижче ви побачите гістограму з подіями журналу та деякі повідомлення журналу:

Kibana Discower panel

Тут ви можете шукати й переглядати свої журнали, а також налаштовувати інформаційну панель. Однак на даний момент там буде небагато, оскільки ви збираєте системні журнали лише з вашого сервера Elastic Stack.

Використовуйте панель ліворуч, щоб перейти до сторінки приладної панелі та знайти панелі інструментів системи Filebeat . Там ви можете вибрати зразки інформаційних панелей, які постачаються з systemмодулем Filebeat.

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

Ви також можете переглянути, які користувачі використовували sudoкоманду та коли:

У цьому посібнику ви дізналися, як встановити та налаштувати Elastic Stack для збору та аналізу системних журналів. Пам’ятайте, що ви можете надсилати будь-який тип журналу чи індексованих даних до Logstash за допомогою Beats , але дані стають ще кориснішими, якщо їх проаналізувати та структурувати за допомогою фільтра Logstash, оскільки це перетворює дані у узгоджений формат, який можна читати. легко за допомогою Elasticsearch.

 

Ще немає коментарів.

Авторизуйтесь, щоб залишити коментар.

Про нас

Деякі корисні статті присвячені розробці веб-додатків та технологіям, які допоможуть вам створити продуктивні та захищені веб-додатки.

Ми в соцемережах

  1. GitHub
  2. Twitter