elk+filebeat+kafka日志收集方案

2024-05-10 13:48

本文主要是介绍elk+filebeat+kafka日志收集方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

        • 架构图
        • 搭建
          • 安装zookeeper集群
          • 安装kafka集群
          • 安装kafka-manager 管理平台
          • 安装elasticsearch集群
          • 安装filebeat
          • 安装logstash
          • 安装kibana

架构图

在这里插入图片描述

搭建
安装zookeeper集群
  • tar -zxf /opt/files/zookeeper-3.4.8.tar.gz -C /opt/env

  • vim /opt/env/zookeeper-3.4.8/conf/zoo.cfg

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/opt/env/zookeeper-3.4.8/data
    clientPort=2181
    server.1=192.168.12.41:2888:3888
    server.2=192.168.12.42:2888:3888
    server.3=192.168.12.43:2888:3888
    
  • vim /opt/env/zookeeper-3.4.8/conf/java.env

    export JVMFLAGS="-Xms512m -Xmx512m $JVMFLAGS"
    
  • vim /opt/env/zookeeper-3.4.8/data/myid #在数据目录下配置集群ID

    1
    
  • 禁用防火墙

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    
  • 服务启动

    /opt/env/zookeeper-3.4.8/bin/zkServer.sh start # 启动
    /opt/env/zookeeper-3.4.8/bin/zkServer.sh status # 查看状态
    

同样步骤配置其他集群节点

安装kafka集群
  • tar -zxf kafka_2.11-0.9.0.0.tgz -C /opt/env/

  • vi /opt/env/kafka_2.11-0.9.0.0/config/server.properties

    broker.id=1
    listeners=PLAINTEXT://pek1-vm-05:9092
    log.dirs=/opt/env/kafka_2.11-0.9.0.0/log
    zookeeper.connect=192.168.1.222:2181
    advertised.host.name=0.0.0.0 #如果不修改。默认为localhost 导致使用IP远程连接不上
    
  • mkdir -p /opt/env/kafka_2.11-0.9.0.0/log --创建日志目录

  • 启动 kafka (请先确保zk是启动的)

    nohup /opt/env/kafka_2.11-0.9.0.0/bin/kafka-server-start.sh /opt/env/kafka_2.12-1.0.0/config/server.properties  #启动 kafka
    /opt/env/kafka_2.12-1.0.0/bin/kafka-server-start.sh -daemon /opt/env/kafka_2.12-1.0.0/config/server.properties # 后台运行
    
  • 创建topic

    /opt/env/kafka_2.12-1.0.0/bin/kafka-topics.sh --create --zookeeper 192.168.1.222:2181 --replication-factor 1 --partitions 1 --topic test001
    nohup ./bin/kafka-topics.sh --list --zookeeper 192.168.1.222:2181
    
  • 单机连通性测试

    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test # 启动生产者
    bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning  # 启动消费者,在producer端输入字符串并回车,查看consumer端是否显示
    

同样步骤配置其他集群节点

安装kafka-manager 管理平台
  • tar -zxf kafka-manager-1.3.3.17.tar.gz -C /opt/env/ #解压

  • vim ~/.sbt/repositories #更改sbt源,sbt运行时经常需要下载大量的jar包,默认连接到maven官网,速度通常比较慢

    [repositories]
    local
    aliyun: http://maven.aliyun.com/nexus/content/groups/public
    typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
    
  • ./sbt clean dist

  • unzip /opt/env/kafka-manager-1.3.3.17/target/universal/kafka-manager-1.3.3.17.zip

  • mv /opt/env/kafka-manager-1.3.3.17/target/universal/kafka-manager-1.3.3.17 /opt/env/kafka-manager-1.3.3.17/kafka-manager

  • vim /opt/env/kafka-manager-1.3.3.17/kafka-manager/conf/application.conf kafka-manager.zkhosts=“10.1.1.41:2181,10.1.1.42:2181,10.1.1.43:2181”

  • 启动

      nohup /opt/env/kafka-manager-1.3.3.17/kafka-manager/bin/kafka-manager -Dconfig.file=/opt/env/kafka-manager-1.3.3.17/kafka-manager/conf/application.conf -Dhttp.port=19092 &
    
