zoukankan      html  css  js  c++  java
  • ELK+Beats日志分析系统部署

     

     

    一、            名词介绍:

    E:ElasticSearch 搜索,简称es

    L:Logstash 管理日志和事件的工具

    K:Kibana 功能强大的数据显示客户端

    Beats 轻量级数据传输组件,这里我们主要使用FileBeat

    二、            应用包准备:

    elasticsearch-6.1.2.tar.gz

    logstash-6.1.2.tar.gz

    kibana-6.1.2-linux-x86_64.tar.gz

    filebeat-6.1.2-linux-x86_64.tar.gz

    jdk-7 以上

    三、            部署安装:

    1.集群部署

     

    如果logstash 压力很大,那么可以考虑filebeat logstash 之间引入rediskafka作为缓冲。

    以后可以使用集群部署,目前先采用如下部署方式:

    elasticsearch+ logstash+ kibana 于同一台机器,假设ip为:192.168.1.228

    filebeat 和应用服务器或其他需要做日志处理的服务器一起部署

    2. 安装JDK 1.7

    省略安装步骤,推荐1.7+版本以上

    java –version

    设置java的环境变量,比如

    vim ~/.bashrc

     

    >> 

    export JAVA_HOME= /home/xiel/Java/jdk1.7.0_45

    export JRE_HOME=${JAVA_HOME}/jre 

    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 

    export PATH=${JAVA_HOME}/bin:$PATH 

    >> 

     

    source ~/.bashrc

    3. 搭建ElasticSearch

    安装

    解压elasticsearch  tar.gz 即可

    配置

    进入 安装目录,修改conf/ elasticsearch.yml :

    修改network.host 为本机ip,如:

    network.host: 192.168.1.228

    其他:

    cluster.name: hyxt_logs_es (集群名称)

    node.name: "node1"(集群结点名称)

    node.master: true(是否可被选为主结点,默认true)

    node.data: true(结点是否存储数据,默认true)

    index.number_of_shards: 5(索引分片数)

    index.number_of_replicas: 1(索引副本数)

    transport.tcp.port: 9300(数据传输IP)

    http.port: 9200(对外访问监听IP)

    启动

    ./ bin/elasticsearch -d (-d:后台启动)

    测试验证

    执行 curl -X GET http://192.168.1.228:9200

    {
      "name" : "node-1",
      "cluster_name" : "hyxt_logs_es",
      "cluster_uuid" : "l_31dzUURiWnLUAI60Zm8w",
      "version" : {
        "number" : "6.1.2",
        "build_hash" : "5b1fea5",
        "build_date" : "2018-01-10T02:35:59.208Z",
        "build_snapshot" : false,
        "lucene_version" : "7.1.0",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
      },
      "tagline" : "You Know, for Search"
    }

    表示安装配置成功。

    常用基本命令:

    查询所有数据:curl http://192.168.1.228:9200/_search?pretty

    集群健康状态:curl -XGET http://192.168.1.228:9200/_cluster/health?pretty

    删除所有数据:curl -X DELETE 'http://192.168.1.228:9200/_all'

    删除指定索引:curl -X DELETE 'http://192.168.1.228:9200/索引名称'

    注: 这里最好不要使用localhost,因为我们需要远程访问,所以,我们应该直接使用对应服务器的ip地址

    elasticsearch 集群部署:

    elasticsearch 配置集群很简单,基本只要简单修改。我们修改elasticsearch.yml文件:

    使得:cluster.name 相同 node.name 唯一ok了!

    4. 搭建Logstash

    安装

    解压logstash tar.gz

    配置

    进入安装目录,为logstash新建一个配置文件config/hy_logstash.conf:

    vi hy_logstash.conf

    配置文件内容如下

    input {

       beats {

          port => 5044

            # sincedb_path => "/app/logstash-5.1.1/.sincedb"

      }

    }

     

    filter {

    if [type] == "app_test" {

       grok {

         match => { "message" => "((?<logdate>%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND})) %{WORD:level} (?<srcCode>[(?:[a-zA-Z0-9-])+][(?:[a-zA-Z0-9-.])+:%{NUMBER}]) - )?(?<srcLog>.+)"  }

        }

        mutate {remove_field => [ "@timestamp", "@version", "message" ]  }

    } else if [type] == "mysql_test" {

      grok {

        match => { "message" => "((?<logdate>%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND})) %{WORD:level} (?<srcCode>[(?:[a-zA-Z0-9-])+][(?:[a-zA-Z0-9-.])+:%{NUMBER}]) - )?(?<srcLog>.+)" }

       }

       mutate {remove_field => [ "@version", "message" ] }

    } else if [type] == "nginx_access_test" {

       grok {

         match => { "message" => "MAINNGINXLOG %{COMBINEDAPACHELOG} %{QS:x_forwarded_for}" }

        # mutate {remove_field => [ "@timestamp", "@version", "message" ]  }

      }

    }

    date {

        match => ["logdate", "yyyy-MM-dd HH:mm:ss.SSS"]

    }

    if "_grokparsefailure" in [tags] {

     

    } else {

       mutate {remove_field => [ "logdate", "@version", "message" ]  }

     

    }

    if !([level]) {

     mutate {

        add_field => { "level" => "other" }

      }

    }

    }

     

    output {

        if "_grokparsefailure" in [tags] {

          file { path => "/var/log/logstash/grokparsefailure-%{type}-%{+YYYY.MM.dd}.log" }

        }

        elasticsearch {

            hosts => ["ES_IP:9200"]

            index => "hy_log_%{type}-%{+YYYY.MM.dd}"

            document_type => "%{type}"

            template_overwrite => true

        }

    }

    配置文件 必须要以”.conf“以尾缀。上面的文件部分配置了 应用日志,mysql日志,nginx访问日志,nginx错误日志

    ES_IP 为安装elasticsearch 服务器的ip

    启动

    nohup  ./bin/logstash -f  config/ hy_logstash.conf  &

    5. 搭建Kibana

    安装

    解压kibana tar.gz

    配置

    进入安装目录,默认配置文件为:config/kibana.yml。可以修改kibana.yml必须要正确配置elasticsearch的地址和索引

    主要修改的地方:

    server.host: "192.168.1.228"

    elasticsearch.url: "http://192.168.1.228:9200"

    启动

    nohup ./bin/kibana &。

    测试验证

    登录访问:http://192.168.1.228:5601(默认端口为5601)

    6. 搭建FileBeat

    安装

    解压filebeat tar.gz

    配置

    进入安装目录,默认配置文件为:filebeat.yml

    配置如下:

    - type: log

    filebeat.prospectors:

    - type: log # 应用日志

      fields_under_root: true

      fields:

        app_id: el_shop_1

        type: app_test

      paths:

        - /www/tomcat-demo/logs/catalina.out

      multiline: # 多行合并,将s+at w开头的行追加到前一行末尾

         pattern: '^s+at w'

         negate: false

         match: after

    - type: log # mysql慢查询日志

      fields_under_root: true

      fields:

        app_id: mysql-slow

        type: beat_test

      paths:

        - /usr/local/filebeat-6.1.2-linux-x86_64/slow.log

      multiline: # 多行合并

         pattern: '^# User@Host: '

         negate: true

         match: after

         timeout: 10s

    - type: log # nginx访问日志

      fields_under_root: true

      fields:

        app_id: nginx

        type: nginx_access

      paths:

        - /usr/local/filebeat-6.1.2-linux-x86_64/access.log

      multiline: # 多行合并

         pattern: '^(d{1,3}){4} - - ['

         negate: true

         match: after

         timeout: 10s

    - type: log # nginx错误日志

      fields_under_root: true

      fields:

        app_id: nginx

        type: nginx_error

      paths:

        - /usr/local/filebeat-6.1.2-linux-x86_64/error.log

      multiline: # 多行合并

         pattern: '^d{4}/d{2}/d{2} '

         negate: true

         match: after

         timeout: 10s

     

    output.logstash:

        enabled: true

        hosts: ["192.168.1.228:5044"]

        index: app-%{[type]}

        compression_level: 3

        #loadbalance: true

     

    注:

    上面的文件部分配置了 应用日志,mysql日志,nginx访问日志,nginx错误日志

    默认的index 跟踪文件是:data/registry

    启动

     nohup ./ filebeat  &

     

    7. 搭建X-Pack

    安装Xpach之前必须先安装好es和kibana

    You must install Elasticsearch and Kibana before you install X-Pack. If you plan to use the X-Pack features in Logstash, you must also install Logstash before you install X-Pack

    然后分别在es,kibana中安装xpack插件:

    es中安装xpack插件

    进入es安装目录,执行:
    bin/elasticsearch-plugin install x-pack

    安装过程中,我们需要进行一些配置,默认统统输入y即可

    参考:

    https://www.elastic.co/guide/en/elasticsearch/reference/6.2/installing-xpack-es.html

    安装完毕需要重启es

    kibana中安装xpack插件

    进入kibana安装目录,执行:
    bin/kibana-plugin install x-pack 

    参考:

    https://www.elastic.co/guide/en/kibana/6.2/installing-xpack-kb.html

    安装完毕需要重启kibana

    logstash中安装xpack插件(可选)

    进入logstash安装目录,执行:
    bin/logstash-plugin install x-pack 

    参考:

    https://www.elastic.co/guide/en/logstash/6.2/installing-xpack-log.html

    安装完毕需要重启logstash

     

    四、            使用Kibana:

    Discover 标签页用于交互式探索你的数据

     

    Visualize 标签页用来设计可视化。你可以保存可视化,以后再用,或者加载合并到dashboard 里。一个可视化可以基于以下几种数据源类型

     

    Dashboard 能让你自由排列一组已保存的可视化。然后你可以保存这个仪表板,用来分享或者重载

     

    Timelion一个崭新的 pipeline aggregation 特性

     

    Dev tools 开发工具

     

    监控:

     

    管理:

  • 相关阅读:
    延迟为程序集签名
    bootshrap会改变IE浏览器滚动条样式
    Spark算子选择策略
    kafka常用系统命令-1
    数据结构-树
    1.PyCharm 用法
    sql 语句用法
    linux命令
    linux命令
    es的相关知识二(检索文档)
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/8485652.html
Copyright © 2011-2022 走看看