notes/db/nosql/vector/integration/vector-es.txt
Ihar Hancharenka cd455d066c m
2024-04-24 21:01:22 +03:00

81 строка
6.2 KiB
Plaintext
Исходник Ответственный История

Этот файл содержит невидимые символы Юникода

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

https://vector.dev/docs/reference/configuration/sinks/elasticsearch/
Для того, чтобы начать собирать логи в Elasticsearch не обязательно поднимать полный ELK stack. Я сейчас кратко покажу, как быстро запустить сбор логов из Nginx в Elasticsearch помощью Vector (https://vector.dev/). А в качестве веб интерфейса для работы с еластиком буду использовать легковесный Elasticvue (https://elasticvue.com/).
Elasticsearch я запущу в Docker, отключив HTTPS и аутентификацию. То есть это будет тестовая установка. В проде отключать не надо. Там не намного сложнее настройка, просто я не смогу уместить её в одну заметку, если не отключу их. Нужно будет сделать больше настроек.
Запускаем Elasticsearch:
# docker run -d -p 9200:9200 -p 9300:9300 \
-e "http.cors.enabled=true" \
-e "http.cors.allow-origin=http://172.30.245.222:8080" \
-e "discovery.type=single-node" \
--name elastic \
elasticsearch:8.13.0
Здесь 172.30.245.222 - это IP адрес сервера, на котором будет запущен веб интерфейс Elasticvue. В моём случае это та же машина, где запускается еластик. Дожидаемся запуска контейнера и забираем из него конфиг службы:
# docker cp elastic:/usr/share/elasticsearch/config/elasticsearch.yml ~/
Всё, что касается настроек xpack.security заменяем true на false. Возвращаем изменённый конфиг:
# docker cp ~/elasticsearch.yml elastic:/usr/share/elasticsearch/config/elasticsearch.yml
Перезапускаем контейнер:
# docker restart elastic
Дожидаемся запуска и проверяем работу:
curl http://172.30.245.222:9200
Должны увидеть информацию о кластере elasticsearch. Его имя будет docker-cluster. Запускаем тут же в докере веб интерфейс:
# docker run -d -p 8080:8080 --name elasticvue cars10/elasticvue
Этот веб интерфейс может работать как приложение на десктопе или плагин браузера. Интересная штука, кто не знаком, посмотрите описание на сайте.
Идём в веб интерфейс по IP адресу сервера и порт 8080. Настраиваем подключение к кластеру. Указываем настройки:
No authorization
docker-cluster
http://172.30.245.222:9200
Убеждаемся, что всё работает.
Теперь ставим Vector, который будет отправлять логи Nginx в кластер. Он, соответственно, должен быть установлен на веб сервере. Для Debian установка из пакетов такая:
# bash -c "$(curl -L https://setup.vector.dev)"
# apt install vector
Открываем конфиг /etc/vector/vector.yaml и приводим к такому виду:
sources:
 nginx_access_logs:
  type: file
  include:
   - /var/log/nginx/access.log
sinks:
 elastic:
  type: elasticsearch
  inputs:
   - nginx_access_logs
  endpoints:
   - http://172.30.245.222:9200
Следите за форматированием файла yaml. При копировании в пост она ломается. У вектора очень хорошая документация. Там есть все примеры использования (https://vector.dev/docs/reference/configuration/sinks/elasticsearch/). Можно у меня заметки на канале посмотреть. Было несколько штук с его настройкой. Очень приятная и легковесная программа. Я последнее время почти всегда вектором собираю логи.
Перезапускаем вектор:
# systemctl restart vector
По умолчанию, он пишет логи в системный syslog. Проверьте на всякий случай, что он запустился и начал отправлять логи в elastic. Идём в его веб интерфейс. Там должен появиться индекс вида vector-2024.04.22, в нём строки из лога Nginx.
Простейшие действия по управлению кластером Elasticsearch можно делать в Elasticvue. Можно обойтись и без Kibana. Вот такая простая и быстрая настройка. Если вы не отключите HTTPS и аутентификацию, то вам придётся дополнительно сделать следующее:
◽️Создать пароль для пользователя elastic через команду внутри контейнера /bin/elasticsearch-reset-password.
◽️Соответственно во всех запросах использовать basic аутентификацию с этой учёткой.
◽️Для работы Elasticvue вам нужно будет забрать сертификат Elasticsearch из /usr/share/elasticsearch/config/certs/http_ca.crt и добавить его в доверенные CA в том браузере, где вы его будете запускать. Далее нужно будет посмотреть, какие имена хоста указаны в сертификате сервера и добавить их в hosts, чтобы браузер не ругался на несоответствие имени в сертификате и адресной строке.
Я всё это настраиваю, если надо, но занимает чуть больше времени, поэтому упростил руководство.