ELK+Filebeat+Kafka+ZooKeeper создает платформу для массивного анализа журналов

Kibana Эксплуатация и техническое обслуживание Elasticsearch Logstash Apache Log4j

Что делать в качестве платформы для анализа логов?


С ростом объемов бизнеса бизнес-сервер будет генерировать сотни миллионов журналов каждый день, а один файл журнала может достигать нескольких ГБ.В настоящее время мы обнаружили, что с использованием собственных инструментов Linux анализ awk cat grep становится все более и более бессильный, да еще и на сервере Журнал, как и лог ошибок программы, распределены по разным серверам, и сверяться с ним хлопотно.


Болевые точки, которые необходимо решить:

1. Большое количество разнотипных бревен стало бременем эксплуатационного и обслуживающего персонала, управлять которым неудобно;


2. Единый файл журнала огромен и не может быть проанализирован обычными текстовыми инструментами, что затрудняет его извлечение;


3. Журналы распределены по нескольким разным серверам.Если бизнес терпит неудачу, вам необходимо просмотреть журналы один за другим.


Для решения вышеуказанных проблем:


Далее мы шаг за шагом создадим эту платформу для анализа журналов.Схема архитектуры выглядит следующим образом:

wKioL1f93pWDzh14AAFeY_uvtXc440.png

Интерпретация архитектуры: (Вся архитектура разделена на 5 слоев слева направо)


Первый уровень, уровень сбора данных

Крайний слева — кластер бизнес-серверов, на котором установлен filebeat для сбора логов, а собранные логи отправляются в два сервиса logstash соответственно.


Второй уровень, уровень обработки данных, уровень кэширования данных

Служба logstash форматирует полученные журналы и выгружает их в локальный кластер kafka broker+zookeeper.


Третий уровень, уровень пересылки данных

Этот отдельный узел Logstash будет извлекать данные из кластера брокера kafka в режиме реального времени и пересылать их в ES DataNode.


Четвертый уровень, постоянное хранилище данных

ES DataNode запишет полученные данные на диск и построит индексную базу данных.


Пятый слой, поиск данных, отображение данных

ES Master + Kibana в основном координирует кластеры ES, обрабатывает запросы на получение данных и отображение данных.


Чтобы сэкономить ценные ресурсы сервера, автор объединил несколько разделяемых сервисов на одном хосте. Вы можете свободно разделять и расширять архитектуру в соответствии с реальной бизнес-средой.


Начните работу!


Среда операционной системы: CentOS версии 6.5


Каждое назначение роли сервера:

IP Роль владеющий кластером
10.10.1.2 Бизнес-сервер+filebeat Кластер бизнес-серверов
10.10.1.30 Logstash+Kafka+ZooKeeper


Кластер Kafka Broker

10.10.1.31 Logstash+Kafka+ZooKeeper
10.10.1.32 Kafka+ZooKeeper
10.10.1.50 Logstash пересылка данных
10.10.1.60 ES DataNode



Кластер эластичного поиска

10.10.1.90 ES DataNode
10.10.1.244 ES Master+Kibana


Версия пакета:


jdk-8u101-linux-x64.rpm

logstash-2.3.2.tar.gz

filebeat-1.2.3-x86_64.rpm

kafka_2.11-0.10.0.1.tgz

zookeeper-3.4.9.tar.gz

elasticsearch-2.3.4.rpm 

kibana-4.5.3-linux-x64.tar.gz


1. Установите и разверните кластер Elasticsearch.


Разметка узлов ES Master 10.10.1.244


1. Установите jdk1.8, elasticsearch-2.3.4


Адрес загрузки jdk с официального сайта Oracle: http://www.oracle.com/technetwork/java/javase/downloads/index.html

официальный сайт elasticsearch: https://www.elastic.co/

# 安装命令
yum install jdk-8u101-linux-x64.rpm elasticsearch-2.3.4.rpm -y
 
# ES 会被默认安装在 /usr/share/elasticsearch/


2. Настройка системы, настройка JVM

# 配置系统最大打开文件描述符数
vim /etc/sysctl.conf
fs.file-max=65535
 
# 配置进程最大打开文件描述符
vim /etc/security/limits.conf
# End of file
* soft nofile 65535
* hard nofile 65535
 
# 配置 JVM内存
vim /etc/sysconfig/elasticsearch
ES_HEAP_SIZE=4g
# 这台机器的可用内存为8G


