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

Logstash

Процесс платформы управления

Подготовка окружающей среды

  • elasticsearch-6.0.0.tar.gz
  • filebeat-7.0.1-linux-x86_64.tar.gz
  • kibana-6.0.0-linux-x86_64.tar.gz
  • logstash-6.0.0.tar.gz
  • kafka_2.11-2.1.1.tgz

За исключением kafka, остальные четыре могут использоваться вelasticСкачать с официального сайта, подробности можно посмотреть нассылка для скачиванияВыберите программное обеспечение и версию для загрузки. Этот документ основан на версии 6.0.0.
Кафка может бытьApacheскачать

Этот документ основан на установке и развертывании 64-разрядной системы CentOS Linux версии 7.2.1511 (Core).Чтобы проверить версию и разрядность, используйте следующие команды.

  • cat /etc/centos-release: Посмотреть номер версии
  • getconf LONG_BIT: просмотр количества битов

Установить и развернуть

Поскольку он основан на Java, перед развертыванием убедитесь, что Jdk установлен в системе.В этой системе установлена ​​версия Jdk 1.8.
Все файлы находятся в папке /usr/elk/

Развертывание Кибаны

  1. распаковать файлы
[root@localhost elk]# tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz
  1. Измените конфигурацию, измените файл /conf/kibana.yml
# 设置elasticsearch地址
elasticsearch.url: "http://localhost:9200"
server.host: 0.0.0.0

развертывание эластичного поиска

  1. распаковать файлы
[root@localhost elk]# tar -zxvf elasticsearch-6.0.0.tar.gz
  1. При запуске проекта нельзя использовать привилегии root, поэтому для запуска нужно создать нового пользователя
# 新建一个组
[root@localhost elk]# groupadd elkgroup
# 在该组下新增用户 useradd 用户名 -g 组名 -p 密码
[root@localhost elk]# useradd elkuser -g elkgroup -p 123456
# 赋权限 chown -R 用户名:组名 文件
[root@localhost elk]# chown -R elsearch:elsearch elasticsearch-6.0.0
# 切换用户并且启动elasticsearch
[root@localhost elk]# su elkuser
[elkuser@localhost elasticsearch-6.0.0]$ ./bin/elasticsearch

развертывание logstash

  1. распаковать файлы
[root@localhost elk]# tar -zxvf logstash-6.0.0.tar.gz
  1. Создайте новый файл конфигурации logstash.conf в каталоге conf.
input{
file{
type=>"log"
path=>"/usr/logs/*.log"
start_position=>"beginning"
}
}

output{
stdout{
codec=>rubydebug{}
}

elasticsearch{
hosts=>"127.0.0.1"
index=>"log-%{+YYYY.MM.dd}"
}
}
  1. Запуск согласно конфигурационному файлу
[root@localhost elk]# ./logstash -f ../config/logstash.conf

Развертывание Кафки

  1. установить glibc
[root@localhost elk]# yum -y install glibc.i686
  1. Настроить зоопарк
[root@localhost elk]# vi config/zookeeper.properties 
# 配置内容
dataDir=/data/programs/kafka_2.11-0.10.0.0/data
dataLogDir=/data/programs/kafka_2.11-0.10.0.0/logs
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
# 配置完成保存退出,然后根据配置启动zookeeper
[root@localhost kafka_2.11-2.1.1]# ./bin/zookeeper-server-start.sh config/zookeeper.properties
  1. Настройте файл кафки
[root@localhost kafka_2.11-2.1.1]# vi config/server.properties
# 配置内容
broker.id=0
port=9092
host.name=127.0.0.1
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/data/logs/kafka
num.partitions=2
num.recovery.threads.per.data.dir=1
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
# 配置完成保存退出,然后根据配置启动kafka
[root@localhost kafka_2.11-2.1.1]# ./bin/kafka-server-start.sh config/server.properties

В процессе запуска может появиться сообщение о том, что памяти недостаточно,

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:

Поскольку конфигурация kafka по умолчанию — 1G, измените конфигурацию запуска.

将 /bin/kafka-server-start.sh的
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
修改为
export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"

Затем перезапустите его

развертывание fileBeat

  1. Изменить конфигурацию filebeat.yml
[root@localhost filebeat-7.0.1-linux-x86_64]# vi filebeat.yml
# 新增输出到kafka配置,该配置是yml格式,所以配置的时候要符合yml规范
#--------------------------- kafka output ----------------------------------
output.kafka:
    enabled: true
    hosts: ["127.0.0.1:9092"]
    topic: test
# 并且修改相关配置
enabled: true
# 获取日志的路径
paths:
    - /home/elk/log/access.log
# 日志标签,在kibana中查看数据可以找到该标签,并且可以根据该tag标签过滤查找数据
tags: ["nginx-accesslog"]
# 启动服务
[root@localhost filebeat-7.0.1-linux-x86_64]# ./filebeat -e

Проблемы и замечания

Сообщалось о небольшой проблеме при запуске logstash,
Connection to node -1 could not be established. Broker may not be available.
Проблема вызвана host.name=10.12.1.52, настроенным при запуске kafka, который является адресом сервера, но адрес kafka, настроенный в logstash, равен 127.0.0.1.
будь осторожен:

  • Конфигурация логсташа
  • Имя очереди kafka должно соответствовать

Подробная настройка каждого программного обеспечения будет представлена ​​в последующих статьях.За подробностями вы также можете обратиться к официальной документации.Адреса следующие:
Kibana
Logstash
Elasticsearch
Filebeat