Научите вас создавать набор операций поиска и обслуживания журналов ELK.

Elasticsearch

Оригинал: 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