3. Запишите файл конфигурации узла ES Master.

# /etc/elasticsearch/elasticsearch.yml
 
# ---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
 
cluster.name: bigdata
 
# ------------------------------------ Node ------------------------------------
node.name: server1
node.master: true
node.data: false
 
# ----------------------------------- Index ------------------------------------
index.number_of_shards: 5
index.number_of_replicas: 0
index.refresh_interval: 120s
 
# ----------------------------------- Paths ------------------------------------
path.data: /home/elk/data
 
path.logs: /var/log/elasticsearch/elasticsearch.log
 
# ----------------------------------- Memory -----------------------------------
bootstrap.mlockall: true
indices.fielddata.cache.size: 50mb
 
#------------------------------------ Network And HTTP --------------------------
network.host: 0.0.0.0
http.port: 9200
 
# ------------------------------------ Translog ----------------------------------
index.translog.flush_threshold_ops: 50000
 
# --------------------------------- Discovery ------------------------------------
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.timeout: 200s
discovery.zen.fd.ping_timeout: 200s
discovery.zen.fd.ping.interval: 30s
discovery.zen.fd.ping.retries: 6
discovery.zen.ping.unicast.hosts: ["10.10.1.60:9300","10.10.1.90:9300","10.10.1.244:9300",]
discovery.zen.ping.multicast.enabled: false
 
# --------------------------------- merge ------------------------------------------
indices.store.throttle.max_bytes_per_sec: 100mb


Примечание. Если пути, указанные двумя параметрами path.data и path.logs, не нужно создавать самостоятельно, вы также должны предоставить разрешения пользователю elasticsearch. (То же самое относится и к следующему ES DataNode)


4. Установите плагины с открытым исходным кодом head, kopf, bigdesk

Существует два метода установки:

1. Используйте плагин команд, который поставляется с ES

# head
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
# kopf
/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
# bigdesk
/usr/share/elasticsearch/bin/plugin install hlstudio/bigdesk

2. Загрузите исходный код плагина самостоятельно и установите его.


Плагины, которые мы установили с помощью команды plugin, на самом деле устанавливаются по этому пути: /usr/share/elasticsearch/plugins


Строка mobz/elasticsearch-head после команды установки плагина на самом деле является адресом на github.

Спереди добавлен официальный адрес сайта githubGitHub.com/Untouchable/Голодное тело…Вы можете скопировать его в браузер и открыть, чтобы найти репозиторий исходного кода плагина.


Теперь, когда я это знаю, если вы хотите найти плагины, вы можете пойти на github и поискать множество из них. Просто выберите один, а затем перейдите по следующему пути и установите его с помощью команды, которая поставляется с ES.


Если установка не удалась, загрузите исходный пакет плагина вручную. После распаковки сразу переместите весь каталог в путь установки плагина ES. 

Вот и все: /usr/share/elasticsearch/plugins/


Как получить доступ к установленному плагину?

http://ES_server_ip:port/_plugin/plugin_name

Example:

http://127.0.0.1:9200/_plugin/head/

http://127.0.0.1:9200/_plugin/kopf/


На данный момент мастер ES настроен.


Разметка узлов ES DataNode 10.10.1.60


Способы установки и настройки системы такие же, как и выше, плагины устанавливать не нужно, но файлы конфигурации другие.


написать файл конфигурации

# ---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
 
cluster.name: bigdata
 
# ------------------------------------ Node ------------------------------------
node.name: server2
node.master: false
node.data: true
 
# ----------------------------------- Index ------------------------------------
index.number_of_shards: 5
index.number_of_replicas: 0
index.refresh_interval: 120s
 
# ----------------------------------- Paths ------------------------------------
path.data: /home/elk/data,/disk2/elk/data2
 
path.logs: /var/log/elasticsearch/elasticsearch.log
 
# ----------------------------------- Memory -----------------------------------
bootstrap.mlockall: true
indices.fielddata.cache.size: 50mb
 
#------------------------------------ Network And HTTP --------------------------
network.host: 0.0.0.0
http.port: 9200
 
# ------------------------------------ Translog ----------------------------------
index.translog.flush_threshold_ops: 50000
 
# --------------------------------- Discovery ------------------------------------
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.timeout: 200s
discovery.zen.fd.ping_timeout: 200s
discovery.zen.fd.ping.interval: 30s
discovery.zen.fd.ping.retries: 6
discovery.zen.ping.unicast.hosts: ["10.10.1.244:9300",]
discovery.zen.ping.multicast.enabled: false
 
