📊 Использование 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. Добавление индекс-паттернов
- Откройте Kibana → Stack Management → Index Management
- Перейдите в Index Patterns → Create index pattern
- Укажите имя индекса, например:
logs-*
- Выберите поле
@timestamp
как временную метку
5.2. Создание визуализаций и дашбордов
- Перейдите в Analytics → Discover
- Выберите нужный индекс
- Нажмите Save → Save as visualization
- Создайте новый дашборд и добавьте туда визуализации
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 | На собственных серверах |