美文网首页
分布式实时日志分析平台ELK的部署与安装

分布式实时日志分析平台ELK的部署与安装

作者: holy_z | 来源:发表于2018-02-05 14:16 被阅读157次

    一、概述

    ELK 已经成为目前最流行的集中式日志解决方案,它主要是由Logstash、Elasticsearch、Kibana三个组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决方案,本文主要讲ELK最常用的部署架构的组件安装,以及安装过程中的问题解决,后续文章会详细介绍ELK的常用架构,以及在生产环境中相关问题的解决方法。

    image

    二、安装部署

    注:这里安装的ELK组件版本为5.6,需要JDK1.8及以上版本支持。

    1、创建ELK用户

    # groupadd elk //创建用户组
    # useradd -g elk elk //创建用户,并指定用户组
    # passwd elk //修改用户密码
    # chown -R elk [ELK组件的安装目录] //给用户elk分配目录权限
    

    2、从官网分别下载ELK组件

    filebeat-5.6.3-linux-x86_64.tar.gz

    logstash-5.6.3.tar.gz

    elasticsearch-5.6.3.tar.gz

    elasticsearch-head-master.zip

    kibana-5.6.3-linux-x86_64.tar.gz

    官网地址:https://www.elastic.co/cn/products

    3、安装Elasticsearch

    # tar -zxvf elasticsearch-5.6.3.tar.gz
    

    3.1 启动

    # ./bin/elasticsearch
    

    3.2 Elasticsearch启动相关问题解决

    (1)启动Elasticsearch5.6时报:can not run elasticsearch as root 错误!这里一般以rpm方式安装的话不存在该问题,如果安装的是tag.gz包,就会报该错误,解决办法,新建一个用户即可。

    (2)启动Elasticsearch5.6报:process likely too low, increase to at least 错误,原因是新建的用户默认的可创建最大进程数被限制,解决方法:

    1. 切换到root用户
    2. vi /etc/security/limits.conf

    添加如下内容:

    * soft nofile 65536
    * hard nofile 131072
    * soft nproc 2048
    * hard nproc 4096
    

    参数解释:

    soft nproc: 单个用户可用的最大进程数量(软限制)

    hard nproc: 单个用户可用的最大进程数量(硬限制)

    soft nofile:单个用户可打开的最大文件描述符数量(软限制)

    hard nofile:单个用户可打开的最大文件描述符数量(硬限制)

    (3)Elasticsearch5.6启动后9200端口无法被访问,请修改config/elasticsearch.yml 文件,修改network.host项:network.host: localhost,或填写本机真实的IP

    4、安装Elasticsearch-head-master

    4.1 安装该插件后可在web页面查看Elasticsearch的相关信息,由于该插件运行的环境要依赖nodejs,所以需要先安装nodejs

    (1)下载node-v8.9.0-linux-x64.tar.xz软件包

    (2)$ xz -d node-v8.9.0-linux-x64.tar.xz //解压软件包

    (3)$ tar -xvf node-v8.9.0-linux-x64.tar

    (4)建立node与npm命令的软链接,这样可在任何地方访问该命令了

    $ ln -s /home/project/elk/node-v8.9.0-linux-x64/bin/npm /usr/local/bin/npm

    $ ln -s /home/project/elk/node-v8.9.0-linux-x64/bin/node /usr/local/bin/node

    (5)验证是否安装成功:$ node -v

    4.2 下载elasticsearch-head包:https://github.com/mobz/elasticsearch-head

    (1)解压下载好的包

    (2)$ cd elasticsearch-head-master/

    (3)$ npm install -g cnpm --registry=https://registry.npm.taobao.org //安装依赖包

    (4)安装好后启动该插件,$ npm run start

    (5)该插件默认端口为9100,打开后发现无法连接到Elasticsearch,在Elasticsearch版本5以上需要在Elasticsearch配置文件中加如下参数即可:

    http.cors.enabled: true

    http.cors.allow-origin: "*"

    image

    5、安装Logstash

    # tar -zxvf logstash-5.6.3.tar.gz
    

    5.1 Logstash相关命令

    (1)测试启动,看配置文件是否正确:bin/logstash -f first-pipeline.conf --config.test_and_exit

    (2)以config.reload.automatic方式启动,这样在修改配置文件后无需重新启动,它会自动加载:bin/logstash -f first-pipeline.conf --config.reload.automatic

    (3)列出所有已安装的插件:bin/logstash-plugin list

    (4)安装外部的插件:bin/logstash-plugin install [插件名称]

    (5)更新所有插件:bin/logstash-plugin update

    (6)更新指定插件:bin/logstash-plugin update logstash-output-kafka

    (7)删除指定插件:bin/logstash-plugin remove logstash-output-kafka

    6、安装Filebeat

    # tar -zxvf filebeat-5.6.3-linux-x86_64.tar.gz
    

    (1)启动:./filebeat -e -c filebeat.yml -d "publish"

    (2)Filebeat的输出方向为Elasticsearch,默认启动Filebeat加载的ES索引模板是 filebeat.template.json,如:

    output.elasticsearch: hosts: ["localhost:9200"] template.name: "filebeat" template.path: "filebeat.template.json" template.overwrite: false

    默认情况下,如果一个模板已经存在于索引中,那么它就不会被覆盖。要覆盖现有的模板,需要设置

    template.overwrite: true

    如:Filebeat的输出方向为Logstash,则需手动指定加载的ES索引模板,手动载入ES模板命令:

    url -XPUT 'http://localhost:9200/_template/filebeat' -d@/etc/filebeat/filebeat.template.json

    删除索引模板:curl -XDELETE 'http://localhost:9200/filebeat-*'

    (3)启用已经构建好的模块,-modules项后可填写多个模块,第一次启动需要设置-setup,之后无需-setup

    ./filebeat -e -modules=system,nginx,mysql -setup

    注:命令参数解释

    • -E <setting>=<value> //覆盖特定的配置设置,如:

    ./filebeat -c filebeat.yml -E name=mybeat

    • -c <file> //指定配置文件的路径

    详细参数请看:https://www.elastic.co/guide/en/beats/filebeat/current/command-line-options.html

    (4)使Filebeat重新从指定日志文件的开头读取数据

    1. 先停掉Filebeat
    2. rm data/registry

    7、安装Kibana

    # tar kibana-5.6.3-linux-x86_64.tar.gz
    

    7.1 问题解决

    启动kibana后在浏览器中无法访问,解决方法:修改kibana.yml文件,修改server.host值 为 "localhost"

    7.2 查询技巧:

    (1)要精确查询字符串请使用双引号,如查询"hello, how are you"

    (2)* 表示匹配0到多个字符,如 hello*

    (3)? 表示匹配单个字符,如h?o

    (4)+ 表示搜索结果中必须包含此项,- 表示搜索中不包含此项

    (5)运算符AND、OR、NOT表示与或非,注意必须大写,如 hello AND you,表示查询结果中必须同时包含hello与you

    (6)@version:1 表示查询@version字段值为1的结果项

    (7)@version:[1 TO 10] 表示查询@version的范围在1到10的结果项

    (8)转义特殊字符 + – && || ! ( ) { } [ ] ^ ” ~ * ? : \ 转义特殊字符只需在字符前加上符号\

    8、配置

    8.1 配置Logstash

    新建logstash.conf配置文件,内容为:

    input {
      beats {
        port => 5044 //配置启动端口为5044
    
      }
    }
    
    output {
      elasticsearch { //配置输出目的地为elasticsearch
        hosts => "localhost:9200"
      }
    }
    

    8.2 配置Filebeat

    新建filebeat-test.yml,内容为:

    filebeat.prospectors:
      -
        paths:
          - /home/project/elk/logs/test.log //日志路径
        input_type: log
        multiline: //日志多行内容合并
          pattern: '^\['
          negate: true
          match: after
        document_type: test //文档类型,可用于索引的构建
    
    output:
      logstash: //输出目的地为logstash
        hosts: ["localhost:5044"]
    

    9、运行

    分别启动:Elasticsearch -> Logstash -> Filebeat -> Kibana

    image

    三、总结

    本文主要介绍了ELK相关组件的安装,和安装过程中相关问题的解决,以及各组件的使用技巧,这里建议多看看Kibana中的查询技巧,可以在生产环境根据日志来快速定位问题。

    转自:https://my.oschina.net/feinik/blog/1580087

    相关文章

      网友评论

          本文标题:分布式实时日志分析平台ELK的部署与安装

          本文链接:https://www.haomeiwen.com/subject/zxabzxtx.html