Оригинал: Curly Brackets MC (публичная учетная запись WeChat: huakuohao-mc). Сосредоточьтесь на базовом программировании JAVA и больших данных, сосредоточьтесь на обмене опытом и личном росте.
Некоторые вещи, когда мы смело делаем первый шаг, на самом деле выполнены на 50%. Очевидно, что изучение ELK — одна из таких вещей. Многие студенты, которые не знают ELK, когда бы они ни захотели учиться, не будут знать, с чего начать, из-за множества задействованных компонентов.
Большинство программистов начинают с приветствия, когда изучают новый язык. На самом деле, у ELK тоже есть свой «привет мир». Просто этот «привет мир» требует много компонентов и настроек.
В этой статье я расскажу вам о создании платформы поиска журналов в реальном времени. Журналы (моделирование), созданные бизнес-системой, постоянно собираются.Elasticsearch
, наконец прошелKibana
Сделайте отображение запроса.
Если какие-то детали, представленные в этой статье, сбивают вас с толку, просто расслабьтесь на некоторое время и попытайтесь сначала разобраться во всем, ведь вы только начинаете учиться.Java
В то же время, нет реального понимания каждой строчки кода в программе «hello world».
ELK этоElasticsearch
,Logstash
,Kibana
Аббревиатура для трех компонентов, которая первоначально называлась, теперь называется эластичным стеком, за исключениемElasticsearch
,Kibana
,Logstash
также добавленоBeats
, в основном используется для сбора данных.
Небольшое объяснение:
Эта статья основана наcentos7.5
, эластичный стек основан на последней версии 7.6.
В этой статье речь идет только о построении и настройке одной точки, а настройка и настройка кластера не входит в рамки этой статьи.
Формат журналов, генерируемых бизнес-системой, предполагаемой в этой статье, следующий:
|07801302020021914554950568859|127.0.0.1|2020-02-19 14:55:49[INFO][Thread-4][com.hello.frank.test.TestUser]-user msg jack
Elasticsearch
представлять
Elasticsearch
Это механизм обработки данных, обеспечивающий распределенное хранение, поиск и анализ данных. Существует множество сценариев применения, но чаще всего используется для хранения информации журнала для ежедневной эксплуатации, обслуживания и бизнес-анализа.
Установить
#下载
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-linux-x86_64.tar.gz
#解压
tar -xzvf elasticsearch-7.6.1-linux-x86_64.tar.gz
cd elasticsearch-7.6.1
#启动
./bin/elasticsearch
Elasticsearch
Файл конфигурацииconfig/elasticsearch.yml
. по умолчанию,Elasticsearch
Разрешен только локальный доступ, поэтому нам нужно просто изменить файл конфигурации наnetwork.host
Удалите предыдущий комментарий и измените значение на0.0.0.0
, указав, что все машины доступны, а затем перезапустите его, и все будет в порядке.
После запуска можно пройтиcurl http://hostIp:9200
Проведите тест, если вы видите следующую информацию, это доказывает, чтоElasticsearch
Установка завершена.
{
"name" : "localhost",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "1ew0o-aXSpq8Tfv0zCWE3Q",
"version" : {
"number" : "7.6.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
"build_date" : "2020-02-06T00:09:00.449973Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Уведомление:
Elasticsearch
При запуске, если сообщается об ошибке «максимальное количество областей виртуальной памяти vm.maxmapcount [65530] слишком мало», вам необходимо выполнить$ sudo sysctl -w vm.max_map_count=262144
, чтобы изменить максимальное количество виртуальной памяти.
FileBeat
представлять
Платформа ELK предлагает многоBeat
Компоненты, целью которых является сбор различных источников данных, таких как файлы журналов.FileBeat
, а также для информации о работе системыMetricBeat
, а для сетевых пакетовPacketBeat
.
вот я беруFileBeat
Установка и использование приложения используются в качестве примера для демонстрации того, как собирать информацию журнала приложения.
Установить
#下载
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.1-linux-x86_64.tar.gz
#解压
tar xzvf filebeat-7.6.1-linux-x86_64.tar.gz
настроить
использоватьFilebeat
Для сбора журналов можно просто изменить файл конфигурации.Filebeat
Файл конфигурацииfilebeat.yml
. Все настройки выполняются в этом файле.
входная конфигурация.
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
Приведенная выше простая конфигурация указывает, что коллекция/var/log
все ниже.log
документ.同时还可以这样配置/var/log/*/*.log
, Хвататьlog
все подкаталоги.log
документ. Будьте осторожны, чтобы не схватитьlog
в каталоге.log
документ.
выходная конфигурация
·Filebeat
Поддерживает множество конфигураций вывода, наиболее распространенной является выводKafka
а такжеlogstash
, конечно, вы также можете напрямую войти вElasticsearch
.
вывод вElasticsearch
Конфигурация
output.elasticsearch:
hosts: ["ES-host:9200"]
вывод вLogstash
Конфигурация.
output.logstash:
hosts: ["logstash-host:5044"]
Logstash
Журналы можно фильтровать и очищать.Если объем журнала слишком велик,Logstash
Скорее всего, спрос не будет удовлетворен.Filebeat
Поддержка одновременного вывода на несколькоLogstash
.
конфигурация балансировки нагрузкиКонфигурация для поддержки балансировки нагрузки также очень проста, конфигурация выглядит следующим образом.
output.logstash:
hosts: ["localhost:5044", "localhost:5045"]
loadbalance: true
По сравнению с одноузловой конфигурацией только еще одинloadbalance
атрибут и добавьте новый узел вhosts
Массив в порядке.
Уведомление
loadbalance
только собственностьRedis
,Logstash
,а такжеElasticsearch
ворваться,Kafka
Вы можете добиться балансировки нагрузки самостоятельно, безFilebeat
волноваться.
такжеFilebeat
Также поддерживает режимы работы с несколькими потоками, по умолчаниюwork
равно 1, если вы хотите увеличитьworker
количество, только увеличиватьwork
Конфигурация свойств в порядке.
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
output.logstash:
hosts: ["localhost:5044", "localhost:5045"]
loadbalance: true
worker: 2
Приведенная выше конфигурация указывает на то, что всего работает 4 воркера (хост * работа).
запускать
пройти через./filebeat -e -c filebeat.yml -d "publish"
запускатьFilebeat
.
Если описанное выше успешно запустило ES, и вашFileBeat
Конфигурация снова выводится наElasticsearch
. После запуска ваши журналы будут постоянно храниться вElasticsearch
.
Filebeat
черезFileBeat
в каталоге установкиdata
Каталог управляет информацией файла журнала.Если вы хотите повторно собирать один и тот же журнал на этапе тестирования, вам необходимоdata
Информация в каталоге очищается, а затем перезапускается.
Logstash
представлять
Logstash
Это мощный инструмент обработки данных, который может помочь нам обрабатывать данные, отправленные из источника данных. При этом обработанная информация отправляется вElasticsearch
. В ELK актеры играют роль связующего звена между предыдущим и последующим.
Установить
#下载
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-7.6.1.tar.gz
#解压
tar -xzvf logstash-7.6.1.tar.gz
настроить
Logstash
при условииinput
Плагины для чтения данных из различных источников данных. Настройте получение здесьFileBeat
Отправьте данные, а затем просто отправьте данные в ES для настройки хранилища.
доLogstash
изconfig
каталог, создайте файл конфигурации, предполагая, что он называетсяblog-pipeline.conf
, содержимое файла такое.
input {
beats{
port => "5044"
}
}
output{
#stdout { codec => rubydebug }
elasticsearch{
hosts => [ "localhost" ]
index => "blog-demo"
}
}
Конфигурация очень проста, разделена на две части: вход и выход. входная частьport
Номер порта указан вышеFilebeat
номер порта. Раздел конфигурации вывода указывает на вывод в ES.
Закомментированная строка в конфигурационном файле удобна для отладки.Откройте эту строку, чтобы вывести вывод на консоль, что нам удобно для отладки, чтобы данные, сгенерированные на этапе отладки, не загрязняли производственные данные в ES.
Elasticsearch
Понятие индекса можно просто понимать как понятие таблицы в реляционной базе данных. Если элемент индекса не настроен, значением по умолчанию является logstash.
запускать
пройти через./bin/logstash -f ./config/blog-pipeline.conf
запускатьLogstash
Если все в норме, можно начинатьLogstash
Консоль видит собранные логи (не забудьте использовать при отладкеstdout { codec => rubydebug }
).
Grok filter
Если вы просто храните информацию журнала в ES как есть, то нет необходимости использоватьLogstash
. потому чтоFileBeat
Он также может хорошо выполнять связанную работу. Если вы хотите выполнить некоторую обработку информации журнала, тоGrok
изfilter
плагины, надо разбираться.
grok — это удобная для всех библиотека регулярных выражений, которая инкапсулирует множество часто используемых регулярных выражений, и, конечно же, мы можем их настроить. Какие закономерности предопределены, мы можем перейти кздесьСмотрите, если вам нужно отладить grok, вы можете использовать этоURL-адрес, необходимо усилить URL-адрес отладки.
Далее мы выполним регулярное сопоставление с образцами журналов, упомянутыми в начале статьи. Конечно, этот фильтр предназначен только для демонстрации того, как используется grok, и не отфильтровывает какую-либо часть информации в журнале.В реальном использовании вы можете извлечь интересующую информацию из журнала для хранения.
Плагин Grok очень прост в использовании, просто нужноLogstash
Можно добавить следующую информацию в файл конфигурации.
filter {
grok {
match => { "message" => "\|%{GREEDYDATA:traceid}\|%{IPV4:serverip}\|%{GREEDYDATA:logdate}\[%{LOGLEVEL:loglevel}\]\[%{GREEDYDATA:thread}\]\[%{GREEDYDATA:classname}\]-%{GREEDYDATA:logmessage}" }
overwrite => [ "message" ]
remove_field => [ "host","ecs",
"agent","version",
"log", "input", "tags",
"@version","message" ]
}
}
Logstash
Полная конфигурация выглядит следующим образом
input {
beats{
port => "5044"
}
}
filter {
grok {
match => { "message" => "\|%{GREEDYDATA:traceid}\|%{IPV4:serverip}\|%{GREEDYDATA:logdate}\[%{LOGLEVEL:loglevel}\]\[%{GREEDYDATA:thread}\]\[%{GREEDYDATA:classname}\]-%{GREEDYDATA:logmessage}" }
overwrite => [ "message" ]
remove_field => [ "host","ecs",
"agent","version",
"log", "input", "tags",
"@version","message" ]
}
}
output{
#stdout { codec => rubydebug }
elasticsearch{
hosts => [ "es-host" ]
index => "blog-demo"
}
}
запускать
начать сноваLogstash
. если вы используетеstdout { codec => rubydebug }
, то вывод на экран следующий.
Kibana
представлять
Kibana
Это платформа с открытым исходным кодом для анализа и отображения данных. довольно частоElasticSearch
С использованием. Проще говоря, дляElasticSearch
Обеспечьте внешний интерфейс поиска и анализа данных, мощные функции, богатые различные стили диаграмм.
Установить
#下载
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-7.6.1-linux-x86_64.tar.gz
#解压
tar xzvf kibana-7.6.1-linux-x86_64.tar.gz
#启动
cd kibana-7.6.1-linux-x86_64/
./bin/kibana
настроить
Kibana
Файл конфигурации,config/kibana.yml
. Номер порта по умолчанию5601
. запускатьKibana
нужно сказать передKibana
К какой ЭП подключаться. Измените следующую конфигурацию в файле конфигурацииelasticsearch.hosts:["http://ES-host:9200"]
Только что
Теперь вы можете получить доступ через браузерKibana
также, если вы хотите запросить только что депонированныеElasticsearch
информация журнала, также должна быть вKibana
Страница устроена следующим образом.
существуетKibana
находится на левой боковой панелиmanagement
, после нажатия найтиkibana
управление индексами, добавитьblog-demo
Индекс (имя индекса настроено в Logstash). После добавления можно искать. Ниже прикладываю скриншот, все это чувствуют, ключевые моменты отмечены стрелочками.
конец
Это просто статья, которая бросает кирпичи в сцену. Каждый компонент в Elastic Stack имеет большой потенциал. Если у вас есть энергия, рекомендуется провести углубленное исследование, и вы получите много.
Рекомендуемое чтение
Научит вас, как изучить Java NIO
В этом может заключаться суть взаимного разрыва между продуктом и разработкой.
Java-программисты должны прочитать основной список книг — базовая версия
·END·
Java · Большие данные · Личностный рост
Идентификатор WeChat: huakuohao-mc