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.logsinks: elastic: type: elasticsearch inputs: - nginx_access_logs endpoints: - http://172.30.245.222:9200Следите за форматированием файла yaml. При копировании в пост она ломается. У вектора очень хорошая документация. Там есть все примеры использования. Можно у меня заметки на канале посмотреть. Было несколько штук с его настройкой. Очень приятная и легковесная программа. Я последнее время почти всегда вектором собираю логи.
Перезапускаем вектор:
# 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, чтобы браузер не ругался на несоответствие имени в сертификате и адресной строке. Я всё это настраиваю, если надо, но занимает чуть больше времени, поэтому упростил руководство.
#elk #logs