• EFK日志系统教程安装及配置


                             EFK日志系统安装文档

    1. 概述1

    1.1. 配置规划 1

    1.2. 各软件版本 1

    1.3. 日志处理流程 1

    1.4. 各服务启动顺序 2

    1.5. 架构 2

    1.6. JDK准备 2

    1.7. 新建EFK文件夹 2

    1.8. 下载软件 3

    1.8.1. 进入下载地址 3

    1.8.2. 点击download按钮 3

    2. ElasticSearch安装4

    2.1. 解压安装包到/opt/EFK 4

    2.2. 在根路径下创建es用户组及用户 4

    2.2.1. 创建用户组 5

    2.2.2. 创建用户 5

    2.2.3. 更改EFK所属用户 5

    2.3. 创建data数据目录和日志目录,使用es用户 5

    2.4. 修改配置文件 6

    2.5. 修改 Linux下/etc/security/limits.conf文件设置 8

    2.6. 修改配置 Linux下/etc/security/limits.d/90-nproc.conf文件设置 9

    2.7. 修改配置 Linux下/etc/sysctl.conf文件设置 9

    2.8. 启动 9

    3. Node.js安装11

    3.1. 下载Node.js 11

    3.2. 解压Node.js 11

    3.3. 修改环境变量 12

    3.4. 测试 12

    4. ElasticSearch-head插件安装12

    4.1. 采用nodejs安装 12

    4.2. 下载ElasticSearch-head 12

    4.3. 解压 13

    4.4. 安装Node.js 13

    4.5. npm install -g grunt-cli 13

    4.6. npm install 13

    4.7. 更改配置信息 13

    4.7.1. elasticsearch-5x下的 config/elasticsearch.yml 13

    4.7.2. elasticsearch-head下Gruntfile.js 14

    4.7.3. 修改连接地址 14

    4.8. grunt server 15

    4.9. 访问 15

    5. Kibnan安装15

    5.1. 解压 15

    5.2. 更改配置信息 15

    5.3. 运行 16

    5.4. 访问 16

    5.5. 汉化 17

    5.5.1. 下载汉化包 17

    5.5.2. 解压汉化包 17

    5.5.3. 运行main.pay文件 17

    6. FileBeat安装18

    6.1. 解压 18

    6.2. 创建配置文件 18

    6.3. 启动 19

    7. Kafka安装20

    7.1. 下载 20

    7.2. 解压 20

    7.3. 修改配置文件 20

    7.4. 启动zookeeper 21

    7.5. 启动kafka 22

    7.6. 创建test主题 22

    8. Logstash安装22

    8.1. 解压 22

    8.2. 创建配置文件 23

    8.3. 启动 25

    9. 常见问题25

    9.1. ElasticSearch问题 25

     

    1. 概述
      1. 配置规划

    机器名称

    主从关系

    ip

    cdh-1

    10.168.1.44

    cdh-2

    10.168.0.126

    cdh-3

    10.168.0.127

    cdh-4

    10.168.0.128

    cdh-5

    10.168.0.130

      1. 各软件版本

    软件名称

    版本号

    插件

    Elasticsearch

    6.3.1

     

    Logstash

    6.3.1

     

    Kibana

    6.3.1

     

    Filebeat

    6.3.1

     

    Kafka

    2.11-1.1.0

     

    NodeJS

    8.11.3

     

    zookeeper

    3.4.5

     

      1. 日志处理流程

    filebeat --> kafka --> logstash --> elasticsearch

      1. 各服务启动顺序

    启动顺序不能颠倒,filebeat一定放在最后启动。否则会出现logstash读取不到kafka数据的问题。

    1 、elasticsearch、kafka、kibana

    1. logstash
    2. filebeat
      1. 架构

      1. JDK准备

    5台机器都需安装1.8以上JDK,因搭建CDH集群时各机器已安装JDK1.8.0_171,因此不再重复安装。

      1. 新建EFK文件夹

    5台机器都新建/opt/EFK文件夹,EFK相关软件都放到此文件夹下面。

    mkdir EFK

      1. 下载软件

    elastic系列软件下载地址:https://www.elastic.co/downloads

    其中,Elasticsearch、Logstash、Kibana、Filebeat从地址下载。

    此处以下载ElasticSearch为例,其他软件都参考步骤下载最新版本即可。

        1. 进入下载地址

    浏览器输入https://www.elastic.co/downloads进入下载地址

        1. 点击download按钮

    点击download按钮,进入下载类型选择界面。点击下图中圈出的TAR选项,下载最新版本。本次安装下载的版本为elasticsearch-6.3.1.tar.gz

    1. ElasticSearch安装
      1. 解压安装包到/opt/EFK

    5台机器都需解压安装包。

    包:elasticsearch-6.3.1.tar.gz

    在/opt/EFK解压:

    tar -zxvf elasticsearch-6.3.1.tar.gz

      1. 在根路径下创建es用户组及用户

    回到/opt路径,5台机器依次创建相同的用户组及用户。

    因elasticsearch版本在6.0之后不允许用root用户启动,故必须创建新的用户。

        1. 创建用户组

    命令:

    groupadd es

        1. 创建用户

    命令:

    useradd es -g es -p elasticsearch

        1. 改EFK所属用户

    命令:

    chown -R es:es EFK

      1. 创建data数据目录和日志目录,使用es用户

    5台机器都在opt/EFK路径下创建data目录和日志数据目录。

    切换es用户:

    su es

    创建data目录:

    mkdir -p /opt/EFK/elasticsearch_data/data/

    创建log目录:

    mkdir -p /opt/EFK/elasticsearch_data/logs/

     

      1. 修改配置文件

    cdh-1机器:vim opt/EFK/elasticsearch-6.3.1/config/elasticsearch.yml

    配置内容:

    cluster.name: futuristEs

    node.name: es-1

     # 是否为master

    node.master: true

    # 是否为数据节点

    node.data: true

    # 数据目录

    path.data: /opt/EFK/elasticsearch_data/data

    # 日志目录

    path.logs: /opt/EFK/elasticsearch_data/logs

    bootstrap.memory_lock: false

    bootstrap.system_call_filter: false

    # 本机IP

    network.host: 0.0.0.0

    # 本机http端口

    http.port: 9200

    # 指定集群中的节点中有几个有master资格的节点

    discovery.zen.minimum_master_nodes: 1

    # 指定集群中其他节点的IP

    discovery.zen.ping.unicast.hosts: ["10.168.1.44","10.168.0.126","10.168.0.127","10.168.0.128","10.168.0.130"]

    # ---------------------------------- 插件 -----------------------------------

    # 下面两行配置为haad插件配置,5台服务器一致.

    http.cors.enabled: true

    http.cors.allow-origin: "*"

    其余四台机器:vim opt/EFK/elasticsearch-6.3.1/config/elasticsearch.yml

    其中,node.name分别为:es-2,es-3,es-4,es-5。

    master为false,其余都一样。

    cluster.name: futuristEs

    node.name: es-2

     # 是否为master

    node.master: false

    # 是否为数据节点

    node.data: true

    # 数据目录

    path.data: /opt/EFK/elasticsearch_data/data

    # 日志目录

    path.logs: /opt/EFK/elasticsearch_data/logs

    bootstrap.memory_lock: false

    bootstrap.system_call_filter: false

    # 本机IP

    network.host: 0.0.0.0

    # 本机http端口

    http.port: 9200

    # 指定集群中的节点中有几个有master资格的节点

    discovery.zen.minimum_master_nodes: 1

    # 指定集群中其他节点的IP

    discovery.zen.ping.unicast.hosts: ["10.168.1.44","10.168.0.126","10.168.0.127","10.168.0.128","10.168.0.130"]

    # ---------------------------------- 插件 -----------------------------------

    # 下面两行配置为haad插件配置,5台服务器一致.

    http.cors.enabled: true

    http.cors.allow-origin: "*"

      1. 修改 Linux下/etc/security/limits.conf文件设置

    5台机器都修改配置,最后配置如下

    vim /etc/security/limits.conf

    * soft nofile 261444

    * hard nofile 262144

    es soft memlock unlimited

    es hard memlock unlimited

      1. 修改配置 Linux下/etc/security/limits.d/90-nproc.conf文件设置

    5台机器都修改配置,最后配置如下

    vim /etc/security/limits.d/90-nproc.conf

    * soft nproc unlimited

    root soft nproc unlimited

      1. 修改配置 Linux下/etc/sysctl.conf文件设置

    5台机器都修改配置,最后配置如下

    vim /etc/sysctl.conf

    vm.max_map_count = 262144

    并执行命令:

    sysctl -p

     

      1. 启动

    5台机器分布进入/opt/EFK/elasticsearch-6.3.1/bin路径

    ./elasticsearch

    后台长期启动

    ./elasticsearch -d

    查找ES进程

    ps -ef | grep elastic

    杀掉ES进程

    kill -9 2382(进程号)

    重启ES

    sh elasticsearch -d

    在浏览区输入:http://10.168.0.127:9200/

    返回如下类似结果为正常启动

    {

      "name" : "es-3",

      "cluster_name" : "futuristEs",

      "cluster_uuid" : "_na_",

      "version" : {

        "number" : "6.3.1",

        "build_flavor" : "default",

        "build_type" : "tar",

        "build_hash" : "eb782d0",

        "build_date" : "2018-06-29T21:59:26.107521Z",

        "build_snapshot" : false,

        "lucene_version" : "7.3.1",

        "minimum_wire_compatibility_version" : "5.6.0",

        "minimum_index_compatibility_version" : "5.0.0"

      },

      "tagline" : "You Know, for Search"

    }

    1. Node.js安装
      1. 下载Node.js

    打开官网下载链接:https://nodejs.org/en/download/ ,下载的版本为:node-v8.11.3-linux-x64.tar.xz

      1. 解压Node.js

    在cdh-1机器上解压node-v8.11.3-linux-x64.tar.xz。

    opt/EFK路径下:

    tar -xvf node-v8.11.3-linux-x64.tar.xz

     

      1. 修改环境变量

    修改 /etc/profile

    vim /etc/profile

    export NODEJS_HOME=/opt/EFK/node-v8.11.3-linux-x64

    export PATH=$PATH:$JAVA_HOME/bin:$NODEJS_HOME/bin

    执行source /etc/profile

    source  /etc/profile

     

      1. 测试

    出现v8.11.3说明测试成功

     

    node -v

    v8.11.3

     

    1. ElasticSearch-head插件安装
      1. 采用nodejs安装

    6.X中,elasticsearch-head

    不能放在elasticsearch的 plugins、modules 目录下

    不能使用 elasticsearch-plugin install

      1. 下载ElasticSearch-head

    下载地址https://github.com/mobz/elasticsearch-head

      1. 解压

    在cdh-1机器上解压elasticsearch-head-master.zip。

    opt/EFK路径下:

    unzip elasticsearch-head-master.zip

     

      1. 安装Node.js

    根据Node.js安装,进行安装node.js

      1. npm install -g grunt-cli

    /opt/EFK/elasticsearch-head-master路径下:

    npm install -g grunt-cli

      1. npm install

    /opt/EFK/elasticsearch-head-master路径下:

    npm install

      1. 更改配置信息
        1. elasticsearch-5x下的 config/elasticsearch.yml

    http.cors.enabled: true

    http.cors.allow-origin: "*"

        1. elasticsearch-head下Gruntfile.js

    connect: {

            server: {

                options: {

                    hostname: '0.0.0.0',

                    port: 9100,

                    base: '.',

                    keepalive: true

                }

            }

        }

        1. 修改连接地址

    最后配置如下

    vim /opt/EFK/elasticsearch-head-master/_site/app.js

    找到如下代码

    this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";

    更改为

    this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://10.168.1.44:9200";

      1. grunt server

    /opt/EFK/elasticsearch-head-master路径下测试启动

    grunt server

    后台长期启动

    nohup grunt server &exit

      1. 访问

    访问地址:http://10.168.1.44:9100/

     

    1. Kibnan安装
      1. 解压

    注意版本要和es版本相同 。

    在cdh-1机器上解压kibana-6.3.1-linux-x86_64.tar.gz。

    opt/EFK路径下:

    tar -zxvf kibana-6.3.1-linux-x86_64.tar.gz

      1. 更改配置信息

    最后配置如下

    vim /opt/EFK/kibana-6.3.1-linux-x86_64/config/kibana.yml

    elasticsearch.url: "http://10.168.1.44:9200" # kibana监控哪台es机器

    server.host: "10.168.1.44" # kibana运行在哪台机器

      1. 运行

    Kibana6.3版本默认自带X-pack插件,故不需再次安装。

    /opt/EFK/kibana-6.3.1-linux-x86_64/bin路径下

    ./kibana

    长期启动

    nohup ./kibana &exit

    查找进程号

    fuser -n tcp 5601

    杀死进程号

    kill -9 13265

      1. 访问

    访问地址:http://10.168.1.44:5601

     

      1. 汉化
        1. 下载汉化包

    github上有汉化的项目,地址:https://github.com/anbai-inc/Kibana_Hanization

        1. 解压汉化包

    /opt/EFK/kibana-6.3.1-linux-x86_64路径下

    unzip Kibana_Hanization-master.zip

        1. 运行main.pay文件

    命令很简单,没错这是python脚本

    /opt/EFK/kibana-6.3.1-linux-x86_64/Kibana_Hanization-master路径下

    python main.py "/opt/EFK/kibana-6.3.1-linux-x86_64/"

    出现“恭喜,Kibana汉化完成!“表示成功

    访问地址:http://10.168.1.44:5601

     

    1. FileBeat安装
      1. 解压

    注意版本要和es版本相同 。

    在5台机器上解压filebeat-6.3.1-linux-x86_64.tar.gz。

    opt/EFK路径下:

    tar -zxvf filebeat-6.3.1-linux-x86_64.tar.gz

      1. 创建配置文件

    在/opt/EFK/filebeat-6.3.1-linux-x86_64路径下:

    vim filebeat.yml

    配置内容为:(path代表收集哪些文件夹下面的日志)

     

    filebeat.inputs:

    - type: log

      enabled: false

      paths:

        - /var/log/audit/audit.log

    filebeat.config.modules:

      path: ${path.config}/modules.d/*.yml

      reload.enabled: false

     

    setup.template.settings:

      index.number_of_shards: 5

    setup.kibana:

      host: "10.168.1.44:5601"

    output.kafka:

       enabled: true

       hosts: ["10.168.1.44:9092","10.168.0.126:9092","10.168.0.127:9092","10.168.0.128:9092","10.168.0.130:9092"]

       topic: 'futurist'

     

     

      1. 启动

    /opt/EFK/filebeat-6.3.1-linux-x86_64路径下:

    ./filebeat -e -c filebeat.yml -d "publish"

    长期启动:

    nohup ./filebeat -e -c filebeat.yml &

    查找进程ID并kill掉:

    ps -ef |grep filebeat

    kill -9  进程号

    1. Kafka(cdh集成)安装
      1. 下载

     csd包:http://archive.cloudera.com/csds/kafka/

    这里下载的版本为:KAFKA-1.2.0.jar

     parcel包: http://archive.cloudera.com/kafka/parcels/latest/ 

    这里下载的版本为:KAFKA-3.1.0-1.3.1.0.p0.35-el6.parcelKAFKA-3.1.0-1.3.1.0.p0.35-el6.parcel.sha1

    其中,KAFKA-3.1.0-1.3.1.0.p0.35-el6.parcel.sha1后缀需要改为.sha

      1. 集成实现
        1. 关闭集群,关闭cm服务

    假如不关闭cm服务,会出现在添加kafka服务时找不到相关的服务描述。

        1. 上传包

    将csd包放到cm安装节点下的 /opt/cloudera/csd目录下,如图 :

    将parcel包放到cm安装节点下的 /opt/cloudera/parcel-repo目录下,如图:

        1. 启动cm服务
        2. 分配并激活percel包

     

        1. 添加kafka服务

     

    其中,brokerId在此次安装中由于的对应关系为(由于之前本地安装过kafka,故brokerId需按下面配置,正常来说自动生成,不需配置):

    主机

    brokerId

    cdh-1

    1

    cdh-2

    2

    cdh-3

    5

    cdh-4

    3

    cdh-5

    4

     

        1. 启动kafka

     

    1. Kafka(本地)安装
      1. 下载

    下载地址:https://kafka.apache.org/downloads

    这里下载的版本为:kafka_2.11-1.1.0.tgz

      1. 解压

    在5台机器上解压kafka_2.11-1.1.0.tgz。

    opt/EFK路径下:

    tar -zxvf kafka_2.11-1.1.0.tgz

      1. 修改配置文件

    cdh-1机器修改配置,最后配置如下

    vim /opt/EFK/kibana-6.3.1-linux-x86_64/config

    broker.id=1

    listeners=PLAINTEXT://10.168.1.44:9092

    zookeeper.connect=10.168.1.44:2181

    cdh-2机器修改配置,最后配置如下

    vim /opt/EFK/kibana-6.3.1-linux-x86_64/config

    broker.id=2

    listeners=PLAINTEXT://10.168.0.126:9092

    zookeeper.connect=10.168.0.126:2181

    cdh-3机器修改配置,最后配置如下

    vim /opt/EFK/kibana-6.3.1-linux-x86_64/config

    broker.id=3

    listeners=PLAINTEXT://10.168.0.127:9092

    zookeeper.connect=10.168.0.127:2181

    cdh-4机器修改配置,最后配置如下

    vim /opt/EFK/kibana-6.3.1-linux-x86_64/config

    broker.id=4

    listeners=PLAINTEXT://10.168.0.128:9092

    zookeeper.connect=10.168.0.128:2181

    cdh-5机器修改配置,最后配置如下

    vim /opt/EFK/kibana-6.3.1-linux-x86_64/config

    broker.id=5

    listeners=PLAINTEXT://10.168.0.130:9092

    zookeeper.connect=10.168.0.130:2181

      1. 启动zookeeper

    $ bin/zookeeper-server-start.sh config/zookeeper.properties

    默认使用的2181端口,可在配置文件修改。

      1. 启动kafka

    /opt/EFK/kafka_2.11-1.1.0路径下:

    ./bin/kafka-server-start.sh config/server.properties

    长期启动:

    nohup ./bin/kafka-server-start.sh config/server.properties &

    查找进程号

    fuser -n tcp 9092

    杀死进程号

    kill -9 13265

      1. 创建test主题

    /opt/EFK/kafka_2.11-1.1.0路径下:

    bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic test

    增加分区

    bin/kafka-topics.sh --alter --zookeeper 10.168.0.126:2181 --topic futurist --partitions 5

    1. Logstash安装
      1. 解压

    注意版本要和es版本相同 。

    在cdh-1机器上解压logstash-6.3.1.tar.gz。

    opt/EFK路径下:

    tar -zxvf logstash-6.3.1.tar.gz

      1. 创建配置文件

    在/opt/EFK/logstash-6.3.1/config路径下:

    vi kafka.conf

    配置内容为:

    input {

        kafka {

            bootstrap_servers => ["10.168.1.44:9092,10.168.0.126:9092,10.168.0.127:9092,10.168.0.128:9092,10.168.0.130:9092"]

    group_id =>"1"

            topics => ["test"]  

    consumer_threads => 5

    decorate_events =>true

    codec => "json"

        }

    }

    filter {

    grok {match => { "message" => "%{DATA:timestamp}\|%{IP:serverIp}\|%{IP:clientIp}\|%{DATA:logSource}\|%{DATA:userId}\|%{DATA:reqUrl}\|%{DATA:reqUri}\|%{DATA:refer}\|%{DATA:device}\|%{DATA:textDuring}\|%{DATA:duringTime:int}\|\|"}}

    }

    output {

            elasticsearch {

            hosts => ["10.168.1.44:9200","10.168.0.126:9200","10.168.0.127:9200","10.168.0.128:9200","10.168.0.130:9200"]  

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

    codec => "json"

        }

    }

      1. 启动

    /opt/EFK/logstash-6.3.1路径下:

    ./bin/logstash -f config/kafka.conf

    长期启动:

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

    查找ES进程

    ps -ef | grep logstash

    杀掉ES进程

    kill -9 2382(进程号)

    1. 常见问题
      1. ElasticSearch问题

    问题一:警告提示

    [2016-11-06T16:27:21,712][WARN ][o.e.b.JNANatives ] unable to install syscall filter:

    java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in

    at org.elasticsearch.bootstrap.Seccomp.linuxImpl(Seccomp.java:349) ~[elasticsearch-5.0.0.jar:5.0.0]

    at org.elasticsearch.bootstrap.Seccomp.init(Seccomp.java:630) ~[elasticsearch-5.0.0.jar:5.0.0]

    报了一大串错误,其实只是一个警告。

     

    解决:使用新得linux版本,就不会出现此类问题了。

     

    问题二:ERROR: bootstrap checks failed

    max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

    max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

     

    解决:切换到root用户,编辑limits.conf 添加类似如下内容

     

    vi /etc/security/limits.conf

     

    添加如下内容:

    * soft nofile 65536

    * hard nofile 131072

    * soft nproc 2048

    * hard nproc 4096

     

    问题三:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

     

    解决:切换到root用户,进入limits.d目录下修改配置文件。

    vi /etc/security/limits.d/90-nproc.conf

    修改如下内容:

    * soft nproc 1024

    #修改为

    * soft nproc 2048

     

    问题四:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

     

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

     

    vi /etc/sysctl.conf

    添加下面配置:

    vm.max_map_count=262144

    并执行命令:

    sysctl -p

     

    问题五:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

     

    解决:修改切换到root用户修改配置limits.conf 添加下面两行

    命令:vi /etc/security/limits.conf

    *        hard    nofile           65536

    *        soft    nofile           65536

    切换到es的用户。

    问题六:

    ERROR: bootstrap checks failed

    system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

    原因:

    这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。

     

    解决:

    在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:

    bootstrap.memory_lock: false

    bootstrap.system_call_filter: false

    然后,重新启动elasticsearch,即可启动成功。

    问题六:后台运行

    最后还有一个小问题,如果你在服务器上安装Elasticsearch,而你想在本地机器上进行开发,这时候,你很可能需要在关闭终端的时候,让Elasticsearch继续保持运行。最简单的方法就是使用nohup。先按Ctrl + C,停止当前运行的Elasticsearch,改用下面的命令运行Elasticsearch

    nohup./bin/elasticsearch&

    这样,你就可以放心地关闭服务器终端,而不用担心Elasticsearch也跟着关闭了

     

    注意:我安装的是https://www.elastic.co/downloads/past-releases/kibana-7-11-0 和 https://www.elastic.co/downloads/past-releases/elasticsearch-7-11-0 版本,更高版本需要tls,fluentd可能连接不上

     

    阅读原文

  • 相关阅读:
    Nginx中如何配置中文域名?
    VS2012找不到EF框架实体模型的解决方法
    来自一位家长的电话
    孩子大了真是不好管了
    springboot项目不加端口号也可以访问项目的方法
    分享几个上机案例题
    今晚在学校值班……
    3班的第二次模拟面试
    Sword 09
    Sword 06
  • 原文地址:https://www.cnblogs.com/276815076/p/16663456.html
Copyright © 2020-2023  润新知