Как устранить типичные проблемы стека ELK

Вступление

Это руководство представляет собой руководство по устранению неполадок ELK Stack (Elasticsearch, Logstash, Kibana). Предполагается, что вы следовали за https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04 как установить Elasticsearch , Logstash и Kibana (ELK Stack) в Ubuntu 14.04], но могут быть полезны для устранения неполадок в других общих настройках ELK.

Это руководство структурировано как ряд общих проблем и потенциальных решений этих проблем, а также шаги, которые помогут вам убедиться, что различные компоненты вашего стека ELK функционируют должным образом. Поэтому не стесняйтесь переходить к разделам, которые имеют отношение к проблемам, с которыми вы сталкиваетесь.

Проблема: Kibana Нет шаблона индекса по умолчанию Предупреждение

При доступе к Kibana через веб-браузер вы можете встретить страницу с таким предупреждением:

Kibana warning:Warning No default index pattern. You must select or create one to continue.
...
Unable to fetch mapping. Do you have indices matching the pattern?

Вот скриншот предупреждения:

изображение: https: //assets.digitalocean.com/articles/elk/troubleshoot-no-default-index-pattern.png [Предупреждение: нет шаблона индекса по умолчанию. Вы должны выбрать или создать один, чтобы продолжить.]

«Невозможно получить сопоставление» означает, что Elasticsearch не содержит записей, соответствующих шаблону + logstash - * + по умолчанию. Как правило, это означает, что ваши журналы не хранятся в Elasticsearch из-за проблем со связью между Logstash и Elasticsearch и / или из вашего поставщика журналов (например, Filebeat) в Logstash. Другими словами, ваши журналы по какой-то причине не проходят через цепочку от Filebeat до Logstash и Elasticsearch.

изображение: https: //assets.digitalocean.com/articles/elk/elk-infrastructure.png [Стек ELK]

Чтобы решить проблемы связи между Logstash и Elasticsearch, запустите через https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-elk-stack-issues#logstash-how-to-check-if- это работает разделы [Устранение неполадок Logstash]. Чтобы решить проблемы связи между Filebeat и Logstash, запустите через https://www.digitalocean.com/community/tutorials/how-to-troubleshoot-common-elk-stack-issues#filebeat-how-to-check-if- это работающие разделы [Устранение неисправностей Filebeat].

Если вы сконфигурировали Logstash для использования шаблона индекса не по умолчанию, вы можете решить эту проблему, указав правильный шаблон индекса в текстовом поле.

Проблема: Kibana Невозможно подключиться к Elasticsearch

При доступе к Kibana через веб-браузер вы можете встретить страницу с этой ошибкой:

Kibana error:Fatal Error
Kibana: Unable to connect to Elasticsearch

Error: Unable to connect to Elasticsearch
Error: Bad Gateway
...

Вот скриншот ошибки:

изображение: https: //assets.digitalocean.com/articles/elk/troubleshoot-unable-connect-elasticsearch.png [Невозможно подключиться к Elasticsearch]

Это означает, что Kibana не может подключиться к Elasticsearch. Возможно, Elasticsearch не запущен, или Kibana может быть настроен на поиск Elasticsearch на неверном хосте и порте.

Чтобы решить эту проблему, убедитесь, что Elasticsearch запущен, следуя разделам устранения неполадок Elasticsearch. Затем убедитесь, что Kibana настроен для подключения к хосту и порту, на котором работает Elasticsearch.

Например, если Elasticsearch работает на + localhost + на порту + 9200 +, убедитесь, что Kibana настроен соответствующим образом.

Откройте файл конфигурации Kibana:

sudo vi /opt/kibana/config/kibana.yml

Затем убедитесь, что +asticsearch_url + установлен правильно.

/opt/kibana/config/kibana.yml excerpt:# The Elasticsearch instance to use for all your queries.
elasticsearch_url: "http://localhost:9200"

Сохранить и выйти.

Теперь перезапустите сервис Kibana, чтобы изменения вступили в силу:

sudo service kibana restart

После перезапуска Kibana откройте Kibana в веб-браузере и убедитесь, что ошибка устранена.

Проблема: Кибана недоступна

