EFK基础架构:
    将数据利用filebeat的代理传给kafka集群,kafka集群利用logstash传给es集群
    ES服务器:两台es-1:[10.0.1.11]es-2:[10.0.1.12]
    kibana程序在ES服务器其中一台上进行部署
    kafka服务器:两台[10.0.1.13][10.0.1.14]
    logstash程序在kafka服务器上部署
    filebeat服务器:一台[10.0.1.14]
    本次实验采集的为nginx服务的访问日志,nginx项目部署在filebeat服务器上

    ES-1部署:
    安装配置jdk环境:
    下载jdk的包到本地并解压到/usr/local/下
    >mv /usr/local/jdk解压后的包 /usr/local/java
    给jdk改名,方便后续操作
    >vim /etc/profile #编辑环境变量配置文件
    在末行添加:
    JAVA_HOME=/usr/local/java/
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME PATH
    保存退出
    >source /etc/profile #使更改的环境变量生效

    安装配置ES:
    > useradd es #创建运行程序的普通用户
    >echo “es” | passwd —stdin “es” #设置es用户的密码为es
    将es包上传到服务器后解压到/usr/local下
    >mv /usr/local/es包名 /usr/local/elasticsearch #改名,方便后续操作
    >vim /usr/local/easticsearch/config/elasticsearch.yml #编辑es程序的配置文件
    在末行添加:
    cluster.name: bjbpe01-elk
    node.name: elk01
    node.master: true
    node.data: true
    path.data: /data/elasticsearch/data
    path.logs: /data/elasticsearch/logs
    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false
    network.host: 0.0.0.0
    http.port: 9200
    discovery.zen.ping.unicast.hosts: [“10.0.1.11”, “10.0.1.12”]
    discovery.zen.ping_timeout: 150s
    discovery.zen.fd.ping_retries: 10
    client.transport.ping_timeout: 60s
    http.cors.enabled: true
    http.cors.allow-origin: “*”
    保存退出
    JVM堆大小根据实际情况而定:
    >sed -i ‘s/-Xms1g/-Xms2g/‘ /usr/local/elasticsearch-6.5.4/config/jvm.options
    >sed -i ‘s/-Xmx1g/-Xmx2g/‘ /usr/local/elasticsearch-6.5.4/config/jvm.options

    创建ES数据及日志存储目录:
    >mkdir -p /data/elasticsearch/data
    >mkdir -p /data/elasticsearch/logs
    修改安装目录及存储目录所属者:
    >chown -R es.es /data/elasticsearch
    >chown -R es.es /usr/local/elasticsearch
    系统优化:
    >vim /etc/security/limits.conf
    soft nofile 65536
    hard nofile 131072
    soft nproc 2048
    hard nproc 4096
    保存退出
    增加最大内存映射数:
    >”vm.max_map_count=262144” >> /etc/sysctl.conf
    >sysctl -p #使修改生效
    部署kibana:
    将kibana包上传到服务器解压到/usr/local下
    >mv /usr/local/kibana包 /usr/local/kibana
    #给解压后的kibana程序目录改名,为方便后续操作
    >vim /usr/local/kibana/config/kibana.yml #编辑kibana的配置文件
    在末尾添加:
    server.port: 5601
    server.host: “10.0.1.11”
    elasticsearch.url: “http://10.0.1.11:9200
    kibana.index: “.kibana”
    启动es:
    >su - es -c “/usr/local/elasticsearch && nohup bin/elasticsearch &”

    ES-2部署:
    与ES-1基本一致:
    安装配置jdk环境:
    下载jdk的包到本地并解压到/usr/local/下
    >mv /usr/local/jdk解压后的包 /usr/local/java
    给jdk改名,方便后续操作
    >vim /etc/profile #编辑环境变量配置文件
    在末行添加:
    JAVA_HOME=/usr/local/java/
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME PATH
    保存退出
    >source /etc/profile #使更改的环境变量生效

    安装配置ES:
    > useradd es #创建运行程序的普通用户
    >echo “es” | passwd —stdin “es” #设置es用户的密码为es
    将es包上传到服务器后解压到/usr/local下
    >mv /usr/local/es包名 /usr/local/elasticsearch #改名,方便后续操作
    >vim /usr/local/easticsearch/config/elasticsearch.yml #编辑es程序的配置文件
    在末行添加:
    cluster.name: bjbpe01-elk
    node.name: elk02
    node.master: true
    node.data: true
    path.data: /data/elasticsearch/data
    path.logs: /data/elasticsearch/logs
    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false
    network.host: 0.0.0.0
    http.port: 9200
    discovery.zen.ping.unicast.hosts: [“10.0.1.11”, “10.0.1.12”]
    discovery.zen.ping_timeout: 150s
    discovery.zen.fd.ping_retries: 10
    client.transport.ping_timeout: 60s
    http.cors.enabled: true
    http.cors.allow-origin: “*”
    保存退出
    JVM堆大小根据实际情况而定:
    >sed -i ‘s/-Xms1g/-Xms2g/‘ /usr/local/elasticsearch-6.5.4/config/jvm.options
    >sed -i ‘s/-Xmx1g/-Xmx2g/‘ /usr/local/elasticsearch-6.5.4/config/jvm.options

    创建ES数据及日志存储目录:
    >mkdir -p /data/elasticsearch/data
    >mkdir -p /data/elasticsearch/logs
    修改安装目录及存储目录所属者:
    >chown -R es.es /data/elasticsearch
    >chown -R es.es /usr/local/elasticsearch
    系统优化:
    >vim /etc/security/limits.conf
    soft nofile 65536
    hard nofile 131072
    soft nproc 2048
    hard nproc 4096
    保存退出
    增加最大内存映射数:
    >”vm.max_map_count=262144” >> /etc/sysctl.conf
    >sysctl -p #使修改生效
    启动es:
    >su - es -c “/usr/local/elasticsearch && nohup bin/elasticsearch &”

    kafka-1服务器部署:
    安装配置jdk环境:
    下载jdk的包到本地并解压到/usr/local/下
    >mv /usr/local/jdk解压后的包 /usr/local/java
    给jdk改名,方便后续操作
    >vim /etc/profile #编辑环境变量配置文件
    在末行添加:
    JAVA_HOME=/usr/local/java/
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME PATH
    保存退出
    >source /etc/profile #使更改的环境变量生效

    Kafka运行依赖ZK,Kafka官网提供的tar包中,已经包含了ZK,这里不再额下载ZK程序
    将kafka程序压缩包上传到服务器后解压到/usr/local下
    >mv /usr/local/kafka包名称 /usr/local/kafka
    将解压后的工作目录改名,方便后续操作
    编辑zookeeper配置文件:
    >sed -i ‘s/^[^#]/#&/‘ /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
    将zookeeper.properties文件内所有行注释掉
    >vim /usr/local/kafka/config/zookeeper.properties #编辑配置文件
    末尾添加:
    dataDir=/opt/data/zookeeper/data
    dataLogDir=/opt/data/zookeeper/logs
    clientPort=2181
    tickTime=2000
    initLimit=20
    syncLimit=10
    server.1=10.0.1.13:2888:3888
    server.2=10.0.1.14:2888:3888
    保存退出
    创建data、log目录
    >mkdir -p /opt/data/zookeeper/{data,logs}
    创建myid文件:
    >echo 1 > /opt/data/zookeeper/data/myid

    编辑kafka配置文件:
    >sed -i ‘s/^[^#]/#&/‘ /usr/local/kafka/config/server.properties
    将server配置文件中所有行注释掉
    >vim /usr/local/kafka/config/server.properties #编辑配置文件
    在末尾添加:
    broker.id=1
    listeners=PLAINTEXT://10.0.1.13:9092
    num.network.threads=3
    num.io.threads=8
    socket.send.buffer.bytes=102400
    socket.receive.buffer.bytes=102400
    socket.request.max.bytes=104857600
    log.dirs=/opt/data/kafka/logs
    num.partitions=6
    num.recovery.threads.per.data.dir=1
    offsets.topic.replication.factor=2
    transaction.state.log.replication.factor=1
    transaction.state.log.min.isr=1
    log.retention.hours=168
    log.segment.bytes=536870912
    log.retention.check.interval.ms=300000
    zookeeper.connect=10.0.1.13:2181,10.0.1.14:2181
    zookeeper.connection.timeout.ms=6000
    group.initial.rebalance.delay.ms=0
    保存退出

    kafka-2服务器部署:
    与kafka-1基本一致:
    安装配置jdk环境:
    下载jdk的包到本地并解压到/usr/local/下
    >mv /usr/local/jdk解压后的包 /usr/local/java
    给jdk改名,方便后续操作
    >vim /etc/profile #编辑环境变量配置文件
    在末行添加:
    JAVA_HOME=/usr/local/java/
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME PATH
    保存退出
    >source /etc/profile #使更改的环境变量生效

    Kafka运行依赖ZK,Kafka官网提供的tar包中,已经包含了ZK,这里不再额下载ZK程序
    将kafka程序压缩包上传到服务器后解压到/usr/local下
    >mv /usr/local/kafka包名称 /usr/local/kafka
    将解压后的工作目录改名,方便后续操作
    编辑zookeeper配置文件:
    >sed -i ‘s/^[^#]/#&/‘ /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
    将zookeeper.properties文件内所有行注释掉
    >vim /usr/local/kafka/config/zookeeper.properties #编辑配置文件
    末尾添加:
    dataDir=/opt/data/zookeeper/data
    dataLogDir=/opt/data/zookeeper/logs
    clientPort=2181
    tickTime=2000
    initLimit=20
    syncLimit=10
    server.1=10.0.1.13:2888:3888
    server.2=10.0.1.14:2888:3888
    保存退出
    创建data、log目录
    >mkdir -p /opt/data/zookeeper/{data,logs}
    创建myid文件:
    >echo 2 > /opt/data/zookeeper/data/myid

    编辑kafka配置文件:
    >sed -i ‘s/^[^#]/#&/‘ /usr/local/kafka/config/server.properties
    将server配置文件中所有行注释掉
    >vim /usr/local/kafka/config/server.properties #编辑配置文件
    在末尾添加:
    broker.id=2
    listeners=PLAINTEXT://10.0.1.14:9092
    num.network.threads=3
    num.io.threads=8
    socket.send.buffer.bytes=102400
    socket.receive.buffer.bytes=102400
    socket.request.max.bytes=104857600
    log.dirs=/opt/data/kafka/logs
    num.partitions=6
    num.recovery.threads.per.data.dir=1
    offsets.topic.replication.factor=2
    transaction.state.log.replication.factor=1
    transaction.state.log.min.isr=1
    log.retention.hours=168
    log.segment.bytes=536870912
    log.retention.check.interval.ms=300000
    zookeeper.connect=10.0.1.13:2181,10.0.1.14:2181
    zookeeper.connection.timeout.ms=6000
    group.initial.rebalance.delay.ms=0
    保存退出

    kafka所有服务器部署结束后依次启动:
    >cd /usr/local/kafka
    >nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
    >nohup bin/zookeeper-server-start.sh config/server.properties &
    >yum -y install nmap-ncat #下载验证工具
    >echo conf | nc 127.0.0.1 2181
    >echo start | nc 127.0.0.1 2181

    kafka-1部署logstash:
    将logstash包上传到服务器后解压到/usr/local下
    >mv /usr/local/logstash包名称 /usr/local/logstash
    将解压后的程序包改名,方便后续操作
    >ln -s /usr/local/logstash/bin/logstash /bin/logstash #制作软链接
    >cd && vim filebeat.conf 编辑采集转发配置
    input {
    kafka {
    type => “kafka_log”
    bootstrap_servers => “10.0.1.13:9092,10.0.1.14:9092”
    group_id => “logstash”
    auto_offset_reset => “earliest”
    topics => “filebeat”
    consumer_threads => 5
    decorate_events => true
    }
    }

    output {
    elasticsearch {
    index => ‘kafka-run-log-%{+YYYY.MM.dd}’
    hosts => [“10.0.1.11:9200”]
    }
    }
    保存退出
    创建对应话题:
    >cd /usr/local/kafka
    >bin/kafka-topics.sh —create —zookeeper 10.0.1.13:2181 —replication-factor 1 —partitions 1 —topic filebeat
    >bin/kafka-topics.sh —zookeeper 172.17.0.4:2181 —list #查看是否创建成功

    filebeat服务器部署:
    将filebeat程序的压缩包上传到服务器后解压到/usr/local下
    >mv /usr/local/filebeat包名称 /usr/local/filebeat
    改名,方便后续操作
    >vim /usr/local/filebeat/filebeat.yml #编辑filebeat的配置文件
    找到Filebeat inputs将对应内容修改为以下:
    - type: log
    enabled: true
    paths:
    - /var/log/nginx/access.log
    找到Outputs添加以下内容在第一个注释行下添加以下内容:
    output.kafka:
    enabled: true
    hosts: [“10.0.1.13:9092”,”10.0.1.14:9092”]
    topic: ‘filebeat’
    找到Elasticsearch output将里面的内容全部注释掉之后
    保存退出
    >yum -y install nginx #部署nginx
    >systemctl start nginx

    返回kafka服务器
    >cd
    >logstash -f filebeat.conf #加载采集转发配置文件
    成功后回到filebeat服务器启动filebeat
    >nohup /usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml &
    >cat nohup.out #查看启动状态 或使用jobs查看
    访问filebeat上的nginx服务模拟日志的产生

    使用浏览器插件es的head查看是否出现对应的索引即可