ELK日志收集方案

总体流程

日志–>filebeat–>kafka–>logstash–>ES–>kibana

在这里插入图片描述


1.Filebeat

  • 官网下载并安装Filebeat

  • 编写Filebeat配置文件:在Filebeat配置文件中指定需要收集的日志文件路径和输出方式

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
         - /path/to/log/file   # 文件路径
      fields:
         type: java-log
    
    output.kafka:              # 输出方式
      hosts: ["192.168.96.131:9092"]
      topic: "my-topic"
    
    

    指定需要收集的日志文件路径和输出方式。Filebeat将从指定路径中读取日志文件,并将日志数据发送到Kafka的my-topic主题中。

  • 配置Java应用程序:在Java应用程序中添加Log4j或Logback等日志框架,并将日志输出到指定的日志文件中

  • 启动Filebeat服务,让它开始收集日志并将日志数据发送到Kafka中

    [root@elktest1 filebeat-7.8.0-linux-x86_64]# nohup ./filebeat -e -c filebeat.yml &
    
  • 在Kafka中查看收集到的日志数据,并在Elasticsearch和Kibana中进行搜索和分析


2.Kafka

  • 官网下载kafka(注:因 Kafka 依赖于zookeeper,如果想要使用 Kafka,就必须安装 ZK,Kafka 中的消费偏置信息、Kafka集群、topic信息会被存储在 ZK 中,新版本的 kafka 自带有 zookeeper)

  • 修改zk配置文件zookeeper.properties,指定Zookeeper的数据目录和端口号等信息

    [root@elktest2 config]# vim /usr/local/elk/kafka_2.13-2.6.0/config/zookeeper.properties
    # 添加如下配置
    dataDir=/opt/data/zookeeper/data
    dataLogDir=/opt/data/zookeeper/logs
    clientPort=2181
    tickTime=2000  # 心跳间隔时间,每隔两秒发送一个心跳
    initLimit=20  # Leader - Fllower 初始通信时限,表示20个心跳间隔
    syncLimit=10  # Leader - Follower同步通信时限,表示10个心跳间隔,即tickTime*10
    
    # 设置 broker id 的服务地址
    server.1=192.168.96.131:2888:3888           # kafka 集群 IP:Port
    
    # 修改主机 zookeeper 配置
     
    # 创建 data、log 目录
    [root@elktest2 config]# mkdir -p /opt/data/zookeeper/{data,logs}
    
    # 创建 myid 配置文件,写入服务 broker.id 的属性值
    [root@elktest2 config]# echo 1 > /opt/data/zookeeper/data/myid     # myid号按顺序排
    kafka1    echo 1 > /opt/data/zookeeper/data/myid
    
    
  • 修改kafka配置文件server.properties

    # 加入如下配置信息
    [root@elktest2 config]# vim /usr/local/elk/kafka_2.13-2.6.0/config/server.properties  # 在最后添加
    broker.id=1                                  
    listeners=PLAINTEXT://192.168.96.131:9092    # 注意!! 此处 ip 地址为每台主机的本机 IP 
    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=192.168.96.131:2181
    zookeeper.connection.timeout.ms=6000
    group.initial.rebalance.delay.ms=0
    
    

    创建 kafka 日志文件目录

    [root@elktest2 config]# mkdir -p /opt/data/kafka/log
    

    Kafka 节点按以上步骤依次配置

  • 启动ZK

    [root@elktest2 config]# cd /usr/local/elk/kafka_2.13-2.6.0
    [root@elktest2 kafka_2.13-2.6.0]# nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
    
  • 启动Kafka(说明:启动Kafka之前,请确保已经启动 ZK,否则Kafka会报错而导致无法启动。)

    [root@elktest2 ~]# cd /usr/local/elk/kafka_2.13-2.6.0/
    [root@elktest2 kafka_2.13-2.6.0]# nohup bin/kafka-server-start.sh config/server.properties &
    
  • 创建Kafka主题

    [root@elktest2 kafka_2.13-2.6.0]#  bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic log-topic
    Created topic log-topic.
    

3.Logstash

  • 官网下载Logstash

  • 设置配置文件

    [root@elktest2 logstash-7.8.0]# mkdir -p /usr/local/elk/logstash-7.8.0/etc/conf.d
    [root@elktest2 logstash-7.8.0]# cd /usr/local/elk/logstash-7.8.0/etc/conf.d/
    [root@elktest2 conf.d]# vim kafka-input.conf
    # 加入以下内容
    input {
      kafka {
          type => "kafka-input_log"
          client_id => "kafka-input_cli"
          group_id => "kafka-input_grp"
          topics => "log-topic"
          bootstrap_servers => "192.168.96.131:9092"
        }
    }
    
    output {
        stdout {codec => rubydebug}
        elasticsearch {
          hosts => ["http://192.168.96.131:9200"]
          index => "%{type}"
       }
    }
    
    
    • 启动Logstash
    [root@elktest2 ~]# cd /usr/local/elk/logstash-7.8.0/
    [root@elktest2 logstash-7.8.0]# nohup bin/logstash -f etc/conf.d/test-tmp.conf  --config.reload.automatic &
    

    --config.reload.automatic 选项的意思是启用自动配置加载,以至于每次修改完配置文件以后无需停止然后重启Logstash


4.ElasticSearch

  • 配置JDK环境(es 要依赖与 java 环境运行)

  • 下载和安装Elasticsearch

  • 找到 config 目录下的 elasticsearch.yml 文件,修改配置

    cluster.name: es-application  
    node.name: node-1  
    #对所有 IP 开放  
    network.host: 0.0.0.0  
    #HTTP 端口号  
    http.port: 9200  
    #ElasticSearch 数据文件存放目录  
    path.data: /usr/elasticsearch-7.9.3/data  
    #ElasticSearch 日志文件存放目录  
    path.logs: /usr/elasticsearch-7.9.3/logs
    
  • 配置完之后,因为 ElasticSearch 使用非 root 用户启动,所以创建一个用户

    # 创建用户  
    useradd yehongzhi  
    # 设置密码  
    passwd yehongzhi  
    # 赋予用户权限  
    chown -R yehongzhi:yehongzhi /usr/elasticsearch-7.9.3/
    
  • 然后切换用户,启动。

    # 切换用户  
    su yehongzhi  
    # 启动 -d 表示后台启动  
    ./bin/elasticsearch -d
    

5.Kibana

  • 官网下载压缩包,然后解压

  • 找到 /config 目录下的 kibana.yml 文件,修改配置

    server.port: 5601  
    server.host: "192.168.96.131"  
    elasticsearch.hosts: ["http://192.168.96.131:9200"]
    
  • 和 ElasticSearch 一样,不能使用 root 用户启动,需要创建一个用户

    # 创建用户  
    useradd kibana
    # 设置密码
    passwd kibana
    # 赋予用户权限
    chown -R kibana:kibana /usr/kibana/
    
  • 启动服务(启动 Kibana前,需确保 ES 至少有一台可用)

    #切换用户
    su kibana
    #非后台启动,关闭 shell 窗口即退出
    ./bin/kibana  
    #后台启动
    nohup ./bin/kibana &
    

启动步骤

启动ES–>启动Kibana–>启动Kafka–>启动Logstash–>启动Filebeat

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值