Компонент Nginx стека ELK служит обратным прокси-сервером для Kibana. Если Nginx не работает или не настроен должным образом, вы не сможете получить доступ к интерфейсу Kibana. Однако, поскольку остальные компоненты ELK не зависят от Nginx, они вполне могут нормально функционировать.

Причина: Nginx не работает

Если Nginx не работает, и вы пытаетесь получить доступ к вашему стеку ELK в веб-браузере, вы можете увидеть ошибку, похожую на эту:

Nginx Error:This webpage is not available
ERR_CONNECTION_REFUSED

Обычно это означает, что Nginx не работает.

Вы можете проверить состояние службы Nginx с помощью этой команды:

sudo service nginx status

Если он сообщает, что служба не запущена или не распознается, устраните проблему, следуя инструкциям на https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana- elk-stack-on-ubuntu-14-04 # install-nginx [раздел установки Nginx] учебника по стеку ELK. Если он сообщает, что служба запущена, вам необходимо перенастроить Nginx, следуя тем же инструкциям.

Причина: Nginx работает, но не может подключиться к Kibana

Если Kibana недоступен, и вы получаете сообщение об ошибке +502 Bad Gateway, Nginx работает, но не может подключиться к Kibana.

изображение: https: //assets.digitalocean.com/articles/elk/troubleshoot-nginx-502.png [Nginx 502 Bad Gateway]

Первый шаг к решению этой проблемы - проверить, работает ли Kibana с помощью этой команды:

sudo service kibana status

Если Kibana не работает или не распознается, следуйте инструкциям на https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu -14-04 # install-kibana [Раздел установки Kibana] учебника по стеку ELK.

Если это не решит проблему, возможно, у вас проблема с конфигурацией Nginx. Вы должны просмотреть часть конфигурации https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04#install- nginx [раздел установки Nginx] учебника по стеку ELK. Вы можете проверить журналы ошибок Nginx для подсказок:

sudo tail /var/log/nginx/error.log

Это должно сказать вам точно, почему Nginx не может подключиться к Kibana.

Причина: невозможно аутентифицировать пользователя

Если у вас включена базовая аутентификация, и у вас возникают проблемы при прохождении шага аутентификации, вам следует просмотреть журналы ошибок Nginx, чтобы определить специфику проблемы.

изображение: https: //assets.digitalocean.com/articles/elk/troubleshoot-unable-to-authenticate.png [Требуется аутентификация]

Чтобы посмотреть последние ошибки Nginx, используйте эту команду:

sudo tail /var/log/nginx/error.log

Если вы видите ошибку + user not found, пользователь не существует в файле` + htpasswd`. Этот тип ошибки указан в следующей записи журнала:

Nginx error logs (user was not found):2015/10/26 12:11:57 [error] 3933#0: *242 user "NonExistentUser" was not found in "/etc/nginx/htpasswd.users", client: 108.60.145.130, server: example.com, request: "GET / HTTP/1.1", host: "45.55.252.231"

Если вы видите ошибку «+ несоответствие пароля +», пользователь существует, но вы ввели неверный пароль. Этот тип ошибки указан в следующей записи журнала:

Nginx error logs (user password mismatch):2015/10/26 12:12:56 [error] 3933#0: *242 user "kibanaadmin": password mismatch, client: 108.60.145.130, server: example.com, request: "GET / HTTP/1.1", host: "45.55.252.231"

Решение этих двух ошибок состоит в том, чтобы либо предоставить правильную информацию для входа в систему, либо изменить существующий файл + htpasswd + с помощью имен пользователей, которые вы ожидаете существовать. Например, чтобы создать или перезаписать пользователя с именем + kibanaadmin + в файле + htpasswd.users +, используйте эту команду:

sudo htpasswd /etc/nginx/htpasswd.users

Затем введите желаемый пароль и подтвердите его.

Если вы видите ошибку + Нет такого файла или каталога, файл` + htpasswd`, указанный в конфигурации Nginx, не существует. Этот тип ошибки указан в следующей записи журнала:

Nginx error logs (htpasswd file does not exist):2015/10/26 12:17:38 [error] 3933#0: *266 open() "/etc/nginx/htpasswd.users" failed (2: No such file or directory), client: 108.60.145.130, server: example.com, request: "GET / HTTP/1.1", host: "45.55.252.231"

