Docker安装ELK结合Springboot应用

2023年 8月 18日 22.5k 0

环境搭建

版本介绍

组件 版本号
logstash 7.6.2
elasticsearch 7.6.2
kibana 7.6.2

Docker安装ELK

安装Elasticsearch

1、 启动elasticsearch

docker run -p 9200:9200 -p 9300:9300 --name elasticsearch 
-e "discovery.type=single-node" 
-e "cluster.name=elasticsearch" 
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins 
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data 
-d elasticsearch:7.6.2

2、 安装中文分词器IKAnalyzer

# 进入容器
docker exec -it elasticsearch /bin/bash
# 安装分词器
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
# 退出容器
exit
# 重启
docker restart elasticsearch

安装Logstash

1、 下载logstash

docker pull logstash:7.6.2

2、 创建配置文件

mkdir /mydata/logstash
cd /mydata/logstash
vi logstash.conf

logstash.conf配置文件如下:

input {
# 读取网络数据采用tcp,生产环境不建议使用,因为tcp只能在sizeQueue中缓存20个事件(日志记录)
  tcp {
    mode => "server"
    host => "0.0.0.0"
    # 定义的端口
    port => 4560
    # codec表示使用的插件,json_lines就是之前安装的插件
    codec => json_lines
    # type可以自定义名称
    type => "debug"
  }
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4561
    codec => json_lines
    type => "error"
  }
  redis {
    # data_type有三种类型
    # list => BLPOP
    # channel => SUBSCRIBE
    # pattern_channel => PSUBSCRIBE
    data_type => "pattern_channel"
    # 订阅的key,可以使用模糊
    key => "logstash-*"
    # redis服务器
    host => "192.168.1.41"
    # redis端口
    port => 6379
    threads => 5
  }
}
# 过滤器,对数据进行处理
filter{
  # 对type=error的日志进行过滤
  if [type] == "error" {
    mutate {
      remove_field => "port"
      remove_field => "host"
      remove_field => "@version"
    }
    # 启用json插件解码
    json {
      # 解码的key名称
      source => "message"
      # 如果json是多层结构,设置target=jsoncontent
      target => "jsoncontent"
    }

  }
}
output {
  # 将日志输出到elasticsearch
  elasticsearch {
    # 地址
    hosts => "192.168.1.41:9200"
    # 日志文件名称格式,type引用input中定义的type值
    index => "log-%{type}-%{+YYYY.MM.dd}"
  }
}

具体的其它类型配置说明可以参考链接

3、 启动logstash服务

docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 
--link elasticsearch:es 
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf 
-d logstash:7.6.2

4、 在logstash安装json_lines插件

# 进入容器
docker exec -it logstash /bin/bash
# 进步bin目录
cd /bin/
# 安装插件
logstash-plugin install logstash-codec-json_lines
# 退出容器
exit
# 重启logstash
docker restart logstash

安装Kibana

# 下载
docker pull kibana:7.6.2
# 启动
docker run --name kibana -p 5601:5601 --link elasticsearch:es -e "elasticsearch.hosts=http://es:9200" -d kibana:7.6.2

通过访问http://ip:5601 进入kibana

界面说明

image.png

image.png

image.png

image.png

image.png

整合Springboot

  • Maven导入
  • 
    
        net.logstash.logback
        logstash-logback-encoder
        5.3
    
    
  • 修改日志文件,将日志输出到logstash
  • 
    
        
        192.168.1.41:4560
        
    
    
        192.168.1.41:4561
        
    
    
  • 启动项目并访问,那么打印的日志最终会输出到kibana中
  • 参考:
    SpringBoot应用ELK搭建Docker日志收集:
    juejin.cn/post/697100…
    Logstash 最佳实践:
    doc.yonyoucloud.com/doc/logstas…

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论