安装elasticsearch集群
  • tar zxf /opt/file/elasticsearch-6.2.3.tar.gz -C /opt/env/

  • vim elasticsearch-5.5.0/config/elasticsearch.yml #es配置项

    cluster.name: es.dev #集群名称,集群内各个节点必须一致
    node.name: node1 #节点名
    network.host: 0.0.0.0 #绑定IP ,所有网卡
    http.port: 9200 # http端口
    discovery.zen.ping.unicast.hosts: ["host1","host2","host3"] #集群内其他节点host
    discovery.zen.minimum_master_nodes: 2 #主节点数,官方建议nodes / 2 + 1
    
  • vim elasticsearch-5.5.0/config/jvm.options #jvm 参数配置

    -Xms512m
    -Xmx512m
    
  • useradd elasticsearch -g wheel -p elasticsearch #添加es 账户,因为默认不允许root启动

  • chown -R elasticsearch:wheel /opt/env/elasticsearch-5.5.0 #配置可执行权限

  • vim /etc/security/limits.conf ->gg +G 到最后一行,在最后一行之上添加如下内容

    soft nproc 65536
    hard nproc 65536
    soft nofile 65536
    hard nofile 65536
    
  • vim /etc/sysctl.conf

    vm.max_map_count=655360
    
  • sysctl -p #执行生效

  • 启动

    su elasticsearch # 切换到elasticsearch 用户
    /opt/env/elasticsearch-5.5.0/bin/elasticsearch  -d #后台启动es
    netstat -nltp #查看端口,可以看到 9200 和9300 已经开启
    
  • 测试

    curl -X GET http://localhost:9200/

  • 其他节点使用scp 拷贝相关配置文件

    scp -r -P 22 root@192.168.10.1:/opt/data/backup/mysql/* /root #示例而已
    
  • chrome 浏览器安装 elasticsearch head 插件

    插件下载:https://www.gugeapps.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm
    将下载的文件拖入:chrome 浏览器->更多工具->扩展程序 即可完成安装
    

vim /etc/sudoers 可以看到wheel组内用户可以执行所有命令,这是一种偷懒的做法
多网卡配置参数network.bind_host: 101.201.103.78,network.publish_host: 10.174.8.116,transport.host: 10.174.8.116

安装filebeat
  • tar zxf /opt/file/filebeat-5.5.0-linux-x86_64.tar.gz -C /opt/env

  • cp filebeat.yml filebeat.yml.init #默认的配置备份一下

  • vim filebeat.yml

    input_type: logpaths:/opt/apps/his_med/logs/*-error.logmultiline.pattern: ^\[  #多行日志合并处理multiline.negate: true  #多行日志合并处理multiline.match: after  #多行日志合并处理
    output.kafka:hosts: ["192.168.10.1:9092","192.168.10.2:9092","192.168.10.3:9092"]topic: 'log'
    
  • nohup /opt/env/filebeat-5.5.0-linux-x86_64/filebeat -e -c /opt/env/filebeat-5.5.0-linux-x86_64/filebeat.yml -d “publish” & #启动

安装logstash
  • tar -zxf /opt/file/logstash-5.5.0.tar.gz -C /opt/env/

  • 安装email 插件

  • vim Gemfile

    source "https://ruby.taobao.org/" #使用国内的镜像服务更快
    
  • logstash-plugin install logstash-output-email 安装email 插件,比较慢

  • vim config/kafka-es.conf

    input {kafka {bootstrap_servers => "192.168.10.1:9092,192.168.10.2:9092,192.168.10.3:9092"topics => ["log"]}
    }	output {elasticsearch {hosts => ["192.168.10.1:9200","192.168.10.2:9200","192.168.10.3:9200"]}
    }output {email {port => "25"address => "smtp.exmail.qq.com"username => "test@xxx.cn"password => "jFuddWjbsdfds9wwi4HS" #一定是客户端授权码,因为这个被坑了好久authentication => "plain"use_tls => falsefrom => "test@xxx.cn"subject => "服务器异常提醒"to => "own@xxx.cn"via => "smtp"body => "Content:\\n%{message}"}
    }nohup logstash -f /opt/env/logstash-5.5.0/config/kafka-es.conf &
    
  • nohup logstash -f /opt/env/logstash-5.5.0/config/kafka-es.conf & #启动

安装kibana
  • tar zxf kibana-5.5.0-linux-x86_64.tar.gz -C /opt/env/

  • vim config/kibana.yml

    server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.url: "http://192.168.10.1:9200"
    
  • nohup /opt/env/kibana-5.5.0-linux-x86_64/bin/kibana & #启动

这篇关于elk+filebeat+kafka日志收集方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976622

相关文章

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

Java 日志中 Marker 的使用示例详解

《Java日志中Marker的使用示例详解》Marker是SLF4J(以及Logback、Log4j2)提供的一个接口,它本质上是一个命名对象,你可以把它想象成一个可以附加到日志语句上的标签或戳... 目录什么是Marker?为什么使用Markejavascriptr?1. 精细化的过滤2. 触发特定操作3

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除