Docker + ELK + SpringBoot部署

步骤一:Docker安装ELK镜像

docker pull sebp/elk

步骤二:启动镜像

方法一:Docker部署

docker run 
-e ES_JAVA_OPTS="-Xms256m -Xmx256m"    # 设置虚拟机所需内存大小
-p 5601:5601 						# Kibana Web 接口
-p 5040:5040  						# Logstash Beat 接口
-p 5041:5041                        
-p 5042:5042
-p 5043:5043
-p 5044:5044
-p 5045:5045
-p 5046:5046
-p 5047:5047
-p 5048:5048
-p 5049:5049

-p 9200:9200                          # Elasticsearch JSON 接口
-p 9300:9300                          # Elasticsearch transport接口
-it                                   # 虚拟机交互
--name elk -d  ******

方法二:dokcer-compose部署

docker-compose启动

version: '2'
services:
  elk: #服务名称(不是容器名,名称最好不要含有特殊字符,碰到过用下划线时运行出错)
    image: sebp/elk:latest
    container_name: elk #容器名称 
    ports:
      - "9200:9200"
      - "9300:9300"
	  - "5601:5601"
	  - ......                # 继续映射开启的服务端口

    environment: #设置镜像变量,它可以保存变量到镜像里面
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"

注意事项:

运行启动ELK碰到vm.max_map_count限制问题,在Elasticsearch version 5属于最常出现的问题.
持久性的做法是修改/etc/sysctl.conf文件中的vm.max_map_count.
echo "vm.max_map_count=262144" > /etc/sysctl.conf       #持久设置最大值
sysctl -p                                                                                    # 生效
其次,logstash的配置文件在/etc/logstash/conf.d/目录下,将input,filter,out分开,最终组合成一个,建议将/etc/logstash/conf.d映射出来,自行管理

步骤三:修改ELK内部配置文件

cd etc/logstash/conf.d/
vim 02-beats-input.conf

input {
  tcp {
    port => 5040						#设置输入端口
    codec => json_lines
    type => system                      #对应服务名称
  }
}
    ........                            #可配置多个
}

output {
 if [type] == "system" {				#根据输出类型判断输出节点
   elasticsearch {
    	hosts => ["localhost:9200"]
    	index => "system"               #对应服务名称
    }

    ........                            #可配置多个

}
访问localhost:9200查看启动状态   
{
  "name" : "elk",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "FNt0O9UfRPeruL10xraQSw",
  "version" : {
    "number" : "7.16.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "2b937c44140b6559905130a8650c64dbd0879cfb",
    "build_date" : "2021-12-18T19:42:46.604893745Z",
    "build_snapshot" : false,
    "lucene_version" : "8.10.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
访问localhost:5601 进入Kibana页面
进入管理会话,创建索引模式,由于上文中设置输出文件为logstash-%{+YYYY.MM.dd}
设置索引为logstash-*

步骤四:编写SpringBoot中Log.xml中添加

<Appenders>
    <Console name="Console" target="SYSTEM_OUT" follow="true">
        <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}"/>
    </Console>
    <!-- 设置连接   -->
    <Socket name="logstash-tcp" host="ip地址" port="5044" protocol="TCP">
        <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}"/>
    </Socket>
</Appenders>
<Loggers>
    <Root level="INFO" additivity="false">
        <AppenderRef ref="Console"/>
        <AppenderRef ref="logstash-tcp" />
    </Root>
</Loggers>

常见问题

  • Kibana汉化

        进入elk终端
        docker exec -it elk /bin/bash
        cd /opt/kibana/config/
        vim kibana.yml
        最后一行添加  i18n.locale: zh-CN   # 冒号后有空格
        docker restart elk

  • 页面Message展示不全问题

        进入ELK容器
        docker exec -it elk /bin/bash
        cd /opt/logstash/bin/
        ./logstash-plugin list                                                           # 查看是否安装multiline
        ./logstash-plugin install logstash-filter-multiline                 #  安装multiline

        cd /etc/logstash/conf.d/
        vim 10-syslog.conf
        添加如下
        filter {
            multiline {
                pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}"
                negate => true
                what => "previous"
            }
        }
        docker restart elk

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值