Здесь вы должны создать новый файл + / etc / nginx / htpasswd.users + и добавить в него пользователя (+ kibanaadmin + в этом примере) с помощью этой команды:

sudo htpasswd -c /etc/nginx/htpasswd.users

Введите новый пароль и подтвердите его.

Теперь попробуйте выполнить аутентификацию только что созданного вами пользователя.

Logstash: как проверить, работает ли он

Если Logstash не запущен, вы не сможете получать и анализировать журналы от грузоотправителей, таких как Filebeat, и хранить обработанные журналы в Elasticsearch. Этот раздел покажет вам, как проверить, нормально ли работает Logstash.

Убедитесь, что служба работает

Самое основное, что нужно проверить - это статус статуса Logstash:

sudo service logstash status

Если Logstash запущен, вы увидите этот вывод:

Logstash status (OK):logstash is running

В противном случае, если служба не запущена, вы увидите это сообщение:

Logstash status (Bad):logstash is not running

Если Logstash не работает, попробуйте запустить его с помощью этой команды:

sudo service logstash start

Затем проверьте его статус снова, через несколько секунд. Logstash - это Java-приложение, и оно будет сообщать о том, что оно «работает», в течение нескольких секунд после каждой попытки запуска, поэтому важно подождать несколько секунд, прежде чем проверять состояние «не работает». Если он сообщает, что «не работает», он, вероятно, неправильно настроен. Следующие два раздела посвящены устранению распространенных проблем Logstash.

Проблема: Logstash не работает

Если Logstash не работает, существует несколько возможных причин. В этом разделе будут рассмотрены различные распространенные случаи, когда Logstash не будет работать, и предложены возможные решения.

Причина. Конфигурация содержит синтаксическую ошибку.

Если в файлах конфигурации Logstash есть ошибки, которые находятся в каталоге + / etc / logstash / conf.d +, служба не сможет запуститься должным образом. Лучше всего проверить журналы Logstash на наличие подсказок о том, почему он не работает.

Откройте два сеанса терминала на вашем сервере, чтобы вы могли просматривать журналы Logstash при попытке запустить службу.

В первом терминальном сеансе мы рассмотрим журналы:

tail -f /var/log/logstash/logstash.log

Это покажет последние несколько записей журнала, а также любые будущие записи журнала.

Во втором терминальном сеансе попробуйте запустить службу Logstash:

sudo service logstash start

Вернитесь к первому сеансу терминала, чтобы просмотреть журналы, которые генерируются при запуске Logstash.

Если вы видите записи журнала, которые включают сообщения об ошибках, попробуйте прочитать сообщения, чтобы выяснить, что происходит не так. Вот пример журналов ошибок, которые вы можете увидеть, если в конфигурации Logstash есть синтаксическая ошибка (несоответствующие фигурные скобки):

Logstash logs (Syntax error):...
{:timestamp=>"2015-10-28T11:51:09.205000-0400", :message=>"Error: Expected one of #, => at line 12, column 6 (byte 209) after input {\n  lumberjack {\n    port => 5043\n    type => \"logs\"\n    ssl_certificate => \"/etc/pki/tls/certs/logstash-forwarder.crt\"\n    ssl_key => \"/etc/pki/tls/private/logstash-forwarder.key\"\n  \n}\n\n\nfilter {\n  if "}
{:timestamp=>"2015-10-28T11:51:09.228000-0400", :message=>"You may be interested in the '--configtest' flag which you can\nuse to validate logstash's configuration before you choose\nto restart a running system."}

Последнее сообщение о том, что мы можем быть заинтересованы в проверке конфигурации, указывает на то, что конфигурация содержит синтаксическую ошибку. Предыдущее сообщение содержит более конкретное сообщение об ошибке, в данном случае об отсутствии закрывающей фигурной скобки в разделе + input + конфигурации. Чтобы решить эту проблему, отредактируйте оскорбительную часть вашей конфигурации Logstash:

sudo vi /etc/logstash/conf.d/

Найдите строку с неправильным входом и исправьте ее, затем сохраните и выйдите.

Теперь на втором терминале запустите сервис Logstash:

sudo service logstash start

Если проблема была решена, новых записей в журнале не должно быть (Logstash не регистрирует успешный запуск). Через несколько секунд проверьте состояние службы Logstash:

sudo service logstash status

Если он работает, вы решили проблему.

У вас может быть другая проблема с конфигурацией, чем в нашем примере. Мы рассмотрим некоторые другие распространенные проблемы конфигурации Logstash. Как всегда, если вы можете понять, что означает ошибка, попробуйте исправить ее самостоятельно.

Причина: файлы SSL не существуют

Другая распространенная причина, по которой Logstash не работает, - это проблема с сертификатом SSL и файлами ключей. Например, если они не существуют там, где их указывает конфигурация Logstash, в ваших журналах будет отображаться ошибка, подобная этой:

Logstash logs (SSL key file does not exist):{:timestamp=>"2017-12-01T16:51:31.656000+0000", :message=>"Invalid setting for beats input plugin:\n\n  input {\n    beats {\n      # This setting must be a path\n      # File does not exist or cannot be opened /etc/pki/tls/certs/logstash-forwarder.crt\n      ssl_certificate => \"/etc/pki/tls/certs/logstash-forwarder.crt\"\n      ...\n    }\n  }", :level=>:error}
{:timestamp=>"2017-12-01T16:51:31.671000+0000", :message=>"Invalid setting for beats input plugin:\n\n  input {\n    beats {\n      # This setting must be a path\n      # File does not exist or cannot be opened /etc/pki/tls/private/logstash-forwarder.key\n      ssl_key => \"/etc/pki/tls/private/logstash-forwarder.key\"\n      ...\n    }\n  }", :level=>:error}
{:timestamp=>"2017-12-01T16:51:31.685000+0000", :message=>"Error: Something is wrong with your configuration.", :level=>:error}

