首先保证docker可以正常使用哟
注意kibana,logstash,elasticsearch 版本保持一致、
特别注意:这里面在内网服务器搭建时候突然发现这个问题,补充一下:
就是kibana按照下面的进行安装发现页面打不开 可能就是elasticsearch.hosts: [ "http://ip:9200" ] 这个地方ip错误了 可以运行下面的这个话来看一下elasticsearch的ip。特别注意这里面的elasticsearch 名字是根据你docker 启动elasticsearch 设置的name的名字哦 docker inspect elasticsearch | grep IPAddress
一.docker部署elasticsearch
1. 从docker hub中拉取官方镜像
# 此处使用的elasticsearch版本为7.6.0,后续的kibana和logstash也会使用该版本 docker pull elasticsearch:7.6.0
2.为elasticsearch创建网络(创建的目的是kibana,logstash后续都会用到此网络)
# 启动镜像的时候指定网段,再该网段下的容器能够通过容器名称进行互通 docker network create elastic
3.启动镜像
docker run -d --name elasticsearch --network elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.0
4.验证启动状态,若出现如下的返回信息,则说明elasticsearch已经部署ok
命令行验证:curl ip:端口号
5.进入elasticsearch 容器
docker exec -it elasticsearch /bin/bash
6.修改elasticsearch.yml
vi /usr/share/elasticsearch/config/elasticsearch.yml
7.内容如下:
cluster.name: elasticsearch network.host: 0.0.0.0 http.port: 9200
8.重新docker restart elasticsearch 完成了
二.docker部署kibana
1. 从docker hub中拉取官方镜像
# 该命令可执行也可不执行,docker run的时候若没有镜像会自动pull镜像 docker pull kibana:7.6.0
2.创建网络
# 如果已经创建了网络,则省略该步骤 docker network create elastic
3.启动容器
# 以配置文件的方式启动 # 1.创建目录 sudo mkdir -p /docker/kibana/config/ # 2.添加配置文件(第二点直接复制执行) sudo tee /docker/kibana/config/kibana.yml <<-'EOF' server.name: kibana server.host: "0" # elasticsearch的服务器地址, elasticsearch表示容器名 elasticsearch.hosts: [ "http://ip:9200" ] xpack.monitoring.ui.container.elasticsearch.enabled: true # 汉化操作界面 i18n.locale: zh-CN EOF # 3.启动kibana docker run -d --name kibana --network elastic --privileged=true -v /docker/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml -p:5601:5601 kibana:7.6.0
访问kibana界面: http://服务器地址:5601
三.docker部署logstash
1. 从docker hub中拉取官方镜像
# 该命令可执行也可不执行,docker run的时候若没有镜像会自动pull镜像 docker pull logstash:7.6.0
2.创建网络
# 如果已经创建了网络,则省略该步骤 docker network create elastic
3.启动容器
# 1.创建存放配置文件的文件夹 sudo mkdir -p /docker/logstash/config/ # 2.创建配置文件(复制以下全部内容至命令行中) sudo tee /docker/logstash/config/logstash.yml <<-'EOF' # 输入端 input { #输入logstash时控制台打印 stdin { } #为logstash增加tcp输入口,方便springboot接入 #5044端口预留给filebeat输入logstah,此处开放5043端口,程序直接输入logstash tcp { mode => "server" host => "0.0.0.0" #从5043端口取日志 port => 5043 #需要安装logstash-codec-json_lines插件 codec => json_lines } } #输出端 output { stdout { codec => rubydebug } elasticsearch { #hosts中的地址应该写同一network下的容器名称 hosts => ["http://ip:9200"] # 输出至elasticsearch中的自定义index名称 index => "flow-%{+YYYY.MM.dd}" #user => "elastic" #password => "changeme" } } EOF # 3.启动容器 docker run -d --name logstash -p 5043:5043 -p 5044:5044 --network elastic --privileged=true -v /docker/logstash/config/:/usr/share/logstash/pipeline/ logstash:7.6.0 # 4.待容器启动完成,进入容器中 docker exec -it logstash /bin/bash # 5.为logstash安装json_lines插件 /usr/share/logstash/bin/logstash-plugin install logstash-codec-json_lines # 6. 成功安装插件之后,退出容器 exit # 7.重启容器 docker restart logstash
至此部署上已经全部完成了
springboot整合elk
1.springboot项目首先整合logback日志是正确的
2.引入依赖
net.logstash.logback logstash-logback-encoder5.3
3.日志配置文件 logback-spring.xml
${CONSOLE_LOG_PATTERN} ${DEBUG_LOG_FILE_NAME_PATTERN} 30 100MB 10MB ${FILE_LOG_PATTERN} debug ACCEPT DENY ${INFO_LOG_FILE_NAME_PATTERN} 30 100MB 10MB ${FILE_LOG_PATTERN} info ACCEPT DENY ${WARN_LOG_FILE_NAME_PATTERN} 30 100MB 10MB ${FILE_LOG_PATTERN} warn ACCEPT DENY ${ERROR_LOG_FILE_NAME_PATTERN} 30 100MB 10MB ${FILE_LOG_PATTERN} error ACCEPT DENY 110.40.139.31:5043 {"applicationName":"${applicationName}"}
如上 应用名称/日志输出级别/获取springboot的yml配置信息/日志发送至logstash 重要 如下图
110.40.139.31:5043 {"applicationName":"${applicationName}"}
applicationName 这个就很好 可以很好解决在微服务这块区分各服务部分筛选
4.配置一下kibana的索引模式
配置过程:
后续我们将继续使用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)