как установить kibana на windows
Как установить kibana на windows
NOTE: You are looking at documentation for an older release. For the latest information, see the current release documentation.
Install Kibana on Windowsedit
This package is free to use under the Elastic license. It contains open source and free commercial features and access to paid commercial features. Start a 30-day trial to try out all of the paid commercial features. See the Subscriptions page for information about Elastic license levels.
The latest stable version of Kibana can be found on the Download Kibana page. Other versions can be found on the Past Releases page.
Alternatively, you can download the following package, which contains only features that are available under the Apache 2.0 license: https://artifacts.elastic.co/downloads/kibana/kibana-oss-6.8.20-windows-x86_64.zip
Running Kibana from the command lineedit
Kibana can be started from the command line as follows:
Configuring Kibana via config fileedit
home
Directory created by unpacking the archive
Binary scripts including kibana to start the Kibana server and kibana-plugin to install plugins
config
Configuration files including kibana.yml
data
The location of the data files written to disk by Kibana and its plugins
optimize
Transpiled source code. Certain administrative actions (e.g. plugin install) result in the source code being retranspiled on the fly.
plugins
Plugin files location. Each plugin will be contained in a subdirectory.
Сервер логов Elasticsearch + Logstash + Kibana4 + Beats(windows/linux). Установка и настройка
Встал вопрос централизованного хранения и обработки журналов с серверов на базе Linux и Windows. Мой выбор пал на продукты от Elastic.
Большинство прочитанных статей на тему установки приложений Elastic показались мне достаточно расплывчатыми и неполными.
Основной и единственный источник информации, который я использовал: www.elastic.co/guide/index.html.
Этот мануал конечно не является исчерпывающим, но является достаточным для первоначальной установки и настройки рабочего лог-сервера elasticsearch+logtash+kibana4+beats (windows\linux-агенты).
Подробная информация, дополнительные возможности, а также «реал кунг-фу» доступны в официальной документации.
Будем собирать и склеивать
Подготовка
Редактируем hosts и hostname:
Устанавливаем Java 8:
Создаём каталоги, которые нам понадобятся для фасовки пакетов:
Идём на сайт www.elastic.co/downloads/elasticsearch и скачиваем актуальную (2.2.0) версию:
Редактируем конфиг /etc/elasticsearch/elasticsearch.yml:
Раскомментируем и отредактируем стоки cluster.name и node.name:
(вместо «elk-server.ss.lu» и «mynodename» можете вставьте свои значения)
Должно получится так:
cluster.name: elk-server.ss.lu
node.name: mynodename
Добавляем в автозагрузку:
Скачиваем актуальную (2.2.0) версию Logstash www.elastic.co/downloads/logstash и устанавливаем:
Создаём INPUT-файл для «битсов»…
… и копируем туда код:
Это будет означать что logstash начнёт слушать порт 5044. Данный порт является по умолчанию для этой версии и будет прописан по умолчанию в битсах. Можете задать любой другой.
… и копируем туда код для связи с elasticsearch:
Проверяем конфиг на ошибки, запускаем, и вносим в автозапуск:
Пример успешной работы:
Скачиваем и устанавливаем публичный ключ:
Обновляем репозиторий и устанавливаем:
Нас просят создать первый индекс, но мы пока оставляем всё как есть и переходим к настройке клиентов.
Ставим на клиенты. Для начала, на сервер скачаем и поставим несколько готовых дашбордов Kibana с индексами Beats:
И видим что были добавлены дашборды Kibana с индексами Beats:
Получение данных об инфраструктуре сервера.
Передаёт информацию о работе процессора, использованию памяти. Для каждого процесса отображается информации о родители, pid, состояние и т.д. Также Topbeat позволяет просматривать информацию о файловой системе — состояние дисков, объём свободного пространства и т.д.
Установка (на клиенте):
На сервер нужно добавить шаблоны индексов Topbeat чтобы Elasticsearch стал правильно анализировать информацию на входе:
При успешной загрузки мы должны увидеть:
Редактируем конфиг (на клиенте):
В блоке output нужно за комментировать обращение к elasticsearch, т.к мы будем использоватеть logstash:
Раскомментируем блок с Logstash, укажем его IP-адресс и порт:
Важно: не используйте табуляцию для передвижения курсора в конфиге! Только пробелы. Иначе получите ошибку:
Если сервер Logstash находится во внешней сети, то на фаерволле удалённого сервера нужно настроить форвардиг порта, в данном случаем 5044 (tcp/udp).
Дополнительные опции логирования хорошо описаны в конфигах.
Открываем интерфейс Kibana и наблюдаем поступающую информацию:
Транслирует на сервер информацию из динамических файлов, которые мы будем указывать:
Добавим индексы на сервере (по аналогии с как мы настраивали Topbeat. Т.е. если на сервере шаблон отсутствует — мы его создаём):
Указываем то, что нужно нам на данном клиенте, например:
Помните про отсутствие табуляции в коде!
Мы также будем использовать logstash для обработки индексов:
Смотрим информацию от Filebeat:
Очень полезный инструмент. Анализирует трафик между серверами. Моментально выявляет ошибки. Анализирует протоколы DNS, HTTP, MySQL, PostgreSQL, КЗС, Memcache и другие.
Настраивается по той же аналогии что и Topbeat/Filebeat:
Редактируем кофиг (комментируем Elasticsearch и настраиваем Logstash)
output:
Идём на сервер и добавляем индекс для Packetbeat:
Скачиваем www.elastic.co/downloads/beats/winlogbeat. Распаковываем в C:\ и переименовываем в Winlogbeat. Запускаем PowerShell от админа и устанавливаем сервис:
Если мы видим сообщение о том что скрипты отключены в системе по умолчанию (а так оно и будет), то мы просто создаём политику для Winlogbeat:
Перед стартом сервиса правим в конфиге — C:\Winlogbeat\winlogbeat.yml.
В блоку event_logs перечислены основные журналы системы, которые нужно транспортировать на Logstash:
В event_logs можно добавить и другие журналы, список которых можно посмотреть так:
Если система выше Vista, то можно указать каналы:
Далее нам нужно загрузить на сервер индексы для winlogbeat как мы это делали для topbeat, filebeat, packetbeat. Это можно сделать удалённо:
Есть есть проблемы такого метода, то можно сделать следующее:
Создаём на сервере файл индекса winlogbeat.template.json
sudo vi
/ELK/releases/beats/winlogbeat/winlogbeat.template.json. На клиенте Windows открываем файл C:\winlogbeat\winlogbeat.template.json и копируем его содержимое в файл
Далее (на сервере) загружаем этот индекс на elasticsearch, для того чтобы он смог верно проанализировать информацию и предоставить её привычном формате:
Переходим в каталог где у нас лежит созданный файл winlogbeat.template.json.
На выходе должно быть:
<"acknowledged":true>
Идём на клиент и запускаем сервис winlogbeat. После это начинаем мониторить данные через Kibana, определяя представление по загруженным индексам:
Удаление всех индексов:
Вместо * можно указать неугодный индекс, например:
Для удаление старых логов не обходимо установить «питоновский» модуль:
Если pip не установлен, то устанавливаем:
Посмотерть статус работы Elasticsearch:
Этого достаточно чтобы запустить полноценный лог-сервер, раскидать на клиенты транспортёры и понять принципы.
Дополнительные настройки (оптимизация, настройки geoip и т.д.) описаны в официальной документации и конфигах.
Что такое ELK?
Elasticsearch
Logstash
Logstash – это утилита для управления событиями и логами. Имеет богатый функционал для их получения, парсинга и перенаправления\хранения.
Kibana
Kibana – это веб-приложение для визуализации и поиска логов и прочих данных имеющих отметку времени.
Установка Ubuntu 14.04
Установка JAVA 7
Так как два из трех используемых продуктов написаны на JAVA нам придется его установить. Устанавливать будем Oracle Java 7, так как Elasticsearch рекомендует устанавливать именно его.
Добавляем Oracle Java PPA в apt:
И устанавливаем последнюю стабильную версию Oracle Java 7:
Проверить версию Java можно набрав команду
Установка Elasticsearch
Хотя документация по Logstash рекомендует использовать Elasticsearch версии 1.1.1, он прекрасно работает и с последней стабильной версией 1.3.1. Именно ее мы и установим.
Добавляем публичный GPG ключ в apt:
Создаем source list apt:
И устанавливаем Elasticsearch 1.3.1:
Базовая конфигурация Elasticsearch очень простая, нам нужно указать в файле конфигурации всего два параметра – имя кластера и имя ноды.
Открываем elasticsearch.yml:
И раcкомментируем строки “cluster.name: elasticsearch” и “node.name: «Franz Kafka»”. Вместо значений по умолчанию можно указать свои.
Создаем скрипты автозапуска elasticsearch:
Перед стартом сервера я рекомендую установить еще два плагина к elasticsearch – head и paramedic. Первый позволяет управлять сервером поиска и индексами документов, второй следит за “здоровьем” пациента, выводя графики с различной полезной информацией.
Плагины к elasticsearch устанавливаются с помощью команды plugin прямо из github:
Доступ к результатам работы плагинов можно получить через url вида http://elasticsearch.server.name:9200/_plugin/head/ или http://elasticsearch.server.name:9200/_plugin/paramedic/
После чего можно запускать сам сервер:
Установка Kibana
Так как Kibana это веб-приложение, перед его установкой нужно установить веб-сервер. Я воспользовался простейшим nginx.
Создаем папку www для будущего приложения:
Даем nginx права на папку:
Скачиваем последний архив с файлами Kibana (на настоящий момент это kibana-3.1.0.tar.gz):
И копируем его содержимое в папку /var/www:
Скачиваем файл конфигурации для работы Kibana под nginx:
Открываем его в редакторе nano и указываем в какой папке лежат файлы Kibana:
Заменяем строку
root /usr/share/kibana3;
на строку
root /var/www;
Копируем данный файл как файл по умолчанию для nginx:
И перезапускаем nginx:
Теперь если перейти по адресу http://elasticsearch.server.name/ мы увидим стартовый дашборд Kibana. Если вы не планируете создавать других дашбордов, то можно сразу поставить по умолчанию дашборд Logstash.
Для этого нужно заменить файл дашборда по умолчанию на файл дашборда Logstash:
Основные настройки Kibana находятся в файле config.js по адресу /var/www/config.js, однако “из коробки” все работает замечательно.
Установка Logstash
Добавляем source list Logstash в apt:
И устанавливаем Logstash:
Logstash установлен, однако конфигурации у него нет. Конфигурационный файл Logstash состоит из 3х частей – input, filter и output. В первой определяется источник событий или логов, во второй с ними производятся необходимые манипуляции, и в третей части описывается куда обработанные данные нужно подавать. Подробно все части описаны в документации http://logstash.net/docs/1.4.2/ и есть некоторые примеры.
Для текущей задачи, мною была написана следующая простая конфигурация:
Создадим файл в папке конфигураций Logstash
И поместим туда следующую конфигурацию
Разберем по порядку:
В разделе input
type => “eventlog” говорит Logstash что на входе будут данные типа eventlog (известный формат полей для Logstash)
port => 3515 – номер потра
format => ‘json’ – говорит Logstash о том, что данные придут “обернутые” в JSON
Никаких манипуляций с логами я не совершаю, потому раздел filter у меня пустой. Хотя если Вам будет необходимо, к примеру, привести дату к нужному формату, или убрать из лога одно или несколько полей, то в данном разделе можно эти манипуляции описать.
В разделе output
elasticsearch <> – оправляет данные в elasticsearch
cluster => “elasticsearch” – указывает на имя кластера, что мы указывали при конфигурировании Elasticsearch
node_name => “Franz Kafka” – указывает на имя ноды.
Сохраняем файл и запускаем Logstash
Можно проверить что порт tcp 3515 слушается командой:
Установка nxlog
Идем на сайт nxlog ( http://nxlog.org/download) и скачиваем саму свежую версию для Windows.
Устанавливаем на нужной Windows машине данный клиент. Настройки он хранит в файле nxlog.conf по адресу по умолчанию “c:\Program Files (x86)\nxlog\conf\” (для 32-битной версии “c:\Program Files\nxlog\conf\”).
Для решения данной задачи я написал конфигурационный файл следующего содержания:
В разделе Output указывается модуль om_tcp для отправки данных по протоколу tcp, указывается хост и порт подключения.
Раздел Route служит для указания порядка выполнения действий, так как клиент nxlog умеет читать из множества источников и отсылать во множество приемников. Все это можно подчерпнуть из документации к продукту.
Настроив конфигурационный файл не забудьте его сохранить и можно запускать клиент через оснастку Службы (Services) или через командную строку:
Использование
Открыв в браузере Kibana (и перейдя на дашборд Logstash, если он у Вас не по умолчанию) мы увидим после всего проделанного следующую картину.
Центральный график на дашборде отражает количество записей в единицу времени. Сверху находится строка запроса и панель управления дашбордом. В нижней части таблица с данными.
Обратив свое внимание на таблицу данных мы увидим что данные показаны в “сыром” виде, однако слева от таблицы есть список полей. Щелкнув последовательно по чекбоксам с полями EventID, EventTime, EventType, Hostname, Sevirity, Message, Channel, мы получим уже более читабельный вид таблицы:
Просмотрев логи я вижу что в основном это логи из раздела Security, хочется понять какие приложения создают данные записи. Изучив список полей я нахожу поле ProcessName, если по нему кликнуть мышкой, то откроется интересное меню микроанализа по полю в котором будет перечислен TOP10 по количеству записей от процесса с их именами.
Если кликнуть по символу лупы рядом с именем процесса, то создастся фильтр по этому имени.
А данные в таблице отобразятся в соответствии с фильтрами.
Кликнув в таблице по любой записи можно развернуть ее в детальный вид, где будет видно все поля записи. Например так:
Более подробно о возможностях Kibana + Logstash + Elasticsearch можно узнать из документации и вебинаров на сайте elasticsearch.org. Здесь я показал лишь малую толику того что может эта замечательная связка инструментов.
При подготовке статьи я пользовался следующими источниками:
Изучаем ELK. Часть II — Установка Kibana и Logstash
Вступительное слово
В предыдущей статье была описана процедура установки Elasticsearch и настройка кластера. В этой статье будет рассмотрена процедура установки Kibana и Logstash, а также их настройка для работы с кластером Elasticsearch.
План действий
Скачиваем и устанавливаем Kibana
Установка из Deb пакета
Импортируем PGP ключ:
Устанавливаем apt-transport-https пакет:
Перед установкой пакета необходимо добавить репозиторий Elastic:
Настраиваем Kibana для автоматического запуска при старте системы:
Так же возможен вариант установки из скаченного Deb пакет с помощью dpkg
Установка из RPM пакета
Импортируем PGP ключ
В директории /etc/yum.repos.d/ создаем файл репозитория kibana.repo для CentOS или Red Hat. Для дистрибутива OpenSUSE в директории /etc/zypp/repos.d/ :
Устанавливаем Kibana c помощью пакетного менеджера в зависимости от операционной системы, yum или dnf для CentOS, Red Hat, Fedora или zypper для OpenSUSE:
Настраиваем Kibana для автоматического запуска при старте системы:
Так же возможен вариант установки из скаченного RPM пакет с помощью rpm
Установка из архива tar.gz
Скачиваем архив c Kibana:
Извлекаем данные и переходим в директорию с Kibana:
Для запуска Kibana можно создать отдельного пользователя предоставив все необходимые права к каталогу с Kibana.
Настраиваем Kibana для работы с кластером Elasticsearch
Определяем адрес и порт, на которых будет работать Kibana (по умолчанию localhost:5601 ):
Указываем узлы кластера Elasticsearch:
В случае недоступности узла, с которым Kibana установила соединение, произойдет переключение на другой узел кластера, указанный в конфигурационном файле.
Указываем, где Kibana будет хранить свои логи (по умолчанию stdout ):
Настраиваем частоту опроса Elasticsearch для получения обновлённого списка узлов кластера:
Определяем, запрашивать ли обновленный список узлов кластера Elasticsearch в случае сбоя соединения с кластером:
В работе опции elasticsearch.sniffInterval обнаружился «баг», при работе с Elasticsearch. После запроса обновления может возникать ошибка:
«statusCode»:401,»error»:»Unauthorized»,»message»:»missing authentication credentials for REST request: security_exception.
Ссылка на BugFix. Исправление будет в версии 7.11.2
На выходе получаем конфигурационный файл:
Запускаем службу kibana :
Для установки из архива используем:
В браузере набираем IP адрес и порт (в примере выше это http://10.0.3.1:5601 ), который указывали в конфигурации Kibana. В результате должна открыться приветственная страница.
Приветственная страница Kibana
Настраиваем балансировку нагрузки между Kibana и Elasticsearch
Установка и настройка Elasticsearch
Устанавливаем Elasticseach на узел с Kibana. Как это сделать описано в предыдущей статье.
ingest роль позволяет построить конвейер дополнительной обработки данных до их индексирования. Выделения отдельных узлов с этой ролью снижает нагрузку на другие узлы. Узел с ролью master и/или data не имеют эту роль по умолчанию.
Указываем имя Elasticsearch кластера:
Указываем, что адреса узлов кластера нужно брать из файла:
Данный метод имеет преимущество над методом из предыдущей статьи ( discovery.seed_hosts ). Elasticsearch следит за изменением файла и применяет настройки автоматически без перезагрузки узла.
Настраиваем IP адрес и порт для приема запросов от Kibana ( network.host и http.port ) и для коммуникации с другими узлами кластера Elasticsearch (transport.host и transport.tcp.port ). По умолчанию параметр transport.host равен network.host :
Итоговый конфигурационный файл:
Запускаем Elasticsearch и проверяем, что узел присоединился к кластеру:
Настраиваем Kibana
В конфигурации Kibana указываем адрес Coordinating only узла:
Перезапускаем Kibana и проверяем, что служба запустилась, а UI Kibana открывается в браузере.
Настраиваем несколько экземпляров Kibana
Чтобы организовать работу нескольких экземпляров Kibana, размещаем их за балансировщиком нагрузки. Для каждого экземпляра Kibana необходимо:
Настроить уникальное имя:
server.name уникальное имя экземпляра. По умолчанию имя узла.
Для каждого экземпляра в рамках одного узла необходимо указать уникальные настройки:
logging.dest директория для хранения логов;
path.data директория для хранения данных;
pid.file файл для записи ID процесса;
server.port порт, который будет использовать данный экземпляр Kibana ;
Указать следующие параметры одинаковыми для каждого экземпляра:
xpack.security.encryptionKey произвольный ключ для шифрования сессии. Длина не менее 32 символов.
xpack.reporting.encryptionKey произвольный ключ для шифрования отчетов. Длина не менее 32 символов.
xpack.encryptedSavedObjects.encryptionKey ключ для шифрования данных до отправки их в Elasticsearch. Длина не менее 32 символов.
xpack.encryptedSavedObjects.keyRotation.decryptionOnlyKeys список ранее использованных ключей. Позволит расшифровать ранее сохраненные данные.
Настройки безопасности( xpack ) ELK будут рассмотрены в отдельной статье.
Скачиваем и устанавливаем Logstash
Установка из Deb пакета
Импортируем GPG ключ:
Устанавливаем apt-transport-https пакет:
Добавляем репозиторий Elastic:
Настраиваем Logstash для автоматического запуска при старте системы:
Установка из RPM пакета
Импортируем PGP ключ
Настраиваем Logstash для автоматического запуска при старте системы:
Установка из архива
Скачиваем архив с Logstash:
Извлекаем данные и переходим в директорию с Logstash:
Настраиваем Logstash для чтения данных из файла
Logstash имеет два типа файлов конфигурации. Первый тип описывает запуск и работу Logstash ( settings files ).
Не забудьте предоставить доступ на запись к данному каталогу пользователю, который осуществляет запуск Logstash.
В секции filter с помощью плагина grok и встроенных шаблонов извлекаем из каждой записи ( message ) журнала логов необходимую информацию:
Шаблон имеет формат %
С помощью параметра match указываем, из какого поля ( message ) извлекаем данные по описанным шаблонам. Параметр overwrite сообщает, что оригинальное поле message необходимо перезаписать в соответствии с теми данными, которые мы получили с помощью шаблона %
Что такое индекс, шард и репликация шардов рассмотрю в отдельной статье.
К названию индекса добавлен шаблон % <+YYYY.MM>, описывающий год и месяц. Данный шаблон позволит создавать новый индекс каждый месяц.
Для установки из архива:
Смотрим полученные данные в Kibana
Создание шаблона индекса
Выбор Time field
После создания шаблона индексов Kibana покажет информацию об имеющихся полях, типе данных и возможности делать агрегацию по этим полям.
Kibana Discover
В правой части экрана можно выбрать интервал в рамках которого отображать данные.
Выбор временного интервала
Шаблон индекса и доступные поля
Фильтрация данных с помощью KQL
Типы визуализации Kibana
Чтобы посмотреть данные в Elasticsearch необходимо сделать GET запрос /имя_индекса/_search к любому узлу кластера. Добавление параметра pretty позволяет отобразить данные в читабельном виде. По умолчанию вывод состоит из 10 записей, чтобы увеличить это количество необходимо использовать параметр size :
Заключение
В рамках этой статьи была рассмотрена процедура установки и настройки Kibana и Logstash, настройка балансировки трафика между Kibana и Elasticsearch и работа нескольких экземпляров Kibana. Собрали первые данные с помощью Logstash, посмотрели на данные с помощью Kibana Discover и построили первую визуализацию.
Теме безопасности будет посвящена следующая статья данного цикла.