Стэк ELK – это аббревиатура для Elasticsearch, Logstash и Kibana, который предлагает следующие возможности:
- Elasticsearch: масштабируемый поисковый и аналитический движок с инструментом анализа логов и базой данных, сформированной приложениями, идеально подходящей для данных, управляемых приложениями.
- Logstash: инструмент обработки логов, который собирает логи из различных источников, разбирает их и отправляет в Elasticsearch для хранения и анализа.
- Kibana: мощный инструмент визуализации, позволяющий исследовать и анализировать данные, хранящиеся в Elasticsearch, с помощью интерактивных графиков, диаграмм и панелей.
Инфраструктура Elasticsearch
Прежде чем мы погрузимся в развертывание стека ELK, давайте сначала разберемся с ключевыми компонентами инфраструктуры Elasticsearch:
- Узлы: elasticsearch работает на специализированных серверах, называемых узлами, которые функционируют как бинарники для задач поиска и аналитики.
- Части: пространство базы данных логически разделено на части, что позволяет ускорить доступность и распределение данных.
- Индексы: elasticsearch организует хранимые данные в индексы, что облегчает эффективное управление данными.
- Настройка стека ELK: вам потребуется кластер Kubernetes для развертывания стека ELK на Kubernetes. Если у вас уже есть один, вы можете приступить к развертыванию. В качестве альтернативы вы можете использовать предоставленный репозиторий GitHub с файлами Terraform для настройки кластера Kubernetes.
- Развертывание Elasticsearch: используя Helm charts, мы можем эффективно развернуть Elasticsearch. Измените файл значений, чтобы он соответствовал вашим конкретным требованиям, таким как изменение количества реплик или включение/выключение определенных функций. Скачайте их с Artifactory Hub.
values-elasticsearch.yaml
clusterName: "itsyndicateblog"
replicas: 1
minimumMasterNodes: 1
createCert: true
secret:
enabled: true
password: "" # generated randomly if not defined
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "8.5.1"
resources:
requests:
cpu: "200m"
memory: "500Mi"
limits:
cpu: "300m"
memory: "1Gi"
ingress:
enabled: false # enable ingress only if you need external access to elasticsearch cluster
hosts:
- host: elastic.itsyndicate.org
paths:
- path: /
После того, как вы настроили значения, используйте Helm chart для установки Elasticsearch:
helm install elasticsearch -f elasticsearch-values.yaml <chart-name>
Примечание: Убедитесь, что вы настроили драйверы (EBS или EFS) для постоянных томов.
Развертывание Kibana
Развертывание Kibana с помощью Helm charts происходит просто. В файле значений укажите URL и порт сервиса Elasticsearch:
values-kibana.yaml
elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
host: "https://elasticsearch-master:9200"
helm install kibana -f kibana-values.yaml <chart-name>
Проверьте, установлен ли Kibana правильно, пробросьте порт контейнера в локальную сеть (я использую K8s Lens)
Развертывание Logstash и Filebeat
Для эффективного управления логами мы используем Logstash и Filebeat. Filebeat собирает записи из различных источников, а Logstash обрабатывает и отправляет их в Elasticsearch.
Развертывание Logstash
- Клонируйте репозиторий с конфигурациями: logstash-k8s
- Перейдите в tf-modules/eks/manifests/logstash-k8s
- Редактировать файл configmap.yaml
- добавить хост Elasticsearch, пользователя и пароль (их можно взять из ресурса “Secrets” Kubernetes)
- Применить шаблоны:
kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS
Развернуть Filebeat
- Убедитесь, что конфигурация Filebeat указывает на правильные лог-файлы на ваших узлах. Обычно, в EKS, это папка /var/log/containers. Чтобы проверить это, войдите на один из ваших узлов и перейдите в директорию /var/log/containers; если файлов нет, попробуйте изменить директорию.
- Если все верно, примените шаблоны Kubernetes:
kubectl apply -f filebeat-k8s
Разверните простую приложение для проверки того, как логи передаются в Elasticsearch
- Перейдите в папку eks/manifests из клонированного репозитория.
- Выполните команду:
kubeclt apply -f app -n default
После завершения установки, вернитесь в Kibana и создайте индекс Elasticsearch.
Создание индекса:
Создайте шаблон индекса Logstash: logstash-[namespace]*
Теперь вы должны видеть логи от развернутого приложения. Если нет, сделайте несколько запросов к этой апп и попробуйте устранить проблему; обратитесь к видео-руководству в случае необходимости помощи.
Заключение
Вы успешно развернули стек ELK в Kubernetes, что дает вашим приложениям мощный анализ логов и инсайты, основанные на данных. Elasticsearch, Logstash и Kibana безупречно обрабатывают большие потоки данных и предоставляют значимые визуализации.
Теперь, когда у вас есть надежное решение для ведения журналов, вы можете эффективно управлять своими логами и получать ценные знания. Удачного анализа!
Спасибо за прочтение этого руководства по развертыванию стека ELK. Не стесняйтесь обращаться, если у вас возникнут вопросы или потребуется дополнительная помощь. Удачного программирования!
Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes