kafaka ElasticSearch 集群,解决问题,工作流程及配置

news2025/2/22 1:23:33

一、作用

性能优化:jvm多线程和I/O,kafka+es 组合的架构,是为了降低es io瓶颈

二、工作流程
如下两图示意,

 

 

agent(指的是filebeat、metricbeat、auditbeat、API服务、logstash)收集需要提取的日志文件,包括syslog、nginx、tomcat、apache、windows event、snmptrap等,将日志转存到kafka集群中。logstash处理kafka日志,格式化处理,并将日志输出到elasticsearch中,前台页面通过grafana展示日志。

使用kafka集群做缓存层,而不是直接将agent收集到的日志信息写入logstash节点,让整体结构更健壮。agent负责将收集到的数据写入kafka,logstash取出数据并处理。

硬件条件支持
一共使用了4台服务器,需要先做好ntp时钟同步。CentOS7.4:
192.168.50.180/181/182:ES子节点,Kafka集群,Logstash多节点日志转换,Zookeeper+Kafka+Logstash+
ElasticSearch
192.168.50.187:ES主节点,Logstash节点(收集snmp日志),Grafana前台展示,管理系统,nginx+ElasticSearch+Grafana

每台服务器都需要安装JDK,配置环境变量。修改全局配置文件/etc/profile,应用于所有用户:

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_201
export CLASSPATH=${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:.
export PATH=${JAVA_HOME}/bin:$PATH

系统参数调优,修改hosts,sysctl.conf和limits.conf文件,在末尾增加一些配置:
# vim /etc/hosts
192.168.50.180 node1 192-168-50-180
192.168.50.181 node2 192-168-50-181
192.168.50.182 node3 192-168-50-182

# vim /etc/sysctl.conf
fs.file-max=65536
vm.max_map_count = 262144

# vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

# sysctl -p


软件安装包下载地址:链接: https://pan.baidu.com/s/1JPuyifWBlbA58TBczkNMQQ 密码: apdb
三、应用安装
3.1 kafka集群搭建
在192.168.50.180/181/182服务器中搭建kafka集群,关闭防火墙
关闭防火墙命令:systemctl stop firewalld
查看防火墙状态:systemctl status firewalld

3.2搭建zookeeper
直接使用kafka自带的zookeeper
解压安装包到/usr/local/kafka目录下
vim config/zookeeper.properties
修改配置内容:
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/kafka/zookeeper/data
dataLogDir=/usr/local/kafka/zookeeper/log
server.1=192.168.50.180:12888:13888
server.2=192.168.50.181:12888:13888
server.3=192.168.50.182:12888:13888

注意:dataDir、dataLogDir文件目录需要手动创建。
三台服务器配置内容一致,需要在dataDir目录下创建myid文件,文件的内容必须与zookeeper.properties中的编号保持一致,分别为1、2、3。

3.3搭建kafka
vim config/server.properties
修改配置内容:
broker.id=1
advertised.port = 9092
advertised.host.name = 192.168.50.180
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=/usr/local/kafka-logs
num.partitions=16
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.50.180:2181,192.168.50.181:2181,192.168.50.182:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0


注意:每台服务器除broker.id 和 host.name 两个属性需要修改之外,其他属性保持一致。

验证
启动zookeeper:
nohup zookeeper-server-start.sh ../config/zookeeper.properties &
启动kafka
nohup kafka-server-start.sh ../config/server.properties &
创建topic:
/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper 192.168.50.180:2181,192.168.50.181:2181,192.168.50.182:2181 --replication-factor 1 --partitions 2 --topic testtopic
查看topic:
/usr/local/kafka/bin/kafka-topics.sh --zookeeper 192.168.50.180:2181,192.168.50.181:2181,192.168.50.182:2181 --list
写入消息命令:
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.50.180:9092 --topic testtopic
消费消息命令:
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.50.180:9092 --from-beginning --topic testtopic
能正常的写入消息、消费消息,kafka集群完成。
ES及相关组件搭建
在192.168.50.180/181/182/187搭建elasticsearch,注意es的启动必须是非root用户启动,需要先创建用户esuser:useradd esuser -s /bin/bash -d /home/esuser -m

3.4安装elasticsearch
解压文件到/usr/local/目录下,以192.168.50.187为主节点master
vim elasticsearch/config/elasticsearch.yml
修改配置:
# cluster.name 集群名称
# node.name 节点主机名
# node.master 是否参与主节点竞选
# node.data:true  指定该节点是否存储索引数据,默认为true。本例没配置,所有节点都存储包括主节点
# cluster.initial_master_nodes 引导启动集群的机器IP或者主机名
# http.port http端口。
# transport.tcp.port 设置节点间交互的tcp端口,默认是9300。
cluster.name: esmaster
node.name: 192.168.50.187
node.master: true
path.logs: /usr/local/data/log/
network.host: 192.168.1.187
http.port: 9200
discovery.seed_hosts: ["192.168.50.180","192.168.50.181","192.168.50.182"]
cluster.initial_master_nodes: ["192.168.50.187"]

注意:其他几台服务器,作为子节点,需要修改cluster.name、node.name、network.host为自身的配置,修改node.master:false。最后两个属性根据服务器内容进行修改。

3..5安装Grafana
解压后执行nohup bin/grafana-server &

3.6安装agent
上传beats.tar.gz及setup.sh文件(下载地址:)到/usr/local/src下,使用root用户执行setup.sh脚本。
默认启动filebeat收/var/log下所有日志文件,默认启动metricbeat收系统日志,默认启动auditbeat进行系统级别操作审计日志。如需收集其他日志则使用不同的配置文件即可。

3.7安装logstash
在192.168.1.180/181/182/187搭建logstash服务,
在logstash中input配置如下:

input {
  kafka{
    bootstrap_servers => ["192.168.50.180:9092,192.168.50.181:9092,192.168.50.182:9092"]
    group_id => "logk"
    auto_offset_reset => "earliest"
    consumer_threads => "5"
    decorate_events => "false"
    topics => ["metric", "syslog"]
    type => "kafka_logs"
    codec => json
  }
}

其中192.168.1.187上的logstash用于接收snmptrap日志。
解压文件到/usr/local/目录下,创建用于本次处理的配置文件logstash4snmp.conf
启动logstash命令:nohup sh logstash -f ../config/logstash4snmp.conf &

四、安装管理系统
4.1安装nginx
上传nginx包,解压后编译安装
# yum install gcc-c++
# yum install -y pcre pcre-devel
# yum install -y zlib zlib-devel
# yum install -y openssl openssl-devel
# ./configure --with-http_ssl_module --with-http_gzip_static_module --with-stream
# make
# make install

配置nginx日志格式
    log_format main
    '{"@timestamp":"$time_iso8601",'
    '"host":"$hostname",'
    '"server_ip":"$server_addr",'
    '"client_ip":"$remote_addr",'
    '"xff":"$http_x_forwarded_for",'
    '"domain":"$host",'
    '"url":"$uri",'
    '"referer":"$http_referer",'
    '"args":"$args",'
    '"upstreamtime":"$upstream_response_time",'
    '"responsetime":"$request_time",'
    '"request_method":"$request_method",'
    '"status":"$status",'
    '"size":"$body_bytes_sent",'
    '"request_body":"$request_body",'
    '"request_length":"$request_length",'
    '"protocol":"$server_protocol",'
    '"upstreamhost":"$upstream_addr",'
    '"file_dir":"$request_filename",'
    '"http_user_agent":"$http_user_agent"'
    '}';

    access_log  /var/log/nginx/access.log  main;

重启nginx,/usr/local/bin/nginx -s reload
安装mysql、tomcat
卸载系统自带的 mariadb-lib
# rpm -qa|grep mariadb
 mariadb-libs-5.5.44-2.el7.centos.x86_64 
# rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps

解压安装包tar -xvf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
安装
依次执行(几个包有依赖关系,所以执行有先后)下面命令安装
# rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm 
# rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
# rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm 
# rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

注:在安装rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm的时候如果报错,需要安装libaio包和net-tools包,完成之后就可以顺利安装。

4.2数据库初始化
为了保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化mysqld --initialize --user=mysql
如果是以 mysql 身份运行,则可以去掉 --user 选项。
另外 --initialize 选项默认以“安全”模式来初始化,会生成一个 root 账户密码,密码在log文件里,如下示意:
# cat /var/log/mysqld.log
  2019-12-07T04:41:58.420558Z 1 [Note] A temporary password is generated for root@localhost: )1r3gi,hjgQa