# --------------------------------- merge ------------------------------------------
indices.store.throttle.max_bytes_per_sec: 100mb


10.10.1.60 тоже готов.


Выложи еще ES DataNode 10.10.1.90


написать файл конфигурации

# ---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
 
cluster.name: bigdata
 
# ------------------------------------ Node ------------------------------------
node.name: server3
node.master: false
node.data: true
 
# ----------------------------------- Index ------------------------------------
index.number_of_shards: 5
index.number_of_replicas: 0
index.refresh_interval: 120s
 
# ----------------------------------- Paths ------------------------------------
path.data: /home/elk/single
 
path.logs: /var/log/elasticsearch/elasticsearch.log
 
# ----------------------------------- Memory -----------------------------------
bootstrap.mlockall: true
indices.fielddata.cache.size: 50mb
 
#------------------------------------ Network And HTTP --------------------------
network.host: 0.0.0.0
http.port: 9200
 
# ------------------------------------ Translog ----------------------------------
index.translog.flush_threshold_ops: 50000
 
# --------------------------------- Discovery ------------------------------------
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.timeout: 200s
discovery.zen.fd.ping_timeout: 200s
discovery.zen.fd.ping.interval: 30s
discovery.zen.fd.ping.retries: 6
discovery.zen.ping.unicast.hosts: ["10.10.1.244:9300",]
discovery.zen.ping.multicast.enabled: false
 
# --------------------------------- merge ------------------------------------------
indices.store.throttle.max_bytes_per_sec: 100mb


5. Теперь три узла ES готовы к запуску сервисов соответственно.

# 10.10.1.244
/etc/init.d/elasticsearch start
# 10.10.1.60
/etc/init.d/elasticsearch start
# 10.10.1.90
/etc/init.d/elasticsearch start


6. Получите доступ к головному плагину, чтобы просмотреть статус кластера.

wKiom1f-AxDRvIMHAABrDZjJzqo236.png

На данный момент кластер Elasticsearch готов.



2. Настройте кластер ZooKeeper на втором уровне архитектурной схемы.


Настройте узел 10.10.1.30


1. Установите и настройте zookeeper

официальный сайт зоопарка: http://zookeeper.apache.org/


# zookeeper 依赖 java,如果之前没安装过JDK,则需要安装.
rpm -ivh jdk-8u101-linux-x64.rpm
 
# 解压程序
tar xf zookeeper-3.4.9.tar.gz


написать файл конфигурации

# conf/zoo.cfg
 
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/u01/zookeeper/zookeeper-3.4.9/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
 
server.11=10.10.1.30:2888:3888
server.12=10.10.1.31:2888:3888
server.13=10.10.1.32:2888:3888
 
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
# autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
# autopurge.purgeInterval=1


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

Примечание. В кластере zookeeper файлы конфигурации каждого узла одинаковы. Таким образом, он напрямую синхронизируется без каких-либо изменений.

Друзья, не знакомые с zookeeper, могут обратиться сюда: http://tchuairen.blog.51cto.com/3848118/1859494

scp zoo.cfg 10.10.1.31:/usr/local/zookeeper-3.4.9/conf/
scp zoo.cfg 10.10.1.32:/usr/local/zookeeper-3.4.9/conf/


2. Создайте файл myid

# 10.10.1.30
echo 11 >/usr/local/zookeeper-3.4.9/data/myid
 
# 10.10.1.31
echo 12 >/usr/local/zookeeper-3.4.9/data/myid
 
# 10.10.1.32
echo 13 >/usr/local/zookeeper-3.4.9/data/myid


3. Запустите службу иПросмотр состояния узла

# 10.10.1.30
bin/zkServer.sh start
bin/zkServer.sh status
 
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
 
# 10.10.1.31
bin/zkServer.sh start
bin/zkServer.sh status
  
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
 
# 10.10.1.32
bin/zkServer.sh start 
bin/zkServer.sh status
 
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower


На этом настройка кластера zookeeper завершена.


3. Настройте кластер Kafka Broker, расположенный на втором уровне архитектурной схемы.


Официальный сайт Кафки: http://kafka.apache.org/

Друзья, не знакомые с Кафкой, могут обратиться к: http://tchuairen.blog.51cto.com/3848118/1855090.


Настройте узел 10.10.1.30

1. Установите и настройте кафку

