zoukankan      html  css  js  c++  java
  • 日志收集系统ELK搭建

    一、ELK简介

        在传统项目中,如果在生产环境中,有多台不同的服务器集群,如果生产环境需要通过日志定位项目的Bug的话,需要在每台节点上使用传统的命令方式查询,这样效率非常低下。因此我们需要集中化的管理日志,ELK则应运而生。ELK=ElasticSeach+Logstash+Kibana,日志收集原理如下所示。

    1、每台服务器集群节点安装Logstash日志收集系统插件

    2、每台服务器节点将日志输入到Logstash中

    3、Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中

    4、浏览器使用安装Kibana查询日志信息 

    二、Elastic Search

    2.1 简介

        ElasticSearch是一个分布式搜索服务,提供的是一组Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能。是目前全文搜索引擎的首选,可以快速的存储、搜索和分析海量数据。

    2.2 安装

        1.官网下载最新版本,地址是:https://www.elastic.co/cn/downloads/elasticsearch,下载下来的最新版本是:elasticsearch-7.4.2-linux-x86_64.tar.gz;

        2.解压:# tar zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz

        3. # cd elasticsearch-7.4.2,配置config里的elasticsearch.yml文件,配置如下。

     cluster.name: es-application
     node.name: es-node-1
     network.host: 0.0.0.0
     http.port: 9200
     discovery.seed_hosts: ["192.168.1.169"]
     cluster.initial_master_nodes: ["es-node-1"]
     path.data: /var/data/es
     path.logs: /var/log/es

        4.常见问题

       (1)can not run elasticsearch as root

         解决思路:为了安全不允许使用root用户启动,需要新建一个es的账户,如下所示。

    # adduser es
    # passwd es
    # chown -R  es elasticsearch-7.4.2 
    # su elasticsearch
    启动ES:
    # ./bin/elasticsearch

        (2)max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] 

          解决思路: 切换到root用户修改   # vim /etc/security/limits.conf,在最后面追加下面内容,其中es 是启动ES的用户,不是root。

    es hard nofile 65536
    es soft nofile 65536

          (3)max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

            解决思路:切换到root用户修改配置sysctl.conf

    #vi /etc/sysctl.conf
    添加下面配置:
    vm.max_map_count=655360
    并执行命令:
    sysctl -p

    2.3 启动

    后台启动:./elasticsearch -d
    停止命令:./elasticsearch -stop

    2.4 验证

        访问 ip:9200,成功显示如下json信息

    2.5 ES Head

        推荐安装chrome插件,也可以下载安装包进行安装。

    三、Logstash

    3.1 简介

         Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。

    3.2 安装与配置

        1.解压logstash-7.4.2,修改logstash-7.4.2/config的logstash.conf文件;
        2.logstash.conf文件配置如下:

    input {
    tcp {
    mode => "server"
    host => "192.168.1.169"
    port => 4560
    codec => json_lines
    }
    }
    output {
    elasticsearch {
    hosts => "192.168.1.169:9200"
    index => "springboot-logstash-%{+YYYY.MM.dd}"
    }
    }

        3.执行命令:# ../bin/logstash -f logstash.conf

    3.3 Spring boot集成Logstash

        1.pom文件里引入jar包

    <!--logstash-->
    <dependency>
       <groupId>net.logstash.logback</groupId>
       <artifactId>logstash-logback-encoder</artifactId>
       <version>6.2</version>
    </dependency>

        2.修改logback-spring.xml

    <!--logstash地址-->
    <springProperty scope="context" name="LOGSTASH_ADDRESS" source="logstash.address"/>
    
    <!--输出到logstash的appender-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--可以访问的logstash日志收集端口-->
        <destination>${LOGSTASH_ADDRESS}</destination>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        "app": "java-study",
                        "level": "%-5level",
                        "thread": "%thread",
                        "logger": "%logger{50} %M %L ",
                        "message": "%msg"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
    
    <root level="INFO">
        <appender-ref ref="LOGSTASH"/>
    </root>

        3.yml添加配置

    logstash:
         address: 192.168.1.169:4560

    四、Kibana

    4.1 简介

        Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

    4.2 安装与配置

        1.解压kibana-7.4.2-linux-x86_64.tar.gz,并修改配置文件kibana.yml 

    server.port: 5601
    server.host: "192.168.1.169"
    server.name: "kibana"
    elasticsearch.hosts: ["http://192.168.1.169:9200"]
    xpack.reporting.encryptionKey: "a_random_string"
    xpack.security.encryptionKey: "something_at_least_32_characters"

        2.执行命令 # ./kibana --allow-root

        3.配置日期格式

        4.create index pattern

        5.保存自定义筛选字段,供后续筛选

  • 相关阅读:
    js中属性和方法的类型和区别
    深入理解js构造函数
    null和undefined区别(转)
    理解闭包 js回收机制
    php:判断 是否开启 SSL,CURL,ZIP,GD2,MYSQL,是否安装MEMCACHED
    php:封装了个时间函数,返回类似“1分钟前发布”,“5小时前发布”,“3年前发布”
    php:获取一个表不含text类型的全部字段
    php:两个文件夹递归地比较,没有的文件自动复制过去
    php:php相关的函数或用法记录
    js:常用到的js操作记录
  • 原文地址:https://www.cnblogs.com/TechSnail/p/11941106.html
Copyright © 2011-2022 走看看