Чтобы решить эту конкретную проблему, вам необходимо убедиться, что у вас есть файл ключа SSL (https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-4-on -ubuntu-14-04 # generate-ssl-сертификаты [сгенерировать один], если вы забыли), и что он находится в правильном месте (+ / etc / pki / tls / private / logstash-forwarder.key +, в примере). Если у вас уже есть файл ключа, обязательно переместите его в нужное место и убедитесь, что конфигурация Logstash указывает на него.

Теперь запустите сервис Logstash:

sudo service logstash start

Если проблема была решена, новых записей в журнале не должно быть. Через несколько секунд проверьте состояние службы Logstash:

sudo service logstash status

Если он работает, вы решили проблему.

Проблема: Logstash работает, но не хранит журналы в Elasticsearch

Если Logstash работает, но не хранит журналы в Elasticsearch, это потому, что он не может достичь Elasticsearch. Как правило, это результат Elasticsearch не работает. В этом случае в журналах Logstash будут отображаться такие сообщения об ошибках:

Logstash logs (Elasticsearch isn't running):{:timestamp=>"2017-12-01T16:53:29.571000+0000", :message=>"Connection refused (Connection refused)", :class=>"Manticore::SocketException", :backtrace=>[], :level=>:error}

В этом случае убедитесь, что Elasticsearch запущен, следуя инструкциям по устранению неполадок Elasticsearch.

Вы также можете увидеть такие ошибки:

Logstash logs (Logstash is configured to send its output to the wrong host):{:timestamp=>"2017-12-01T16:56:26.274000+0000", :message=>"Attempted to send a bulk request to Elasticsearch configured at '[\"http://localhost:9200/\"]', but Elasticsearch appears to be unreachable or down!", :error_message=>"Connection refused (Connection refused)", :class=>"Manticore::SocketException", :client_config=>{:hosts=>["http://localhost:9200/"], :ssl=>nil, :transport_options=>{:socket_timeout=>0, :request_timeout=>0, :proxy=>nil, :ssl=>{}}, :transport_class=>Elasticsearch::Transport::Transport::HTTP::Manticore, :logger=>nil, :tracer=>nil, :reload_connections=>false, :retry_on_failure=>false, :reload_on_failure=>false, :randomize_hosts=>false}, :level=>:error}
{:timestamp=>"2017-12-01T16:57:49.090000+0000", :message=>"SIGTERM received. Shutting down the pipeline.", :level=>:warn}

Это указывает на то, что раздел + output + вашей конфигурации Logstash может указывать на неправильный хост. Чтобы решить эту проблему, убедитесь, что Elasticsearch запущен, и проверьте свою конфигурацию Logstash:

sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

Убедитесь, что строка + hosts ⇒ [" "] + указывает на хост, на котором выполняется Elasticsearch

Logstash output configuration excerptoutput {
 elasticsearch {
   hosts => ["localhost:9200"]
   sniffing => true
. . .

Сохранить и выйти. В этом примере предполагается, что Elasticsearch работает на + localhost +.

Перезапустите сервис Logstash.

sudo service logstash restart

Затем проверьте журналы Logstash на наличие ошибок.

Filebeat: как проверить, работает ли он

Filebeat запускается на ваших * клиентских * компьютерах и отправляет журналы на ваш сервер ELK. Если Filebeat не запущен, вы не сможете отправлять свои различные журналы в Logstash. В результате журналы не будут храниться в Elasticsearch и не будут отображаться в Kibana. Этот раздел покажет вам, как проверить, работает ли Filebeat нормально.

Убедитесь, что журналы успешно отправлены

Самый простой способ определить, правильно ли Filebeat отправляет журналы в Logstash, - это проверить ошибки Filebeat в журнале системного журнала.

sudo tail /var/log/syslog | grep filebeat

Если все настроено правильно, вы должны увидеть некоторые записи в журнале при остановке или запуске процесса Filebeat, но больше ничего.

Если вы не видите никаких записей в журнале, вы должны убедиться, что Filebeat работает.

Убедитесь, что служба работает

Самое основное, что нужно проверить - это статус Filebeat:

sudo service filebeat status

Если Filebeat запущен, вы увидите этот вывод:

Output* filebeat is running

В противном случае, если служба не запущена, вы увидите это сообщение:

Output * filebeat is not running

Если Filebeat не работает, попробуйте запустить его с помощью этой команды:

sudo service filebeat start

Затем проверьте статус снова. Если это не решит проблему, следующие разделы помогут вам устранить проблемы с Filebeat. Мы рассмотрим типичные проблемы Filebeat и способы их решения.

Проблема: Filebeat не работает

Если Filebeat не работает на вашем * клиентском * компьютере, существует несколько возможных причин. В этом разделе будут рассмотрены различные распространенные случаи, когда Filebeat не будет работать, и предложены возможные решения.

Причина. Конфигурация содержит синтаксическую ошибку.

Если Filebeat имеет ошибки в своем файле конфигурации, который находится по адресу + / etc / filebeat / filebeat.yml +, служба не сможет запуститься должным образом. Он сразу выйдет с ошибками вроде следующего:

OutputLoading config file error: YAML config parsing failed on /etc/filebeat/filebeat.yml: yaml: line 13: could not find expected ':'. Exiting.

В этом случае в файле конфигурации есть опечатка. Чтобы решить эту проблему, отредактируйте оскорбительную часть конфигурации Filebeat. Для руководства следуйте подразделу * Configure Filebeat * https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14- 04 # set-up-filebeat- (добавить-клиент-серверы) [Настроить Filebeat (Добавить клиентские серверы]]) учебника по стеку ELK.

После редактирования конфигурации Filebeat попробуйте снова запустить службу:

sudo service filebeat start

Если вы не видите сообщения об ошибке, проблема устранена.

Причина: SSL-сертификат отсутствует или недействителен

Для обмена данными между Filebeat и Logstash требуется SSL-сертификат для аутентификации и шифрования. Если Filebeat не запускается должным образом, вы должны проверить системный журнал на наличие ошибок, подобных следующим:

OutputError Initialising publisher: open /etc/pki/tls/certs/logstash-forwarder.crt: no such file or directory

Это указывает на то, что файл + logstash-forwarder.crt + находится не в соответствующем месте. Чтобы решить эту проблему, скопируйте сертификат SSL с сервера ELK на свой клиентский компьютер, следуя соответствующим подразделам https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and- kibana-elk-stack-on-ubuntu-14-04 # set-up-filebeat- (добавить-клиент-серверы) [раздел Настройка Filebeat (Добавить клиентские серверы)] учебника по стеку ELK.

Поместив соответствующий файл сертификата SSL в нужное место, попробуйте снова запустить Filebeat.

Если сертификат SSL недействителен, журналы должны выглядеть следующим образом:

syslog (Certificate is invalid):transport.go:125: SSL client failed to connect with: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "elk.example.com")

Обратите внимание, что сообщение об ошибке указывает, что сертификат существует, но недействителен. В этом случае вам необходимо следовать https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04#generate. -ssl-Certificates [Создать раздел SSL-сертификатов] учебника ELK-стека, затем скопировать SSL-сертификат на клиентский компьютер (https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash- и-kibana-elk-stack-on-ubuntu-14-04 # set-up-filebeat- (добавить-клиент-серверы) [Настроить Filebeat (добавить клиентские серверы)]).

Убедившись, что сертификат действителен и находится в правильном месте, вам нужно будет перезапустить Logstash (на сервере ELK), чтобы заставить его использовать новый ключ SSL:

sudo service logstash restart

Затем запустите Filebeat (на клиентском компьютере):

sudo service filebeat start

Проверьте журналы еще раз, чтобы убедиться, что проблема была решена.

Проблема: Filebeat не может подключиться к Logstash

Если Logstash (на сервере ELK) недоступен Filebeat (ваш клиентский сервер), вы увидите записи журнала ошибок, например:

syslog  (Connection refused):transport.go:125: SSL client failed to connect with: dial tcp 203.0.113.4:5044: getsockopt: connection refused

Распространенные причины недоступности Logstash:

  • Logstash не работает (на сервере ELK)

  • Брандмауэры на любом сервере блокируют соединение через порт + 5043 +

  • Filebeat не настроен с правильным IP-адресом, именем хоста или портом

Чтобы решить эту проблему, сначала убедитесь, что Logstash работает на сервере ELK, следуя разделам устранения неполадок Logstash этого руководства. Во-вторых, убедитесь, что межсетевой экран не блокирует сетевой трафик. В-третьих, убедитесь, что Filebeat настроен с правильным IP-адресом (или именем хоста) и портом сервера ELK.

Конфигурация Filebeat может быть отредактирована с помощью этой команды:

sudo vi /etc/filebeat/filebeat.yml

Убедившись в правильности информации о подключении Logstash, попробуйте перезапустить Filebeat:

sudo service filebeat restart

Проверьте журналы Filebeat еще раз, чтобы убедиться, что проблема была решена.

Для общего руководства по Filebeat, следуйте подразделу * Configure Filebeat * https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu- 14-04 # set-up-filebeat- (добавить-клиент-серверы) [Настроить Filebeat (Добавить клиентские серверы)] учебника по стеку ELK.

Elasticsearch: как проверить, работает ли он

Если Elasticsearch не работает, ни один из вашего стека ELK не будет работать. Logstash не сможет добавлять новые журналы в Elasticsearch, а Kibana не сможет получать журналы из Elasticsearch для создания отчетов. Этот раздел покажет вам, как проверить, работает ли Elasticsearch нормально.

Убедитесь, что служба работает

Самое основное, что нужно проверить - это статус службы Elasticsearch:

sudo service elasticsearch status

Если Elasticsearch запущен, вы увидите этот вывод:

Elasticsearch status (OK): * elasticsearch is running

В противном случае, если служба не запущена, вы увидите это сообщение:

Elasticsearch status (Bad): * elasticsearch is not running

В этом случае вы должны следовать следующим нескольким разделам, посвященным устранению неполадок Elasticsearch.

Убедитесь, что он отвечает на запросы HTTP

По умолчанию Elasticsearch отвечает на HTTP-запросы на порт + 9200 + (это можно настроить в своем файле конфигурации, указав новое значение + http.port +). Мы можем использовать + curl + для отправки запросов и получения полезной информации от Elasticsearch.

Отправьте HTTP-запрос GET, используя curl, с помощью этой команды (при условии, что ваш Elasticsearch может быть достигнут в + localhost +):

curl localhost:9200

Если Elasticsearch запущен, вы должны увидеть ответ, который выглядит примерно так:

Output{
 "name" : "Hildegarde",
 "cluster_name" : "elasticsearch",
 "cluster_uuid" : "E8q9kr-0RxycYhSLNx8xeA",
 "version" : {
   "number" : "2.4.6",
   "build_hash" : "5376dca9f70f3abef96a77f4bb22720ace8240fd",
   "build_timestamp" : "2017-07-18T12:17:44Z",
   "build_snapshot" : false,
   "lucene_version" : "5.5.4"
 },
 "tagline" : "You Know, for Search"
}

Вы также можете проверить работоспособность вашего кластера Elasticsearch с помощью этой команды:

curl localhost:9200/_cluster/health?pretty

Ваш вывод должен выглядеть примерно так:

Output{
 "cluster_name" : "elasticsearch",
 "status" : "yellow",
 "timed_out" : false,
 "number_of_nodes" : 1,
 "number_of_data_nodes" : 1,
 "active_primary_shards" : 6,
 "active_shards" : 6,
 "relocating_shards" : 0,
 "initializing_shards" : 0,
 "unassigned_shards" : 6,
 "delayed_unassigned_shards" : 0,
 "number_of_pending_tasks" : 0,
 "number_of_in_flight_fetch" : 0,
 "task_max_waiting_in_queue_millis" : 0,
 "active_shards_percent_as_number" : 50.0
}

Обратите внимание, что если ваш кластер Elasticsearch состоит из одного узла, ваш кластер, вероятно, будет иметь статус «+ желтый ». Это нормально для кластера с одним узлом; вы можете перейти в состояние « green +», добавив хотя бы еще один узел в ваш кластер Elasticsearch.

Проблема: Elasticsearch не работает

Если Elasticsearch не запущен, существует множество возможных причин. В этом разделе будут рассмотрены различные распространенные случаи, когда Elasticsearch не будет работать, и предложены возможные решения.

Причина: это никогда не было начато

Если Elasticsearch не запущен, он, возможно, не был запущен в первую очередь; Elasticsearch не запускается автоматически после установки. Решение этой проблемы состоит в том, чтобы вручную запустить его в первый раз:

sudo service elasticsearch start

Это должно сообщить, что Elasticsearch запускается. Подождите около 10 секунд, затем проверьте статус статуса Elasticsearch еще раз.

Причина: служба Elasticsearch не была включена, и сервер перезагрузился

Если Elasticsearch работал нормально, но больше не работает, возможно, он не включен должным образом. По умолчанию служба Elasticsearch не включена для запуска при загрузке, вы должны явно включить Elasticsearch для запуска при загрузке:

sudo update-rc.d elasticsearch defaults 95 10

Elasticsearch теперь должен автоматически запускаться при загрузке. Проверьте, работает ли он, перезагрузив сервер.

Причина: Elasticsearch неверно настроен

Если Elasticsearch имеет ошибки в своем файле конфигурации, который находится в + / etc /asticsearch /asticsearch.yml +, служба не сможет запуститься должным образом. Лучше всего проверить журналы ошибок Elasticsearch, чтобы понять, почему он не работает.

Откройте два сеанса терминала на вашем сервере, чтобы вы могли просматривать журналы Elasticsearch при попытке запустить службу.

В первом терминальном сеансе мы рассмотрим журналы:

tail -f /var/log/elasticsearch/elasticsearch.log

Это покажет последние несколько записей журнала, а также любые будущие записи журнала.

Во втором терминальном сеансе попробуйте запустить службу Elasticsearch:

sudo service elasticsearch start

Вернитесь к первому сеансу терминала, чтобы просмотреть журналы, которые генерируются при запуске Elasticsearch.

Если вы видите записи журнала, которые указывают на ошибки или исключения (например, + ERROR,` + Exception` или + error), попробуйте найти строку, которая указывает, что вызвало ошибку. Вот пример журналов ошибок, которые вы увидите, если Elasticsearch + network.host + установлен на имя хоста или IP-адрес, который не разрешается:

Elasticsearch logs (Bad):...
[2015-10-27 15:24:43,495][INFO ][node                     ] [Shadrac] starting ...
[2015-10-27 15:24:43,626][ERROR][bootstrap                ] [Shadrac] Exception
org.elasticsearch.transport.BindTransportException: Failed to resolve host [null]
   at org.elasticsearch.transport.netty.NettyTransport.bindServerBootstrap(NettyTransport.java:402)
   at org.elasticsearch.transport.netty.NettyTransport.doStart(NettyTransport.java:283)
   at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
   at org.elasticsearch.transport.TransportService.doStart(TransportService.java:153)
   at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:85)
   at org.elasticsearch.node.internal.InternalNode.start(InternalNode.java:257)
   at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:160)
   at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:248)
   at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