# 解压程序
tar xf kafka_2.11-0.10.0.1.tgz


написать файл конфигурации

############################# Server Basics #############################
broker.id=1
 
############################# Socket Server Settings #############################
 
num.network.threads=3
 
# The number of threads doing disk I/O
num.io.threads=8
 
# The send buffer (SO_SNDBUF) used by the socket server
socket.send.buffer.bytes=102400
 
# The receive buffer (SO_RCVBUF) used by the socket server
socket.receive.buffer.bytes=102400
 
# The maximum size of a request that the socket server will accept (protection against OOM)
socket.request.max.bytes=104857600
 
############################# Log Basics #############################
 
log.dirs=/usr/local/kafka/kafka_2.11-0.10.0.1/data
 
num.partitions=6
 
num.recovery.threads.per.data.dir=1
 
############################# Log Flush Policy #############################
 
# The number of messages to accept before forcing a flush of data to disk
#log.flush.interval.messages=10000
 
# The maximum amount of time a message can sit in a log before we force a flush
#log.flush.interval.ms=1000
 
############################# Log Retention Policy #############################
 
log.retention.hours=60
 
log.segment.bytes=1073741824
 
log.retention.check.interval.ms=300000
 
############################# Zookeeper #############################
 
zookeeper.connect=10.10.1.30:2181,10.10.1.31:2181,10.10.1.32:2181
 
zookeeper.connection.timeout.ms=6000


Примечание. Файлы конфигурации двух других узлов в основном одинаковы, и необходимо изменить только один параметр — broker.id. Он используется для уникальной идентификации узлов, поэтому он не должен совпадать, иначе возникнут конфликты узлов.


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

scp server.properties 10.10.1.31:/usr/local/kafka/kafka_2.11-0.10.0.1/config/
scp server.properties 10.10.1.32:/usr/local/kafka/kafka_2.11-0.10.0.1/config/
 
# 修改 broker.id
# 10.10.1.31
broker.id=2
 
# 10.10.1.32
broker.id=3


2. Настройте разрешение имени хоста, соответствующее IP-адресу.

vim /etc/hosts
 
10.10.1.30 server1
10.10.1.31 server2
10.10.1.32 server3
 
# 记得同步到其他两台节点


3. Запустите службу

bin/kafka-server-start.sh config/server.properties
# 其他两台节点启动方式相同


Настройка кластера Kafka+ZooKeeper завершена


В-четвертых, настройте службу Logstash, расположенную на втором уровне архитектурной схемы.


Настройте узел 10.10.1.30


1. Установите и настройте logstash

# 解压程序
tar xf logstash-2.3.2.tar.gz


Настройте GeoLiteCity, который используется для отображения городов, доступ к которым осуществляется по IP.

Адрес официального сайта: http://dev.maxmind.com/geoip/legacy/geolite/

Адрес загрузки: http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz


распаковать

gunzip GeoLiteCity.dat.gz


написать файл конфигурации

input {
    beats {
    port => 5044
    codec => "json"
}
}
 
 
 
filter {
    if [type] == "nginxacclog" {
 
    geoip {
        source => "clientip" # 与日志中访问地址的key要对应
        target => "geoip"
        database => "/usr/local/logstash/GeoLiteCity.dat"
        add_field => [ "[geoip][coordinates]","%{[geoip][longitude]}" ]
        add_field => [ "[geoip][coordinates]","%{[geoip][latitude]}" ]
}
 
    mutate {
        convert => [ "[geoip][coordinates]","float" ]
 
}
 
 
 
}
 
}
 
 
output {
  kafka {
    workers => 2
    bootstrap_servers => "10.10.1.30:9092,10.10.1.31:9092,10.10.1.32:9092"
    topic_id => "peiyinlog"
 
}
 
 
}


2. Запустите службу

/usr/local/logstash/bin/logstash agent -f logstash_in_kafka.conf &


Эта конфигурация узла 10.10.1.31 точно такая же, как указано выше. (немного)

Настройка Logstash на втором уровне и уровне обработки данных завершена.



Пять, настроить уровень сбора данных, бизнес-сервер + Filebeat


1. Настройте формат журнала Nginx