现在启动mysql数据库
systemctl start mysqld.service
然后mysql -uroot -p,使用初始密码。

修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

上传并解压tomcat,启动tomcat即可。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux】之大数据基础平台实施及运维下

一、完全分布式部署介绍 学习目标 能够了解完全分布式部署场景 完全分部式是真正利用多台Linux主机来进行部署Hadoop,对Linux机器集群进行规划,使得Hadoop各个模块分别部署在不同的多台机器上。 二、NameNode HA完全分布式部署 学习目标 能够了解HA完…

计算机网络习题集

文章目录题目答案:题目一:答案一:题目二答案二:题目三:题四:答案四:题目答案: 一、 单项选择题 计算机网络最突出的优点是( D ) A. 精度高 B. 内存容量大 C. 运算速度快 D. 共享资…

【深入浅出SpringCloud原理及实战】「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析

前提介绍 SpringCloud-Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配…

计算机网络(自顶向下)学习笔记——网络层

第四章—网络层 4.1、概述 转发功能和路由选择功能的区别? 转发涉及在单个的路由中从一条入链路到一条出链路的传送路由选择涉及一个网络的所有路由器,他们经路由选择协议共同交互,决定分组从源到目地结点所采用的的路径 4.1.1、转发和路…

Metal每日分享,调整透明度滤镜效果

本案例的目的是理解如何用Metal实现调整透明度效果滤镜,核心就是改变图像像素的透明度值; Demo HarbethDemo地址 实操代码 // 透明度滤镜 let filter C7Opacity.init(opacity: 0.75)// 方案1: ImageView.image try? BoxxIO(element: originImage, …