Caused by: java.net.UnknownHostException: : unknown error
...

Обратите внимание, что последняя строка примеров журналов указывает, что произошла ошибка + UnknownHostException: +. Этот конкретный пример указывает, что + network.host + установлен в + invalid_hostname +, что ни к чему не приводит. В установке с одним узлом Elasticsearch это должно быть установлено на + localhost + или + 127.0.0.1 +.

Чтобы решить эту проблему, отредактируйте файл конфигурации Elasticsearch:

sudo vi /etc/elasticsearch/elasticsearch.yml

Найдите строку с плохим входом и исправьте ее. В случае примера мы должны найти строку, которая определяет + network.host: invalid_hostname + и изменить ее так, чтобы она выглядела следующим образом:

/etc/elasticsearch/elasticsearch.yml выдержка

...
network.host:
...

Сохранить и выйти.

Теперь на втором терминале запустите сервис Elasticsearch:

sudo service elasticsearch start

Если проблема была решена, вы должны увидеть журналы без ошибок, которые указывают, что Elasticsearch запущен. Это может выглядеть примерно так:

Elasticsearch logs (Good):...
[2015-10-27 15:29:21,980][INFO ][node                     ] [Garrison Kane] initializing ...
[2015-10-27 15:29:22,084][INFO ][plugins                  ] [Garrison Kane] loaded [], sites []
[2015-10-27 15:29:22,124][INFO ][env                      ] [Garrison Kane] using [1] data paths, mounts [[/ (/dev/vda1)]], net usable_space [52.1gb], net total_space [58.9gb], types [ext4]
[2015-10-27 15:29:24,532][INFO ][node                     ] [Garrison Kane] initialized
[2015-10-27 15:29:24,533][INFO ][node                     ] [Garrison Kane] starting ...
[2015-10-27 15:29:24,646][INFO ][transport                ] [Garrison Kane] bound_address {inet[/127.0.0.1:9300]}, publish_address {inet[localhost/127.0.0.1:9300]}
[2015-10-27 15:29:24,682][INFO ][discovery                ] [Garrison Kane] elasticsearch/WJvkRFnbQ5mLTgOatk0afQ
[2015-10-27 15:29:28,460][INFO ][cluster.service          ] [Garrison Kane] new_master [Garrison Kane][WJvkRFnbQ5mLTgOatk0afQ][elk-run][inet[localhost/127.0.0.1:9300]], reason: zen-disco-join (elected_as_master)
[2015-10-27 15:29:28,561][INFO ][http                     ] [Garrison Kane] bound_address {inet[/127.0.0.1:9200]}, publish_address {inet[localhost/127.0.0.1:9200]}
[2015-10-27 15:29:28,562][INFO ][node                     ] [Garrison Kane] started
...

Теперь, если вы проверите статус Elasticsearch, и вы должны увидеть, что он работает нормально.

У вас может быть другая проблема с конфигурацией, чем в нашем примере. Если вам удалось выяснить, что означает ошибка, попробуйте исправить ее самостоятельно. Если это не помогло, попробуйте поискать в Интернете отдельные строки ошибок, которые не содержат информацию, относящуюся к вашему серверу (например, IP-адрес или автоматически сгенерированное имя узла Elasticsearch).

Заключение

Надеемся, что это руководство по устранению неполадок помогло вам решить любые проблемы, возникающие при настройке стека ELK. Если у вас есть какие-либо вопросы или предложения, оставьте их в комментариях ниже!

Related