log_format json '{"@timestamp":"$time_iso8601",'
                 '"slbip":"$remote_addr",'
                 '"clientip":"$http_x_forwarded_for",'
                 '"serverip":"$server_addr",'
                 '"size":$body_bytes_sent,'
                 '"responsetime":$request_time,'
                 '"domain":"$host",'
                 '"method":"$request_method",'
                 '"requesturi":"$request_uri",'
                 '"url":"$uri",'
                 '"appversion":"$HTTP_APP_VERSION",'
                 '"referer":"$http_referer",'
                 '"agent":"$http_user_agent",'
                 '"status":"$status",'
                 '"devicecode":"$HTTP_HA"}';
                  
# 在虚拟主机配置中调用
access_log  /alidata/log/nginx/access/access.log json;


2. Установите Filebeat

Filebeat также является продуктом Elasticsearch, который можно скачать с официального сайта.

# rpm 包安装
yum install filebeat-1.2.3-x86_64.rpm -y


3. Напишите файл конфигурации Filebeat

################### Filebeat Configuration Example #########################
 
############################# Filebeat ######################################
 
filebeat:
  prospectors:
    -
      paths:
        - /var/log/messages
 
      input_type: log
       
      document_type: messages
 
    -
      paths:
        - /alidata/log/nginx/access/access.log
       
      input_type: log
 
      document_type: nginxacclog
     
    -
      paths:
        - /alidata/www/logs/laravel.log
        
      input_type: log
 
      document_type: larlog
     
    -
      paths:
        - /alidata/www/logs/500_error.log
 
      input_type: log
 
      document_type: peiyinlar_500error
     
    -
      paths:
        - /alidata/www/logs/deposit.log
       
      input_type: log
 
      document_type: lar_deposit
 
    -
      paths:
        - /alidata/www/logs/call_error.log
      
      input_type: log
 
      document_type: call_error
     
    -
      paths:
        - /alidata/log/php/php-fpm.log.slow
 
      input_type: log
 
      document_type: phpslowlog
 
      multiline: 
          pattern: '^[[:space:]]'
          negate: true
          match: after
 
  registry_file: /var/lib/filebeat/registry
 
   
############################# Output ##########################################
   
output:
  logstash: 
    hosts: ["10.26.95.215:5044"]
   
 
############################# Shipper #########################################
   
shipper: 
  name: "host_6"
   
   
############################# Logging ######################################### 
   
logging:  
  files:
    rotateeverybytes: 10485760 # = 10MB


4. Запустите службу

/etc/init.d/filebeat start


На уровне сбора данных настройка Filebeat завершена.


Теперь данные журнала на бизнес-сервере непрерывно записываются в кэш.



В-шестых, конфигурация расположена на третьем уровне архитектурной схемы, уровне пересылки данных.


Установка Logstash упоминалась выше (опущено)


Написание файла конфигурации Logstash

# kafka_to_es.conf
 
input{
    kafka {
        zk_connect => "10.10.1.30:2181,10.10.1.31:2181,10.10.1.32:2181"
        group_id => "logstash"
        topic_id => "peiyinlog"
        reset_beginning => false
        consumer_threads => 50
        decorate_events => true
 
}
 
}
 
# 删除一些不需要的字段
 
filter {
  if [type] == "nginxacclog" {
 
     mutate {
     remove_field => ["slbip","kafka","domain","serverip","url","@version","offset","input_type","count","source","fields","beat.hostname","host","tags"]
    }
}
 
}
 
output {
    if [type] == "nginxacclog" {
       # stdout {codec => rubydebug }
        elasticsearch {
            hosts => ["10.10.1.90:9200","10.10.1.60:9200"]
            index => "logstash-nginxacclog-%{+YYYY.MM.dd}"
            manage_template => true
            flush_size => 50000
            idle_flush_time => 10
            workers => 2
}
 
}
 
 
 
    if [type] == "messages" {
        elasticsearch {
            hosts => ["10.10.1.90:9200","10.10.1.60:9200"]
            index => "logstash-messages-%{+YYYY.MM.dd}"
            manage_template => true
            flush_size => 50000
            idle_flush_time => 30
            workers => 1
}
 
}
 
 
    if [type] == "larlog" {
        elasticsearch {
            hosts => ["10.10.1.90:9200","10.10.1.60:9200"]
            index => "logstash-larlog-%{+YYYY.MM.dd}"
            manage_template => true
            flush_size => 2000
            idle_flush_time => 10
}
 
}
 
 
    if [type] == "deposit" {
        elasticsearch {
            hosts => ["10.10.1.90:9200","10.10.1.60:9200"]
            index => "logstash-deposit-%{+YYYY.MM.dd}"
            manage_template => true
            flush_size => 2000
            idle_flush_time => 10
}
 
}
 
 
    if [type] == "phpslowlog" {
        elasticsearch {
            hosts => ["10.10.1.90:9200","10.10.1.60:9200"]
            index => "logstash-phpslowlog-%{+YYYY.MM.dd}"
            manage_template => true
            flush_size => 2000
            idle_flush_time => 10
}
 
}
 
}


