Skip to content

📊 Использование Elastic Stack

1. Описание Elastic Stack

Elastic Stack — это набор из нескольких компонентов, работающих вместе:

Компонент Назначение
Elasticsearch Поисковый движок с распределённым хранением данных
Logstash Инструмент для обработки и преобразования данных
Kibana Веб-интерфейс для визуализации и анализа данных
Beats (Filebeat, Metricbeat и др.) Лёгкие агенты для отправки данных в Elasticsearch или Logstash

Возможности:

  • Централизованное логирование
  • Анализ метрик и событий
  • Мониторинг приложений и систем
  • Создание дашбордов и алертов
  • Поддержка масштабирования

2. Установка Elastic Stack

2.1. Установка на Linux (Ubuntu/Debian)

Добавьте репозиторий Elastic

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

Установите пакеты

sudo apt-get update && sudo apt-get install elasticsearch kibana logstash filebeat

2.2. Настройка Elasticsearch

Файл конфигурации: /etc/elasticsearch/elasticsearch.yml

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

cluster.name: my-cluster
node.name: node-1
network.host: 0.0.0.0
discovery.seed_hosts: ["host1", "host2"]
cluster.initial_master_nodes: ["node-1", "node-2"]

Запуск:

sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Проверка:

curl http://localhost:9200

2.3. Настройка Kibana

Файл конфигурации: /etc/kibana/kibana.yml

server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]

Запуск:

sudo systemctl enable kibana
sudo systemctl start kibana

Откройте в браузере: http://localhost:5601


3. Сбор данных через Beats

3.1. Пример: Filebeat (для логов)

Настройка Filebeat

Файл конфигурации: /etc/filebeat/filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

output.elasticsearch:
  hosts: ["http://localhost:9200"]

Запуск:

sudo systemctl enable filebeat
sudo systemctl start filebeat

3.2. Загрузка шаблонов индексов (опционально)

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

4. Обработка данных через Logstash

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

Файл: /etc/logstash/conf.d/my-pipeline.conf

input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "logs-%{+YYYY.MM.dd}"
  }
}

Запуск:

sudo systemctl enable logstash
sudo systemctl start logstash

5. Работа с данными в Kibana

5.1. Добавление индекс-паттернов

  1. Откройте Kibana → Stack ManagementIndex Management
  2. Перейдите в Index Patterns → Create index pattern
  3. Укажите имя индекса, например: logs-*
  4. Выберите поле @timestamp как временную метку

5.2. Создание визуализаций и дашбордов

  1. Перейдите в Analytics → Discover
  2. Выберите нужный индекс
  3. Нажмите Save → Save as visualization
  4. Создайте новый дашборд и добавьте туда визуализации

6. Язык запросов (DSL)

Elasticsearch использует JSON-DSL для запросов.

Пример простого запроса:

GET logs-2024.04.05/_search
{
  "query": {
    "match": {
      "status": "error"
    }
  },
  "size": 10
}

Или с фильтром по времени:

GET logs-2024.04.05/_search
{
  "query": {
    "range": {
      "@timestamp": {
        "gte": "now-1h",
        "lt": "now"
      }
    }
  }
}

7. Безопасность

7.1. Аутентификация и авторизация

  • Включите Security в elasticsearch.yml:
xpack.security.http.ssl.enabled: true
xpack.security.authc.api_key.enabled: true
  • Создайте пользователей:
sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

7.2. Шифрование и TLS

Настройка SSL/TLS обязательна для продакшена:

  • Генерация сертификатов
  • Настройка elasticsearch.yml и kibana.yml
  • Использование reverse proxy (например, Nginx) для терминации SSL

8. Полезные плагины и интеграции

Плагин / Интеграция Назначение
Elastic APM Application Performance Monitoring
Enterprise Search Поиск по документам и данным
SIEM / Security App Безопасность, обнаружение угроз
Heartbeat Мониторинг доступности сервисов
Metricbeat Сбор метрик CPU, RAM, сети и т.п.

9. Хостинг и облачные решения

Сервис Описание
Elastic Cloud 托管版 Elastic Stack от создателей
AWS Elasticsearch Service Интеграция с AWS
Google Cloud Marketplace Развертывание на GCP
Self-hosted На собственных серверах

10. Полезные ссылки