Архив метки: Elasticsearch

Как установить и настроить Elasticsearch, Logstash, Kibana (ELK Stack) на Ubuntu, Debian, Centos

Большие информационные системы генерируют огромное количество служебной информации, которую нужно где-то хранить. Я расскажу о том, как настроить хранилище для логов на базе Elasticsearch, Logstash и Kibana, которое называют ELK Stack. В это хранилище можно настроить отправку практически любых логов в разных форматах и большого объема. Читать

Исправляем статус одиночного сервера ElasticSearch

Зелёный статус для одиночного ElasticSearch




  • Когда мы собеседуем системных администраторов и видим в их резюме упоминание ElasticSearch, мы обязательно задаём им вопрос «какого цвета будет одиночный сервер?»
  • Примерно половина соискателей не понимает его смысла и на этом наше знакомство с ними, как правило, заканчивается (потому что их владение остальными указанными в резюме терминами обычно находится на аналогичном уровне).




Оставшейся половине мы задаём два вопроса:




  • Почему он жёлтый,
  • и как превратить его в зелёный, не создавая кластер?




Цвет означает состояние сервера:




  • Зелёный — всё хорошо.
  • Жёлтый — сервер правильно обрабатывает все запросы на чтение/запись, но есть внутренние проблемы, которые необходимо исправить.
  • Красный — всё плохо.




Как увидеть цвет сервера?




  • Запрос:




curl '127.0.0.1:9200/_cluster/health?pretty=true'




  • Пример ответа:




{
  "cluster_name" : "elasticsearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1880,
  "active_shards" : 1880,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 1680,
  "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" : 52.80898876404494
}




Почему отдельный сервер будет по умолчанию жёлтым?




  • Потому что ElasticSearch является отказоустойчивой системой хранения данных, которая расчитана для запуска не на одном сервере, а на группе (кластере) из нескольких связанных серверов (узлов, “nodes”).
  • В частности, ElasticSearch подразумевает, что при отказе одного узла система должна сохранять полную работоспособность.
  • Для этого система должна состоять из нескольких серверов (минимум — двух, желательно — трёх для предотвращения split brain), и каждая порция данных (т.н. “shard” в терминологии ES) должна храниться в нескольких экземплярах на разных серверах.
  • Один из этих экземпляров ES будет считать первичным (“master shard”), остальные копиями первичного (“replica shards”).
  • В системе из одного сервера ES хранит на нём все “primary shards”, но создавать “replica shards” такой системе будет негде.
  • Поэтому статус в приведённом примере является жёлтым из-за ненулевого значения “unassigned_shards”, которое примерно равно “active_shards”.
  • Небольшая разница между количеством активных и неразмещённых шардов обусловлена тем, что часть служебных индексов является локальной для каждого узла, то есть не должна иметь реплик и не приводит к появлению unassigned shards.
  • Подробнее о том, что такое шарды, зачем они нужны, и какое место занимают между документами и индексами: https://stackoverflow.com/a/49892584/2743554.




Как сделать одиночный сервер зелёным?




  • Сначала узнаем, какие шарды система не сумела разместить:




curl -sS -XGET '127.0.0.1:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED




  • Теперь посмотрим, к каким индексам они относятся:




curl -sS -XGET '127.0.0.1:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | awk '/UNASSIGNED/ { print $1 }'




  • После этого поменяем настройки индексов — уменьшим количество реплик (так называемый Replication Factor) до нуля:




curl -sS -XGET '127.0.0.1:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | awk '/UNASSIGNED/ { print $1 }' |
while read idx; do
    curl -XPUT "localhost:9200/$idx/_settings" -H 'Content-Type: application/json' -d '{ "index": { "number_of_replicas": 0 } }'
done




или




curl -sS -XGET '10.233.108.217:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | awk '/UNASSIGNED/ { print $1 }' 




  • И проверим результат:




{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1880,
  "active_shards" : 1880,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "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" : 100.0
}




