基于docker 进行安装ELK 进行日志分析

基于docker 进行安装ELK 进行日志分析,第1张

基于docker 进行安装ELK 进行日志分析

首先保证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-encoder
    5.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的索引模式
配置过程:


后续我们将继续使用

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5656370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存