分布式日志收集-Elasticsearch+Logstash+Kibana

  • 传统系统日志收集的问题
           在传统项目中,如果在生产环境中,有多台不同的服务器集群,如果生产环境需要通过日志定位项目的Bug的话,需要在每台节点上使用传统的命令方式查询,这样效率非常底下。
           通常,日志被分散在储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
           集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
    命令方式:
         tail -n 300 myes.log | grep 'node-1'   
         tail -100f myes.log
  • ELK分布式日志收集系统介绍 
           ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
            Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 
            Kibana是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 
  •  ELK分布式日志收集原理 
    1、每台服务器集群节点安装Logstash日志收集系统插件
    2、每台服务器节点将日志输入到Logstash中
    3、Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中
    4、浏览器使用安装Kibana查询日志信息
  • Logstash介绍
            Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
    核心流程:Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。
  • 安装个Elasticsearch+Logstash+Kibana
     注意: Elasticsearch+Logstash+Kibana版本要一样,我这里都是6.4.3的!!!  虚拟机内存最少2G以上,我的是3G!!!
  1. 安装ElasticSearch
    参考第一篇文章的介绍: https://blog.csdn.net/xiaobo5264063/article/details/100626452
  2. 安装Logstash 
     下载logstash,上传到usr/local目录下     注意:版本要一样
     分布式日志收集-Elasticsearch+Logstash+Kibana_第1张图片
     解压: 
    tar -zxvf logstash-6.4.3.tar.gz
  3. 安装Kibana
     参考第一篇文章的介绍: https://blog.csdn.net/xiaobo5264063/article/details/100626452
  4. 配置文件
    创建elk.conf配置文件,文件内容如下 , 将文件上传到/usr/local/logstash-6.4.3/config
    input {
        # 从文件读取日志信息 输送到控制台
        file {
            path => "/usr/local/elasticsearch6.4/logs/mytest.log" ## 你的es日志路径
            codec => "json" ## 以JSON格式读取日志
            type => "elasticsearch" ## 类型 可自定义
            start_position => "beginning"
        }
    }
    
    # filter {
    #
    # }
    
    output {
        # 标准输出 
        # stdout {}
        # 输出进行格式化,采用Ruby库来解析日志   
         stdout { codec => rubydebug }
    	 elasticsearch {
            hosts => ["192.168.0.111:9200"]  ## es的服务地址
            index => "es-%{+YYYY.MM.dd}" ## es的索引,以日期来, 默认doc类型
        }	 
    }
     
  5. 启动测试
     开个窗口1启动logstash 
    // root用户启动logstash
    cd /usr/local/logstash-6.4.3/bin
    // 启动logstash, 并加载elk.conf文件
    ./logstash -f ../config/elk.conf

     开个窗口2启动elasticsearch
    // 切换非root用户
    su xiaobo
    // 进入elasticsearch6.4.3
    cd /usr/local/elasticsearch6.4
    // 启动
    bin/elasticsearch
     开个窗口3启动kibana
    // 进入kibana6.4.3
    cd /usr/local/kibana6.4
    bin/kibana

     

  6. 测试1-使用命令查询
     登录kibana http://192.168.0.111:5601
     
    ## 根据索引查询
    GET /es-2019.09.15/_search
    ## 根据索引类型查询
    GET /es-2019.09.15/_mapping
    ## 根据关键字(node-1)查询
    GET /es-2019.09.15/_search
    {
      "query": {
        "match": {
          "message":"node-1"
        }
      }
    }
    分布式日志收集-Elasticsearch+Logstash+Kibana_第2张图片
     
  7. 测试2-使用图形化界面查询 
     登录kibana http://192.168.0.111:5601 -->选择左侧'Dashboard' --> Index pattern输入'es*' -->点击'Next step'
     分布式日志收集-Elasticsearch+Logstash+Kibana_第3张图片
     
     
      
     选择'@timestamp' --> 'Create index pattern'分布式日志收集-Elasticsearch+Logstash+Kibana_第4张图片
     
  8. 测试3--通过时间查看
     分布式日志收集-Elasticsearch+Logstash+Kibana_第5张图片

你可能感兴趣的:(分布式日志收集-Elasticsearch+Logstash+Kibana)