Spring Boot —— Docker快速构建ELK

文章目录

  • Spring Boot —— Docker快速构建ELK
    • 前言
    • Docker
    • ELK 是什么 ?
    • 搭建
      • Docker Configuration ELK
        • Docker Install
        • Docker Download ELK
    • Kafka
    • 总结

Spring Boot —— Docker快速构建ELK

前言

记录通过Docker集成ELK的步骤,可应用到Spring Boot || Spring Cloud中;


Docker

嗯,容器,东西放里,然后搬运,和图标挺贴切;
Spring Boot —— Docker快速构建ELK_第1张图片

  • CSDN —— Hello,Docker

ELK 是什么 ?

三个进程的总称

  • E
    Elasticsearch (搜索引擎,优化log,提高检索性能)
  • L
    Logstash (日志收集器,结合logback收集系统中的日志,同样,可以应用到Spring Cloud中,配一下即可)
  • K
    Kibana (检索客户端,在此客户端查看收集上来的日志)

一张图了解ELK工作流程
Spring Boot —— Docker快速构建ELK_第2张图片


搭建

Docker Configuration ELK

Docker Install

见上面的"CSDN —— Hello,Docker"博客内内容;

Docker Download ELK

因为Docker其实就是一个容器(理解成货轮),货轮上的货物是我们自己放上去的,我可以自己通过Elasticsearch官网将ELK三个组件分别安装到本机,然后打包成“货物[Docker镜像]”,放到“货轮上[Docker仓库]”,但已经有人帮我们做好这些操作了,我们直接用“装好货物的货轮”即可,这里我使用的是从GitHub上找Docker ELK的镜像。

  • GitHbu
    Spring Boot —— Docker快速构建ELK_第3张图片
    docker ELK GitHub Address
  • Clone the project locally
  • 主要是根目录下docker-compose.xml文件,这里配置了我们的elk(已经编排好的“货物”)
    Spring Boot —— Docker快速构建ELK_第4张图片
  • docker-compose.yml
version: '3.2'

services:
  # es
  elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
		# 本地文件
        source: ./elasticsearch/config/elasticsearch.yml
        # 映射到的目标文件
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      # 端口
      - "9200:9200"
      - "9300:9300"
    environment:
      # jvm设置
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      # 用户名设置
      ELASTIC_PASSWORD: changeme
    networks:
      - elk
  # logstash
  logstash:
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./logstash/config/logstash.yml
        target: /usr/share/logstash/config/logstash.yml
        read_only: true
      - type: bind
        source: ./logstash/pipeline
        target: /usr/share/logstash/pipeline
        read_only: true
    ports:
      # 端口
      - "5000:5000"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch
  # kibana
  kibana:
    build:
      context: kibana/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./kibana/config/kibana.yml
        target: /usr/share/kibana/config/kibana.yml
        read_only: true
    ports:
      # 端口
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge

volumes:
  elasticsearch:
  • 进入docker-elk根目录,运行命令
    Spring Boot —— Docker快速构建ELK_第5张图片
# 使用"集装箱",自动配置
docker-compose up

Kafka

引入队列,在微服务环境下,让日志收集更加高效稳定!然后就变成了这样:
Spring Boot —— Docker快速构建ELK_第6张图片


总结

  • Spring Boot & Cloud 可通过ELK进行日志收集和分析
  • 通过Docker获取ELK镜像(GitHub开源镜像:docker-elk)
  • 加入Kafka对日志收集进行削峰(微服务环境下,引入队列技术收集日志,也可以采用RocketMQ、RabbitMQ等,只需要MQ支持Logback,Logback支持Logstash)
  • 输出什么日志到logstash?
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketApender">
	<destination>localhost:5000destination>
	<encoder>
		
		<pattren>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattren>
	encoder>
	...
	...
	...
	...
appender>
  • 引入Pinpoint,实现微服务链路跟踪等
    • 调用链路监控
    • 指标监控
    • 日志监控

你可能感兴趣的:(弗兰克与Docker,监控系统,docker,elk)