栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

SpringBoot 接入 ELK - 动态索引详解

SpringBoot 接入 ELK - 动态索引详解

1.说明:
    1.docker环境需要java maven环境,检查这两个:java -version/ mvn -version/
    
    2.本次ELK是使用docker运行的,ELK极其耗内存,服务器内存在4G及以内的,不建议安转。

2.Linux maven 安装(安转路径 usr/local/):
    1:下载
        wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
        
    2.解压
        tar -zxvf apache-maven-3.5.4-bin.tar.gz
        
    3.改名称:
        mv apache-maven-3.5.4 maven
        
    4.配置环境变量
        vi /etc/profile

        在配置文件配置

        export MAVEN_HOME=/usr/local/maven
        export PATH=$MAVEN_HOME/bin:$PATH
        
    5.重新加载配置使文件生效
    source /etc/profile

    6.查看maven
     mvn -version

3.安转docker
    1.先装GIT
    yum install git-core
    
    2.安装docker
    yum -y install docker-io
    注意:如果报错-》Error: Unable to find a match: docker-io 是因为:centos8默认使用podman代替docker,系统没有自带docker安装包 可以使用命令:lsb_release -a 查看命令版本,安转docker需要内核大于:3.10 使用命令查看:uname -r
    
    3.如果是Center OS8先删除一下可能存在的旧版本
    sudo yum remove docker
                  docker-client
                  docker-client-latest
                  docker-common
                  docker-latest
                  docker-latest-logrotate
                  docker-logrotate
                  docker-engine
                  
    4.安转docker储存库
    sudo yum install -y yum-utils
    
    5.配置安装源
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    6安装最新版本的Docker 引擎和容器
    sudo yum install docker-ce docker-ce-cli containerd.io
    
    7.查看docker版本
    docker -v
    
    8.配置系统自启
    systemctl enable docker
    
    9.补充,如果不是在root用户名下安转的,docker没有最高权限,此时需要配置用户组,创建用户组为了避免每次输入命令都输入sudo
    $ sudo groupadd docker
    $ sudo usermod -aG docker 用户名
    
    10.启动docker
    systemctl start docker
    
    11.进行docker的 Hello 测试,(这时会出现一堆输出,其中只要出现 Hello from Docker!即为成功)
    docker run hello-world
 

3.1.卸载docker,请注意...........请慎用
    
    12.卸载docker
    sudo yum remove docker-ce docker-ce-cli containerd.io
    
    13.删除所有docker的容器,镜像,卷,图片等
    sudo rm -rf /var/lib/docker

4.安转ELK
    1.直接使用docker拉取三合一镜像
    docker pull sebp/elk
    
    2.查看镜像
    docker images
    
    3.Logstash配置

    3.1其中一种写法(FileBeat方式):
-----------------------------------------------------------------------------------------------
    在/usr/config/logstash目录下新建beats-input.conf,用于日志的输入:

    input {
      beats {
        port => 5044
      }
    }
    新建output.conf,用于日志由Logstash到ElasticSearch的输出:

    output {
      elasticsearch {
        hosts => ["localhost"]
        manage_template => false
        index => "%{[@metadata][beat]}"
      }
    }
    
    其中的index为输出到ElasticSearch后的index。
------------------------------------------------------------------------------------------------------
    3.2第二种写法,个人使用第二种(SpringBoot logback方式)(动态索引)
    在/usr/config/logstash目录下:

注意:appname 是自定义的索引名称,后面会用到

    vim logstash.conf

              文件内容:


            input {
              tcp {
                mode => "server"
                port => 5044
                codec => json_lines
              }
            }

            output {
                   elasticsearch {
                    action => "index"
                    hosts => "ip:9200"
                    index => "log-%{[appname]}-%{+YYYY.MM.dd}"
                   }
            }

4.运行容器
    有了镜像之后直接启动即可:

    docker run -d -p 5044:5044 -p 5601:5601 -p 9200:9200 -p 9300:9300 -v /var/data/elk:/var/lib/elasticsearch -v /usr/config/logstash:/etc/logstash/conf.d --name=elk sebp/elk
 

-d的意思是后台运行容器;

    -p的意思是宿主机端口:容器端口,即将容器中使用的端口映射到宿主机上的某个端口,ElasticSearch的默认端口是9200和9300

    -v的意思是宿主机的文件|文件夹:容器的文件|文件夹,此处将容器中elasticsearch 的数据挂载到宿主机的/var/data/elk上,以防容器重启后数据的丢失;并且将logstash的配置文件挂载到宿主机的/usr/config/logstash目录。

    --name的意思是给容器命名,命名是为了之后操作容器更加方便。
    
    查看镜像:
    docker ps
    
    如果镜像内容为空 则表示上面的命令没有成功启动镜像
    查看镜像对象的日记:
    docker logs -f elk
    
    如果报错:
    ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
        bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    
    报错解析:指的是linux系统限制了单个进程的最大内存。
    修改进程内存上限:
     max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量 

                 处理办法:    #切换到root用户修改

                                  vim /etc/sysctl.conf    #在最后面追加下面内容

                                  vm.max_map_count=655360

                                 执行  sysctl -p
    
    
    重新启动elk容器:
    重启:docker restart elk
    启动:docker start elk

给系统防火墙开启ELK中的K(kinaba)的端口号:5601
    firewall-cmd --add-port=223/tcp --permanent
    firewall-cmd --reload
    systemctl restart firewalld
    
    在浏览器输入:http://ip:5601/app/home 访问kinaba主页 
    
    查看ELK状态和安装的插件:http://ip:5601/status
       
    其他:进入docker容器
    docker exec -it elk /bin/bash
    
    汉化:
    进入路径:
    /opt/kibana/config/
    
    打开kibana.yml在最后面追加下面内容(:和zh-CN中间必须有空格) :
    i18n.locale: zh-CN
    
    输入 exit; 退出docker内部,然后重启容器

5.SpringBoot logback接入ELK

Logstash方式是通过logback.xml 或logback-spring.xml日志文件配置直接接入。首先在pom.xml文件引入jar。配置如下:

      net.logstash.logback

      logstash-logback-encoder

      4.11

logback.xml 或logback-spring.xml日志文件配置直接接入,配置如下:

 

   

       

        ELK-IP地址:5044

 

          {“appname”: “oauth-auth”}

       

   

   

   

   

        >

  ELK-IP地址

        5044

   

通过logback.xml 或logback-spring.xml日志文件配置中加入Logstash,完成root如下:

       

       

       

       

       

       

   

6.查看ELK日志:

1.打开ELK页面 http://ip:5601,点击Management(管理),点击Index Patterns(索引管理),点击Create index pattem按钮,创建索引

2.创建项目索引,log- oauth-auth-*项目自定义名称({“appname”: “oauth-auth”}),

点击Next step(下一步)

3.选择 @timestamp 作为日志文件刷选,点击Create index pattern 索引创建完毕

4.选择菜单栏中Discover,点击索引,选择刚才新建的索引。右边便是项目日记。Logstash方式介绍完毕

最后:后面可能会写一片FileBeat动态索引的接入,看心情吧。

部分内容细节参考:Docker安装ELK并实现JSON格式日志分析 - 晓月寒丶 - 博客园 和 感谢大佬们对互联网的贡献!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/710878.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号