Установка Kibana

Я уже рассказывал про установку Elasticsearch и состав основных компонентов Elastic Stack. В этой публикациия расскажу о том, как выполняется установка Kibana – инструмента, которые позволяет визуализировать собранные данные и управлять компонентами Elastic Stack.

В качестве сервера я буду использовать ВМ с Rocky Linux 9.

Предварительные требования

Особых предварительных требований для установки Kibana нет, но есть требования к совместимости версий Kibana и Elasticsearch.

Мажорная версия Kibana должна быть идентичная мажорной версии Elasticsearch. В то же ввремя минорная версия Kibana должна быть равна или меньше минорной версии Elasticsearch. Например, версия Kibana 8.13.0 не совместима с версией Elasticsearch 7.3.0. Также Kibana 8.13.0 не поддерживается при работе с Elastichsearch 8.12.0. Зато поддерживается конфигурация с идентичными версиями Kibana и Elasticsearch. Также возможно совместимость Kibana 8.12.0 и Elasticsearch 8.13.0.

Различные патч версии Kibana и Elasticsearch совместимы между собой. Например, 8.13.0 и 8.13.2.

Установка Kibana

Установка выполняется следующим образом:

1. Загрузите deb/rpm пакет со страницы загрузки:

Вы также можете выполнить загрузку используя соответствующие шаги из руководства для Debian или RPM пакетов.

2. Запустите установку пакета:

sudo rpm -i kibana-8.13.2-x86_64.rpm

3. Включите автоматический запуск сервиса Kibana:

sudo systemctl daemon-reload
sudo systemctl enable kibana.service

Не запускайте сервис Kibana до завершения процедуры первоначальной настройки.

Первоначальная настройка Kibana

После установки Kibana необходимо выполнить её первоначальную настройку:

1. Сначала сгенерируем токен доступа на сервере с Elasticsearch:

sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
root@tst01:/home/roman# sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
eyJ2ZXIiOiI4LjEzLjIiLCJhZHIiOlsiMTkyLjE2OC41Ni40MDo5MjAwIl0sImZnciI6IjUwMGE5NjRiZTcxMjkwYjg0YmZkZTAxMjQ0ZTJkNDY5ZGMzZmM1NzFmOWFhNmRlMGVjYjljNjY0ZWUzZjMzYzQiLCJrZXkiOiJlVWJnNlk0QjF0TnFKMjQ5eGN2cTpUNlB1c01JcVF4Ml81ZjJzdTF4N3h3In0=
root@tst01:/home/roman#

2. Теперь нужно добавить адрес сервера Elastichsearch в конфигурационный файл сервиса Kibana:

sudo nano /etc/kibana/kibana.yml

3. Раскомментируем параметр server.host и укажем в нем IP-адрес сервера Kibana. на котором буут прослушиваться входящие подключения:

server.host: "192.168.56.36"

4. Сохраните внесенные изменения.

5. Запустите сервис Kibana:

sudo systemctl start kibana.service

6. Проверим статус сервиса Kibana:

sudo systemctl status kibana.service
[root@localhost roman]# sudo systemctl status kibana.service
● kibana.service - Kibana
     Loaded: loaded (/usr/lib/systemd/system/kibana.service; enabled; preset: disabled)
     Active: active (running) since Wed 2024-04-17 09:40:07 +07; 20s ago
       Docs: https://www.elastic.co
   Main PID: 1613 (node)
      Tasks: 11 (limit: 23168)
     Memory: 279.3M
        CPU: 21.328s
     CGroup: /system.slice/kibana.service
             └─1613 /usr/share/kibana/bin/../node/bin/node /usr/share/kibana/bin/../src/cli/dist

Apr 17 09:40:09 localhost.localdomain kibana[1613]: Native global console methods have been overridden in production environment.
Apr 17 09:40:11 localhost.localdomain kibana[1613]: [2024-04-17T09:40:11.588+07:00][INFO ][root] Kibana is starting
Apr 17 09:40:11 localhost.localdomain kibana[1613]: [2024-04-17T09:40:11.710+07:00][INFO ][node] Kibana process configured with roles: [background_tasks, ui]
Apr 17 09:40:25 localhost.localdomain kibana[1613]: [2024-04-17T09:40:25.591+07:00][INFO ][plugins-service] The following plugins are disabled: "cloudChat,cloudExperim>
Apr 17 09:40:25 localhost.localdomain kibana[1613]: [2024-04-17T09:40:25.728+07:00][INFO ][http.server.Preboot] http server running at http://192.168.56.36:5601
Apr 17 09:40:26 localhost.localdomain kibana[1613]: [2024-04-17T09:40:26.080+07:00][INFO ][plugins-system.preboot] Setting up [1] plugins: [interactiveSetup]
Apr 17 09:40:26 localhost.localdomain kibana[1613]: [2024-04-17T09:40:26.111+07:00][INFO ][preboot] "interactiveSetup" plugin is holding setup: Validating Elasticsearc>
Apr 17 09:40:26 localhost.localdomain kibana[1613]: [2024-04-17T09:40:26.161+07:00][INFO ][root] Holding setup until preboot stage is completed.
Apr 17 09:40:26 localhost.localdomain kibana[1613]: i Kibana has not been configured.
Apr 17 09:40:26 localhost.localdomain kibana[1613]: Go to http://192.168.56.36:5601/?code=773960 to get started.