Почему в полночь карета превратится в тыкву сервер снова станет жёлтым?




  • Потому что в ES принято каждые сутки автоматически создавать новый индекс с именем вида “basename-yyyy.mm.dd” из шаблона.
  • Поэтому Replication Factor необходимо уменьшить до нуля не только в существующих индексах, но и в шаблонах, из которых будут создаваться новые индексы.
  • Это делается так:




curl -XPUT "127.0.0.1:9200/_template/all?pretty=true" -H 'Content-Type: application/json' -d 
'{ "template" : "*" , "settings": { "number_of_replicas": 0 } }' 




или




curl -XPUT "10.233.108.217:9200/$idx/_settings" -H 'Content-Type: application/json' -d '{ "index": { "number_of_replicas": 0 } }'




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




Источник: https://cdnnow.ru/blog/esgreen/



2022-01-13T01:38:45
Software

Как установить Elasticsearch на Debian 10

Elasticsearch — это распределенная система полнотекстового поиска и аналитики с открытым исходным кодом. Он поддерживает операции RESTful и позволяет хранить, искать и анализировать большие объемы данных в режиме реального времени.

Elasticsearch — одна из самых популярных поисковых систем для приложений со сложными поисковыми требованиями, таких как крупные магазины электронной коммерции и аналитические приложения. Читать

Очистка elasticsearch с помощью curator

Сегодня расскажу, как настроить автоматическую очистку индексов elasticsearch с помощью curator. С этим столкнется каждый, кто будет эксплуатировать систему, так как она очень требовательна к ресурсам. Очистка старых индексов увеличивает быстродействие.

Читать

Как установить стек ELK на Debian 9

В этой статье мы покажем вам, как установить и настроить стек ELK на Debian 9. ELK представляет собой набор из трех открытых источников продуктов, Elasticsearch, Logstash и Kibana и надежное решение для поиска, анализа и визуализации данных. Elasticsearch — это распределенный поисковый и аналитический движок NoSQL для поиска и анализа на основе Lucene, Logstash — это легкий конвейер для обработки событий и журналов из самых разных источников, а Kibana — это веб-приложение для визуализации данных, которое работает поверх Elasticsearch, Эта статья ELK Stack должна работать и на других системах Linux VPS, но была протестирована и написана для Debian 9 VPS, Установка ELK Stack на Debian 9 — это простая и простая задача, просто выполните приведенные ниже шаги, и вы должны установить ее менее чем за 10 минут.

1. Требования

Для завершения этого урока вам понадобятся:

  • Debian 9 VPS
  • Пользователь с привилегиями sudo

2. Обновление системы и установка необходимых пакетов.

sudo apt-get update && apt-get -y upgrade

sudo apt-get install apt-transport-https software-properties-common wget

 

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

3. Установка Java

Для запуска Elicsearch требуется, по меньшей мере, Java 8. Он поддерживает как OpenJDK, так и Oracle Java. В этом руководстве мы установим OpenJDK версии 8.

Чтобы установить OpenJDK, выполните следующую команду:

sudo apt install openjdk-8-jdk

 

Чтобы проверить, правильно ли установлено все, выполните:

java -version

 

и вы должны увидеть что-то вроде следующего:

openjdk version "1.8.0_171"

OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-1~deb9u1-b11)

OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

4. Установка и настройка Elasticsearch на Debian 9

Как установить стек ELK на Debian 9

Мы установим Elasticsearch, используя диспетчер пакетов apt из официального репозитория Elastic. Сначала включите репозиторий и обновите список кеша пакета следующими командами:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

sudo apt-get update

 

и установите Elasticsearch с помощью команды apt, используя следующую команду:

sudo apt-get install elasticsearch


 

По завершении установки откройте файл elasticsearch.yml и ограничите удаленный доступ к экземпляру Elasticsearch:

sudo nano /etc/elasticsearch/elasticsearch.yml

# ---------------------------------- Network -----------------------------------

#

# Set the bind address to a specific IP (IPv4 or IPv6):

#

#network.host: 192.168.0.1

network.host: localhost


 

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

sudo systemctl restart elasticsearch

sudo systemctl enable elasticsearch


 

