Elasticsearch
Распределенная система поиска и аналитики. Он обладает характеристиками высокой масштабируемости, высокой надежности и простоты управления. Построенный на Apache Lucene, он может хранить, искать и анализировать большие объемы данных почти в режиме реального времени.
Logstash
сборщик журналов. Собирайте данные из различных источников, фильтруйте, анализируйте, форматируйте и сохраняйте данные в Elasticsearch.
Kibana
Платформа анализа и визуализации данных. Используйте с Elasticsearch для поиска, анализа и отображения данных в нем.
Filebeat
Облегченный сборщик данных файла журнала с открытым исходным кодом, Filebeat считывает содержимое файла, отправляет его в Logstash для анализа, а затем входит в Elasticsearch или отправляет его непосредственно в Elasticsearch для централизованного хранения и анализа.
Введение в архитектуру
Основываясь на использовании ELK, Logstash используется в качестве сборщика журналов, Elasticsearch используется для хранения журналов, а Kibana используется в качестве представления журнала.Архитектуры примерно следующие.
Архитектура первая
Причина нескольких Logstash на рисунке заключается в том, что, учитывая, что программа представляет собой распределенную архитектуру, на каждой машине необходимо развернуть Logstash.Если это действительно один сервер, разверните Logstash.
Как упоминалось ранее, Logstash анализирует, фильтрует и форматирует данные.Эти операции потребляют относительно большое количество ресурсов процессора и памяти сервера.Поэтому такая архитектура будет влиять на производительность каждого сервера.Не рекомендуется.
Две архитектуры
По сравнению с архитектурой 1 добавлены MQ и Logstash.Вывод и ввод Logstash поддерживают общие очереди сообщений, такие как Kafka, Redis, RabbitMQ и т. д. Logstash до MQ используется только для сбора и передачи журналов без разбора и фильтрации. добавляются первыми.Очередь постоянно анализируется и фильтруется Logstash за MQ, так что каждый сервер не потребляет много ресурсов.
Архитектура три
Эта архитектура упрощена на основе второй архитектуры и фактически может быть принята в процессе использования.Журнал напрямую входит в MQ, и Logstash может использовать данные MQ.
Архитектура четыре
Эта архитектура добавляет Beats в источники данных журналов и Logstash (или Elasticsearch). Beats интегрирует различные сборщики данных узкого назначения. Каждый сборщик основан на libbeat, общей библиотеке для пересылки данных. Системный процессор и память, занимаемые beat, практически ничтожны. Платформа libbeat также предоставляет механизм обнаружения. автоматически уменьшается, когда нагрузка на подчиненный сервер высока или сеть перегружена. В следующем примере мы используем Filebeat для сбора журналов файлов, а другие биты можно игнорировать.
По сравнению с архитектурой 2 архитектура 4 является более идеальной архитектурой, если Logstash, развернутый на каждом сервере, заменен соответствующим Beats.
В любом случае потребление ресурсов Logstash для разбора и фильтрации журналов все еще относительно велико, поэтому при необходимости развертывание Logstash может быть распределенным, а развертывание Elasticsearch может использовать кластеры для усиления всей системы журналов.
развертывать
Перед развертыванием необходимо установить JDK, версию Java 8. Затем официально загрузите установочный пакет соответствующей операционной системы.Если вы используете Docker для развертывания, вы можете напрямую использовать предоставленный образ.
После распаковки загружаемого пакета его можно запустить напрямую.
Logstash
bin/logstash -f logstash.conf # logstash.conf是需要自己创建的日志处理配置文件
Основной формат файла конфигурации следующий:
# 输入
input {
}
# 分析、过滤
filter {
}
# 输出
output {
}
Elasticsearch
bin/elasticsearch
Если пользователю root не разрешено запускаться при запуске, создайте нового пользователя:
-
Создать группу пользователей
groupadd elsearch
-
Создать пользователя
useradd elsearch -g elsearch -p elsearch
-
Переключитесь на пользователя root и измените разрешения пользователя elsearch в группе пользователей elsearch на папку elasticsearch (распакованный каталог elasticsearch).
chown -R elsearch:elsearch elasticsearch
-
Переключитесь на пользователя elsearch и перезапустите elasticsearch.
Kibana
bin/kibana
Filebeat
filebeat -e -c filebeat.yml
Ключевая конфигурация filebeat.yml, все журналы файлов .log в /var/log/ будут выводиться на порт 5044 Logstash
filebeat.prospectors:
- input_type: log
paths:
- /var/log/*.log
output.logstash:
hosts: ["localhost:5044"]
Пример логсташа:
Содержимое файла конфигурации:
input {
beats {
port => 5044
codec => "json"
}
}
filter{
if [logtype] {
mutate { replace => { type => "%{logtype}" }}
}else{
mutate { replace => { type => 'unknow' }}
}
date {
match => [ "createTime" , "yyyy-MM-dd HH:mm:ss" ]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-%{type}-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
Описание файла конфигурации:
Используйте Filebeat в качестве ввода Logstash (ввод и вывод могут быть разными способами, если вы мало знаете, вы можете сначала написать и прочитать официальную документацию), Logstash прослушивает порт 5044. В этом примере полученный лог отформатирован в json, если json содержит logtype, мы
тип установлен на logtype, если он не включен, установите на unknow, а затем поместите
createTime имеет формат времени гггг-мм-дд чч:мм:сс. Наконец вывод в elasticsearch, index
— это имя индекса elasticsearch, мы создаем разные индексы в соответствии с разными типами.