7. Добавим исключение в правила брандмауэра (актуально для Rocky Linux):

sudo firewall-cmd --add-port=5601/tcp --permanent
sudo firewall-cmd --reload

8. Переходим по ссылке из сообщения статуса сервиса. В моем случае адрес следующий:

http://192.168.56.36:5601/?code=773960

9. Теперь нужно указать токен доступа, которые мы сгенерировали в п. 1 и нажать на кнопку “Configure Elastic”:

10. Дождитесь окончания процесса инициализации настроек Kibana. В случае успешного заврешения инициализации настроек должна отобразиться форма с приглашение указания учетных данных для подключения:

11. Используйте учетную запись пользователя elastic, который был создан в процессе установки сервера Elasticsearch.

12. В случае успешной аутентификации должен отобразиться стартовый экран Kibana:

Настройка шифрования трафика

После установки Kibana работает по HTTP, что далеко не безопасно в современных реалиях. Необходимо настроить шифрование трафика между серверами Kibana и Elasticsearch, а также между клиентским браузером и серверов Kibana. После завершения инициализации натроек Kibana трафик до сервера Elasticsearch уже по умолчанию зашифрован:

sudo nano /etc/kibana/kibana.yml
elasticsearch.hosts: ['https://192.168.56.40:9200']
elasticsearch.serviceAccountToken: AAEAAWVsYXN0aWMva2liYW5hL2Vucm9sbC1wcm9jZXNzLXRva2VuLTE3MTMzMjE5MjUxNTA6VncxMllkV3pSai12eDdOdHR6M1pFZw
elasticsearch.ssl.certificateAuthorities: [/var/lib/kibana/ca_1713321927055.crt]

Остается выполнить настройку шифрования между браузером клиента и сервером Kibana.

Шифрование между браузером и Kibana

Для настройки TLS соединения между клиентски браузером и Kibana необходим открытый ключ и закрытый ключ сертификата. Есть несколько вариантов:

1. Выпустить самоподписанный сертификат для Kibana. Этот вариант подойдет для тестовых сред.

2. Использовать сертификат от стороннего центра сертификации. Например, от Let’s Encrypt.

Я буду использовать второй вариант.

Шифрование между браузером и сервером Kibana конфигурируется следующим образом:

1. Скопируйте в директорию /etc/kibana файл открытого и закрытого ключа сертификата:

sudo ls -l /etc/kibana
[root@localhost roman]# sudo ls -l /etc/kibana
total 28
-rw-rw----. 1 root kibana 1935 Apr 17 12:30 cert.crt
-rw-rw----. 1 root kibana  130 Apr 17 09:22 kibana.keystore
-rw-rw----. 1 root kibana 8400 Apr 17 12:26 kibana.yml
-rw-r--r--. 1 root kibana  447 Apr  5 23:19 node.options
-rw-rw----. 1 root kibana 2459 Apr 17 12:30 priv.key
[root@localhost roman]#

2. Откройте на редактирование конфигурационный файл сервиса Kibana.

sudo nano /etc/kibana/kibana.yml

3. Раскомментируйте следующие параметры и укажите расположений файла открытого и закрытого ключа сертификата:

server.ssl.enabled: true
server.ssl.certificate: /etc/kibana/certs/cert.crt
server.ssl.key: /etc/kibana/certs/priv.key

4. Сохраните изменения в файле конфигурации.

5. Перезапустите сервис Kibana:

sudo systemctl start kibana.service

5. Проверим статус сервиса:

sudo systemctl status kibana.service
[root@localhost roman]# sudo systemctl status kibana.service
● kibana.service - Kibana
     Loaded: loaded (/usr/lib/systemd/system/kibana.service; enabled; preset: disabled)
     Active: active (running) since Wed 2024-04-17 15:25:33 +07; 4min 14s ago
       Docs: https://www.elastic.co
   Main PID: 14939 (node)
      Tasks: 11 (limit: 23168)
     Memory: 458.4M
        CPU: 1min 13.849s
     CGroup: /system.slice/kibana.service
             └─14939 /usr/share/kibana/bin/../node/bin/node /usr/share/kibana/bin/../src/cli/dist