Чтобы проверить статус сервера elasticsearch, вы можете использовать следующую команду:

curl -X GET http: // localhost: 9200

 

Результат должен выглядеть так:

{

  "name" : "UHR2XBB",

  "cluster_name" : "elasticsearch",

  "cluster_uuid" : "Ranc0Jh9QAuuMYhALcZIRA",

  "version" : {

    "number" : "6.2.4",

    "build_hash" : "ccec39f",

    "build_date" : "2018-04-12T20:37:28.497551Z",

    "build_snapshot" : false,

    "lucene_version" : "7.2.1",

    "minimum_wire_compatibility_version" : "5.6.0",

    "minimum_index_compatibility_version" : "5.0.0"

  },

  "tagline" : "You Know, for Search"

}

5. Установка и настройка Kibana на Debian 9

Установка и настройка Kibana на Debian 9

То же, что и Elasticsearch, мы установим последнюю версию Kibana, используя менеджер пакетов apt из официального репозитория Elastic:

sudo apt-get install kibana

 

По завершении установки откройте файл kibana.yml и ограничите удаленный доступ к экземпляру Kibana:

sudo nano /etc/kibana/kibana.yml

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.

# The default is 'localhost', which usually means remote machines will not be able to connect.

# To allow connections from remote users, set this parameter to a non-loopback address.

server.host: "localhost"

Start the Kibana service and set it to start automatically on boot:

sudo systemctl restart kibana

sudo systemctl enable kibana

 

Теперь Kibana будет работать на локальном хосте на порту 5601

6. Установка и настройка Nginx как обратный прокси-сервер

Мы будем использовать Nginx в качестве обратного прокси для доступа к Kibana с общедоступного IP-адреса. Чтобы установить Nginx, запустите:

sudo apt-get install nginx

 

Создайте базовый файл аутентификации с помощью команды openssl:

echo "admin: $ (openssl passwd -apr1 YourStrongPassword)" | sudo tee -a /etc/nginx/htpasswd.kibana

 

Примечание: всегда используйте надежный пароль.

Удалите виртуальный хост nginx по умолчанию:

sudo rm -f /etc/nginx/sites-enabled/default

 

и создайте файл конфигурации виртуального хоста для экземпляра Kibana:

sudo nano /etc/nginx/sites-available/kibana

server {

    listen 80 default_server;

    server_name _;

    return 301 https://$server_name$request_uri;

}



server {

    listen 443 default_server ssl http2;

 

    server_name _;

 

    ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;

    ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

    ssl_session_cache shared:SSL:10m;

 

    auth_basic "Restricted Access";

    auth_basic_user_file /etc/nginx/htpasswd.kibana;

 

    location / {

        proxy_pass http://localhost:5601;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection 'upgrade';

        proxy_set_header Host $host;

        proxy_cache_bypass $http_upgrade;

    }

}


 

Активируйте серверный блок, создав символическую ссылку:

sudo ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/kibana

 

Проверьте конфигурацию Nginx:

sudo nginx -t

 

Перезапустите службу Nginx и запустите ее при загрузке автоматически:

sudo systemctl restart nginx

sudo systemctl enable nginx

7. Установка Logstash на Debian 9

Установка Logstash на Debian 9

Последним шагом является установка Logstash с помощью диспетчера пакетов apt из официального репозитория Elastic.

sudo apt-get install logstash

 

После того, как пакет Logstash установлен, запустите службу Logstash и запустите ее при загрузке автоматически:

sudo systemctl restart logstash

sudo systemctl enable logstash

 

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

8. Доступ к Kibana

Теперь вы можете получить доступ к интерфейсу kibana, открыв браузер и набрав https://YourServerIpAddress

Доступ к Kibana

 

Вот и все. Вы успешно установили стек ELK на свой Debian 9 VPS.

PS . Если вам понравился этот пост, поделитесь им со своими друзьями в социальных сетях, используя приведенные ниже кнопки или просто оставьте комментарий в разделе комментариев. Благодарю.



2018-06-06T05:17:13
Установка ПО на Debian