запустить службу

/usr/local/logstash/bin/logstash agent -f kafka_to_es.conf &


Уровень пересылки данных настроен


В это время данные последовательно вынимаются из kafka и передаются в ES DataNode.


Заходим на любой хост kafka для просмотра кеша и потребления данных

wKioL1f-8G3gYSE2AABXLzMqcf0058.png



Семь, измените конфигурацию шаблона индекса ES.


Зачем делать этот шаг? Потому что, когда logstash записывает данные в ES, он автоматически выбирает шаблон индекса. мы можем взглянуть

wKioL1f-85ngb4HBAABR4b08KRI422.png


Этот шаблон на самом деле неплох, но есть один параметр, который я отметил. "refresh_interval":"5s" Этот параметр используется для управления частотой обновления индекса. Чем быстрее обновляется индекс, тем больше данных в реальном времени вы ищете. Вот 5 секунд. Как правило, наши сценарии журналов не нуждаются в такой высокой производительности в реальном времени. Этот параметр можно соответствующим образом уменьшить, чтобы повысить скорость записи библиотеки индексов ES. 


Загрузить собственный шаблон

curl -XPUT http://10.10.1.244:9200/_template/logstash2 -d '
{
        "order":1,
        "template":"logstash-*",
        "settings":{
            "index":{
                "refresh_interval":"120s"
            }
        },
        "mappings":{
            "_default_":{
                "_all":{
                    "enabled":false
                }
            }
    }
}'


Из-за этого пользовательского шаблона я определяю порядок приоритета выше, чем у шаблона logstash, и правила сопоставления шаблона такие же, поэтому конфигурация этого пользовательского шаблона перезапишет исходный шаблон logstash.

Я просто кратко описываю это здесь. Если вы хотите подробно понять причину, ознакомьтесь с моей статьей о настройке ES.


Восемь, настройте слой отображения данных Kibana.


10.10.1.244 Узел

Kibana входит в пакет ELK, а также принадлежит компании elasticsearch, которую можно скачать на официальном сайте.


Установить

tar xf kibana-4.5.3-linux-x64.tar.gz
# 很简单,只要解压就可以用。


Изменить файл конфигурации

# vim kibana-4.5.3-linux-x64/config/kibana.yml
 
# Kibana is served by a back end server. This controls which port to use.
server.port: 5601
 
# The host to bind the server to.
server.host: "0.0.0.0"
 
# The Elasticsearch instance to use for all your queries.
elasticsearch.url: "
 
# 修改这三个参数就好了


запустить службу

wKiom1f--1jjDIH4AACCZWwZlR0270.png

Откройте браузер для посещения: http://10.10.1.244:5601/


Шаблон индекса для пользовательских индексов Elasticsearch


По умолчанию Kibana считает, что вы хотите получить доступ к данным, импортированным в Elasticsearch, через Logstash.В этом случае вы можете использовать logstash-* по умолчанию в качестве шаблона индекса. Подстановочные знаки (*) соответствуют любому количеству любых символов в имени индекса.


Выберите поле индекса (поле типа даты), содержащее отметку времени, которую можно использовать для обработки на основе времени. Кибана прочитает индекс

map, а затем перечислите все поля, содержащие метки времени. Если в вашем индексе нет данных на основе времени.

Отключите параметр Индекс содержит события, основанные на времени.


Если новый индекс должен создаваться периодически, а имя индекса имеет отметку времени, выберите параметр Использовать время событий для создания имен индексов,

Затем снова выберите Интервал шаблона индекса. Это может улучшить производительность поиска, и Kibana будет искать индекс в указанном вами временном диапазоне. Это особенно полезно, если вы экспортируете данные в Elasticsearch с помощью Logstash.


Поскольку наш индекс назван по дате, он разбит по дням. Шаблон индекса выглядит следующим образом

wKiom1f-_yTCvOe2AADRDyL4MEg193.png


Отображение данных

wKiom1f-_5uhQx3XAADGEwSe3Us023.png

Сделанный!