Apr 17 15:28:06 localhost.localdomain kibana[14939]: [2024-04-17T15:28:06.267+07:00][INFO ][plugins.fleet] Beginning fleet setup
Apr 17 15:28:06 localhost.localdomain kibana[14939]: [2024-04-17T15:28:06.269+07:00][INFO ][plugins.fleet] Cleaning old indices
Apr 17 15:28:06 localhost.localdomain kibana[14939]: [2024-04-17T15:28:06.706+07:00][WARN ][plugins.fleet] xpack.encryptedSavedObjects.encryptionKey is not configured, private key passphrase is being sto>
Apr 17 15:28:06 localhost.localdomain kibana[14939]: [2024-04-17T15:28:06.739+07:00][INFO ][plugins.fleet] Fleet setup completed
Apr 17 15:28:19 localhost.localdomain kibana[14939]: [2024-04-17T15:28:19.252+07:00][INFO ][plugins.securitySolution.endpoint:user-artifact-packager:1.0.0] Started. Checking for changes to endpoint artif>
Apr 17 15:28:19 localhost.localdomain kibana[14939]: [2024-04-17T15:28:19.267+07:00][INFO ][plugins.securitySolution.endpoint:user-artifact-packager:1.0.0] Last computed manifest not available yet
Apr 17 15:28:19 localhost.localdomain kibana[14939]: [2024-04-17T15:28:19.268+07:00][INFO ][plugins.securitySolution.endpoint:user-artifact-packager:1.0.0] Complete. Task run took 16ms [ stated: 2024-04->
Apr 17 15:29:22 localhost.localdomain kibana[14939]: [2024-04-17T15:29:22.243+07:00][INFO ][plugins.securitySolution.endpoint:user-artifact-packager:1.0.0] Started. Checking for changes to endpoint artif>
Apr 17 15:29:22 localhost.localdomain kibana[14939]: [2024-04-17T15:29:22.253+07:00][INFO ][plugins.securitySolution.endpoint:user-artifact-packager:1.0.0] Last computed manifest not available yet
Apr 17 15:29:22 localhost.localdomain kibana[14939]: [2024-04-17T15:29:22.254+07:00][INFO ][plugins.securitySolution.endpoint:user-artifact-packager:1.0.0] Complete. Task run took 11ms [ stated: 2024-04->
lines 1-21/21 (END)

6. Теперь интерфейс Kibana будет доступен по тому же стандартному порту 5601, но уже по HTTPS:

https://192.168.56.36:5601/

В моем случае я обращался к Kibana по IP-адресу, а не по DNS-имени. В следствии этого отображается предупреждение о небезопасном соединении.

Настройка прослушиваемого имени

Также рекомендуемтся в конфигурационном файле сервиса Kibana указать имя, по которому сервис будет прослушивать входящие подключения:

sudo nano /etc/kibana/kibana.yml

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

server.publicBaseUrl: "https://kib.itproblog.ru"

Сохраните внесенные изменения и перезапустите сервис Kibana:

sudo systemctl start kibana.service

Подключение Elastic Enterprise Search

Для того, чтобы в Kibana работал Elastic web crawler необходим еще один компонент – Elastic Enterprise Search.

Для подключения Elastic Enterprise Search выполните следующие действия:

1. Установите Elastic Enterprise Search на отдельном хосте или на хосте с Kibana. На своем тестовом стенде я совместил Elastic Enterprise Search и Kibana.

2. Откройте для редактирования конфигурационный файл Kibana:

sudo nano /etc/kibana/kibana.yml

3. Добавьте параметр с указанием расположения сервиса Elastic Enterprise Search:

enterpriseSearch.host: 'http://localhost:3002'

Поскольку я совместил Elastic Enterprise Search и Kibana, то я могу обращаться через локальный хост.

4. Сохраните внесенные изменения.

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

sudo systemctl restart kibana.service

Если вы все выполнили верно, то на странице с перечнем всех индексов вы не должны увидеть соответствующего предупреждения о том, что сервис Elastic Enterprise Search не подключен.

https://192.168.56.36:5601/app/enterprise_search/content/search_indices

Пример окно с перечнем индексов после успешного подключения сервиса Elastic Enterprise Search.

Как видно из примера выше предупреждениебольше не отображается.

Если что-то пошло не так

Смотрим журналы:

sudo journalctl -u kibana.service

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

/var/log/kibana

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *