# 《Seckill秒杀系统》第107章:快速搭建ELK环境并导入配置

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:掌握快速搭建ELK环境的方式方法,并通过规范日志的输出格式,设置规范化的ELK配置,并能够将日志治理的方案和实现方式灵活应用到自身实际项目中。

大家好,我是冰河~~

日志治理是秒杀系统建设过程中非常重要的一环,通过日志治理,我们不仅可以快速查看系统的运行情况,更能够快速了解到系统出问题的故障点,并能够直观的观测到系统的性能瓶颈,进而快速处理系统问题和优化系统性能。

# 一、前言

在前面的文章中,我们系统的讲述了日志治理的基本知识、原则与架构,有了这些理论知识作为指导,接下来,我们就需要对秒杀系统的日志治理进行落地实现。通过可视化、可观测的方式对日志进行管理和监控,能够第一时间发现系统的问题和性能瓶颈,进而快速处理和解决问题并优化系统性能。

# 二、本章诉求

快速搭建ELK环境,并在搭建好的ELK环境上,导入日志规范化的配置。了解日志规范化为日志治理带来的好处,通过本章的学习,重点掌握日志治理的落地实现方案,并能够将其灵活应用到自身实际项目中。

# 三、搭建ELK环境

为了更好的让大家搭建ELK环境实现秒杀系统的日志治理功能,这里,我单独将基于docker-compose搭建ELK环境的配置分离出来,放到了项目的environment 目录下,命名为docker-compose-elk.yml配置文件,搭建ELK环境的具体步骤如下所示。

(1)新建docker-compose-elk.yml配置文件

docker-compose-elk.yml配置文件文件详见:seckill秒杀系统工程的environment/docker-compose-elk.yml,文件的内容如下所示。

version: '3.2'

networks:
  binghe-network:
    driver: bridge

volumes:
  prometheus_data: {}
services:
  elasticsearch:
    image: elasticsearch:7.14.2
    container_name: elasticsearch
    volumes:
    - ./config/elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
    - "9200:9200"
    - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      discovery.type: single-node
    networks:
    - binghe-network

  logstash:
    image: logstash:7.14.2
    container_name: logstash
    volumes:
    - ./config/elk/logstash.yml:/usr/share/logstash/config/logstash.yml
    - ./config/elk/pipeline:/usr/share/logstash/pipeline
    ports:
    - "5044:5044"
    - "5000:5000/tcp"
    - "5000:5000/udp"
    - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
    - binghe-network
    depends_on:
    - elasticsearch

  kibana:
    image: kibana:7.14.2
    container_name: kibana
    volumes:
    - ./config/elk/kibana.yml:/usr/share/kibana/config/kibana.yml
    ports:
    - "5601:5601"
    networks:
    - binghe-network
    depends_on:
    - elasticsearch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

可以看到,在docker-compose-elk.yml配置文件中,只包含搭建ELK相关的环境。

(2)上传配置文件

注意:这里需要将seckill秒杀系统工程下的environment整个目录都上传到CentOS服务器,不要上传单独的配置文件。

(3)启动ELK环境

上传environment整个目录到服务器上之后,登录服务器终端,将当前命令行所在目录切换到上传的environment目录下,随后输入如下命令启动ELK环境。

docker-compose -f docker-compose-elk.yml up -d --force-recreate 
1

如果命令行输出了如下日志,则表示ELK环境启动成功。

[+] Running 4/4
 ✔ Network environment_binghe-network  Created                                                                                                                      0.0s 
 ✔ Container elasticsearch             Started                                                                                                                      1.0s 
 ✔ Container logstash                  Started                                                                                                                      2.6s 
 ✔ Container kibana                    Started                                                                                                                      
1
2
3
4
5

(4)查看启动的Docker容器

在命令行输入docker ps命令查看ELK Docker容器是否启动成功,如下所示。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码