ELK 日志系统的常见解决方案:
通常的产品或项目部署至服务器,服务一般会打印日志便于线上问题跟踪。
使用 Log4j 中的自定义 Appender,将服务运行打印的日志直接推送到 Kafka 中。经由 Logstash 消费 Kafka 生产的数据,进行加工过滤后输出到 ElasticSearch 进行日志数据的存储与全文检索。使用 Kibana 对日志数据进行可视化操作。

1. 集群日志系统设计

elk中引入kafka的作用_elasticsearch

1.1 说明
    主要是扩展两个 Logstash 实例,然后搭建两个节点的 ElasticSearch 集群,日志数据经 Log4j 推送到 Kafka 中,然后经过两个 Logstash 并行消费,再将日志数据传送到 ElasticSearch 集群中。
1.2 扩展原因
    Kafka 的生成消息的效率远大于 Logstash 消费效率,提升 Logstash 性能后仍有2倍左右的差距,因此扩展2台 Logstash 来消费 Kafka 生产的消息,并扩展一个 ElasticSearch 节点用于数据存储。
1.3 部署主机

节点名称

服务器地址

服务器配置

Node1

192.168.200.81

8G内存,双核四线程

Node2

192.168.200.83

4G内存,双核双线程

2. 集群部署设计

2.1 Logstash 扩展

2.1.1 Logstash的部署
分别在Node1和Node2上各部署了一个Logstash实例
Logstash实例的安装与部署可参照Logstash安装部署文档来进行。

clientId

Host

logstash81

Node1(192.168.200.81)

logstash83

Node2(192.168.200.83)

2.1.2配置文件的配置
在Logstash的配置文件logstash_kafka.conf.c配置:
(1)配置相同的topic: topics => [“logstash-kafka-topic”]
(2)配置相同的group_id: group_id => “logstash”
(3)配置不同的client_id: client_id => “logstash83” 和 client_id => "logstash81”
(4) 配置consumer_threads => 2,要求两个实例的consumer_threads相加小于等于topic的分区数目.

2.2 ElasticSearch 扩展

2.2.1ElasticSearch集群的部署
ElasticSearch集群的安装部署先按照单个ElasticSearch软件安装部署文档分别在两台服务器上安装部署,再修改相应配置文件。

Host

Master/Node

cluster.name

node.name

Node1(192.168.200.81)

Master节点

nascent_elk

node-1

Node2(192.168.200.83)

Node节点

nascent_elk

node-2

2.2.2 ElasticSearch主配置文件的一些增加配置(master和node都需要配置)
Vim elasticsearch.yml

# 配置集群自动发现节点
discovery.zen.ping.unicast.hosts:["192.168.200.81", "192.168.200.83"]
# 配置最大master节点数目
discovery.zen.minimum_master_nodes: 1

3. 集群环境启动

  • 启动Kafka
    Kafka_home = /opt/elkf/kafka/kafka_2.11-2.1.0/
    说明:启动kafka之前,先得启动zookeeper
    启动zookeeper:/opt/elkf/zookeeper/start.sh 启动kafka:
    {Kafka_home}/bin/kafka-server-start.sh config/server.properties
  • 启动Logstash实例
    说明:分别启动两台主机上的Logstash
    启动Logstash:./bin/logstash -f config/logstash_kafka.conf.c
  • 启动ElasticSearch集群
    说明:需要先启动master节点,再启动node节点,它会根据配置自动寻找其他节点。
    启动ElasticSearch集群:
    /opt/elkf/elasticsearch-6.5.1/bin/elasticsearch
  • 启动Kibana
    /opt/elkf/kibana/kibana-6.5.1-linux-x86_64/bin/kibana