java MybatisPlus入门 字段映射 分页查询 逻辑删除 乐观锁

MyBatisPlus&#xff08;简称MP&#xff09;是基于MyBatis框架基础上开发的增强型工具&#xff0c;旨在简化开发、提高效率 入门案例 继承BaseMapper<自己的domain类> 就可以了&#xff0c;自动装配后直接会有各种方法 标准数据层开发 MP分页查询功能 条件查询 NULL值控制…

玩以太坊链上项目的必备技能(单位以及全局变量-Solidity之旅七)

以太币单位&#xff08;Ether&#xff09; 甭管是虚拟货币还是现实中的“稳定币”&#xff0c;他们都有各自的货币单位。当然咯&#xff0c;作为以太坊区块链上交易的虚拟货币以太坊也是有属于自己的那一套货币单位的。 而目前以太币&#xff08;Ether&#xff09;主要分为这…

python批量下载apache文件服务器文件

此脚本用于下载apache文件服务器中制定某个文件夹下所有文件与文件夹。 包含下载单个文件的方法、拼接url递归下载的方法、参数解析。 1 下载文件 功能点&#xff1a; 文件下载 以追加写的方式打开一个新文件&#xff0c;按照块大小写入文件 with open(filepath, wb) as fi…

Kafka实战 - 03 Kafka生产者:将X平台的告警和事件数据接入到S平台

文章目录1. 项目背景2. 依赖和配置3. 生产者配置 KafkaConfiguration4. 同步数据Topic枚举 SyncDataTopicEnum5. 请求体 DataSyncQo6. 同步数据控制层 AppSyncDataController7. 同步数据业务层 XdrDataSyncServiceImpl1. 项目背景 资产可能会遭受各种网络攻击&#xff0c;安全…

[附源码]Python计算机毕业设计SSM基于JAVA语言的宠物寄养管理(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

1,4-丁炔二醇BYD物料中含有大量铜离子、二氧化硅等杂质怎么办?

1,4-丁炔二醇BYD&#xff08;but-2-yne-1,4-diol&#xff09;是一种重要的中间体化工原料&#xff0c;广泛应用于生产丁二醇及其下游产品、维生素B6的主要原料&#xff0c;还可以用于镀镍的增亮剂、防腐抑制剂等领域。 1,4&#xff0d;丁二醇&#xff08;BDO&#xff09;是一种…

[附源码]Python计算机毕业设计SSM基于web的社团管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

免费开源的图片修复工具Lama Cleaner

什么是 Lama Cleaner &#xff1f; Lama Cleaner 是由 SOTA AI 模型提供支持的图像修复工具。可以从图片中移除任何不需要的物体、缺陷和人&#xff0c;或者擦除并替换&#xff08;powered by stable diffusion&#xff09;图片上的任何东西。 看看官方提供的视频&#xff0c;应…

图片怎么转换成PDF格式?这两种方法都可以实现转换

怎么把图片转换成PDF格式呢&#xff1f;大家在日常中也会经常使用到图片&#xff0c;不管是出门游玩还是办公学习&#xff0c;图片都会给我们带来极大的便利。但是一旦图片的数量多了起来&#xff0c;我们又不能删除&#xff0c;那么这些图片的存放就是一个关键的问题&#xff…

[附源码]计算机毕业设计的小说阅读系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

“数据湖存储”冠军杯足球赛开幕,腾讯云存储出征!

“数据湖存储”冠军杯是数据湖领域内的世界级赛事&#xff0c;随着云上“数据湖存储”产品理念的逐步普及&#xff0c;今年的比赛也获得了国内外众多球迷的关注。腾讯云以COS、GooseFS、GooseFSx、元数据加速器、COS加速器等球员组成的球队一路披荆斩棘&#xff0c;成为最闪耀的…

化工集团公司安全风险智能化管控平台

加快数字化发展&#xff0c;大力推进信息化、工业化融合&#xff0c;是国家新时代、新阶段作出的重要决策部署&#xff0c;是化工集团公司打造世界领先企业的必由之路。要充分认识加快数字化发展的重要性紧迫性。要锚定集团公司数字化转型升级的总目标&#xff0c;坚持顶层设计…

Java 开发如何通过 IoT 边缘 ModuleSDK 进行协议转换

操作场景 使用 ModuleSDK 开发插件应用&#xff0c;接入其他协议设备&#xff08;如 HTTP 请求数据&#xff09;&#xff0c;将其他协议的数据转化为 MQTT 协议 JSON 数据上报到 IoTDA。 代码解析 项目结构如下 ModbusDriver 代码解析 片段一 通过 DriverClient.createFromEnv…

[附源码]Nodejs计算机毕业设计基于Web课堂签到管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

web开发框可以为提升办公效率赋能吗?

提升办公效率可以引用专业的web开发框架&#xff0c;值得一提的是&#xff0c;随着数字化时代的到来&#xff0c;要想做好数据管理&#xff0c;低代码开发平台功不可没&#xff0c;在做好数据管理的过程中发挥了重要的应用价值。研发低代码开发平台&#xff0c;流辰信息一直都以…