【星海随笔】云解决方案学习日志篇(二) kafka、Zookeeper、Fielbeat
Elastic 中国社区官方博客
https://blog.csdn.net/ubuntutouch/category_9209092.html
Kafka
kafka的源代码是基于Scala语言编写的,运行在Java虚拟机(即:JVM)上。因此,在安装kafka之前需要先安装JDK
Kafka 为什么依赖 Zookeeper
- 1.协调分布式系统:Kafka是一个分布式系统,各个节点之间需要进行协调和同步,而Zookeeper正是为分布式系统提供协调和同步的服务的。
- 2.元数据管理:Kafka的元数据包括了集群的配置、broker的状态等信息,而这些信息需要被所有的Kafka节点共享和维护。Zookeeper提供了一个分布式的文件系统,可以方便地存储和管理这些元数据信息。
- 3.领导选举:Kafka的一个分区只会分配给一个broker进行读写,而这个broker就是该分区的leader。当leader宕机后,需要从剩余的broker中选举一个新的leader。而Zookeeper可以提供分布式锁和选举的功能,因此Kafka可以利用Zookeeper来实现leader选举。
综上所述,Kafka依赖Zookeeper主要是为了协调分布式系统、元数据管理和领导选举。
ZK安装
来源于apache
1.下载
下载地址:https://zookeeper.apache.org/releases.html
2.解压安装包
tar -zxf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local/
/usr/local/apache-zookeeper-3.7.1-bin/ /usr/local/zookeeper-3.7.1/
3.拷贝配置文件,
cp /usr/local/zookeeper-3.7.1/conf/zoo_sample.cfg /usr/local/zookeeper-3.7.1/conf/zoo.cfg
4.修改配置文件
#在配置文件中加一行监听本机 IP 即可
clientPortAddress=10.0.5.163
zookeeper默认会占用8080端口,如果你本机已有服务在使用8080,可以把下面参数添加到zoo.cfg 文件里,自定义端口
admin.serverPort=8001
5.启动zk
/usr/local/zookeeper-3.7.1/bin/zkServer.sh start
6.查看端口是否监听
netstat -lntp |grep 2181
如果服务未监听,请查看日志排查问题
more zookeeper-root-server-VM-5-163-centos.out
kafka 部署
1.下载
下载地址:https://kafka.apache.org/downloads
2.解压安装包
tar -zxf kafka_2.12-3.4.0.tgz -C /usr/local/
3.修改kafka配置
vim /usr/local/kafka_2.12-3.4.0/config/server.properties
#修改 zk 的IP
zookeeper.connect=10.0.5.163:2181#修改监听地址
listeners=PLAINTEXT://10.0.5.163:9092
4.启动kafka
nohup /usr/local/kafka_2.12-3.4.0/bin/kafka-server-start.sh /usr/local/kafka_2.12-3.4.0/config/server.properties >/tmp/kafka.log 2>&1 &
5.查看端口是否监听
netstat -lntp |grep 9092
Flebeat部署
原理流程如下:
首先是input输入,可以指定多个数据输入源,然后通过通配符进行日志文件的匹配
匹配到日志后,就会使用Harvester(收割机),将日志源源不断的读取到来
然后收割机收割到的日志,就传递到Spooler(卷轴),然后卷轴就在将他们传到对应的地方
1.下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.16.1-linux-x86_64.tar.gz
2.解压二进制包
tar zxf filebeat-7.16.1-linux-x86_64.tar.gz -C /usr/local/
mv /usr/local/filebeat-7.16.1-linux-x86_64/ /usr/local/filebeat-7.16.1
3.创建 Filebeat 配置文件
#备份模板文件
mv /usr/local/filebeat-7.16.1/filebeat.yml /usr/local/filebeat-7.16.1/filebeat.yml.bak
#创建配置文件
cat > /usr/local/filebeat-7.16.1/filebeat.yml << "EOF"
filebeat.inputs:
- type: logtail_files: truebackoff: "1s"paths:- /var/log/nginx/access.json.logfields:type: accessfields_under_root: true
- type: logtail_files: truebackoff: "1s"paths:- /var/log/messagesfields:type: messagesfields_under_root: true
output:kafka:hosts: ["10.0.5.163:9092"]topic: hosts_10-0-5-163
EOF
4.启动Fielbeat
#查看是否已存在进程,将其停止
ps -ef |grep filebeat |grep -v grep |awk '{print $2}' |xargs kill -9#启动Filebeat
nohup /usr/local/filebeat-7.16.1/filebeat -e -c /usr/local/filebeat-7.16.1/filebeat.yml >/tmp/filebeat.log 2>&1 &#查看进程
ps -ef |grep filebeat#查看是否与ZK建立连接
netstat -ntp |egrep -w '9092|filebeat'
Fielbeat使用
启动
./filebeat -e -c shengxia.yml
yaml文件介绍
filebeat.inputs: # filebeat input输入
- type: stdin # 标准输入enabled: true # 启用标准输入
setup.template.settings: index.number_of_shards: 3 # 指定下载数
output.console: # 控制台输出pretty: true # 启用美化功能enable: true
输送至ElasticSearch或者Logstash,在Kibana中实现可视化
然后我们在控制台输入hello,就能看到我们会有一个json的输出,是通过读取到我们控制台的内容后输出的,内容如下
{"@timestamp": "2023-05-31T22:57:58.700Z","@metadata": {#元数据信息"beat": "filebeat","type": "_doc","version": "8.8.1"},"log": {"offset": 0,"file": {"path": ""}},"message": "hello",#元数据信息"input": {#控制台标准输入"type": "stdin"#元数据信息},"ecs": {"version": "8.0.0"},"host": {"name": "elk-node1"},"agent": {#版本以及主机信息"id": "5d5e4b99-8ee3-42f5-aae3-b0492d723730","name": "elk-node1","type": "filebeat","version": "8.8.1","ephemeral_id": "24b4fd16-5466-4d7e-b4b8-b73d41f77de0"}
}
参考文档:https://blog.csdn.net/qq_52589631/article/details/131216188
再次创建一个文件,叫 shengxia-log.yml,然后在文件里添加如下内容
filebeat.inputs:
- type: logenabled: truepaths:- /opt/elk/logs/*.log
setup.template.settings:index.number_of_shards: 3
output.console:pretty: trueenable: true
添加完成后,我们在到下面目录创建一个日志文件
# 创建文件夹
mkdir -p /opt/elk/logs# 进入文件夹
cd /opt/elk/logs# 追加内容
echo "hello world" >> test.log
然后再次启动filebeat
./filebeat -e -c shengxia-log.yml
能够发现,它已经成功加载到了我们的日志文件 test.log
同时我们还可以继续往文件中追加内容
追加后,我们再次查看filebeat,也能看到刚刚我们追加的内容
检测到日志文件有更新,立刻就会读取到更新的内容,并且输出到控制台。
自定义字段
当我们的元数据没办法支撑我们的业务时,我们还可以自定义添加一些字段
filebeat.inputs:
- type: logenabled: truepaths:- /opt/elk/logs/*.logtags: ["web", "test"] #添加自定义tag,便于后续的处理fields: #添加自定义字段from: web-testfields_under_root: true #true为添加到根节点,false为添加到子节点中
setup.template.settings:index.number_of_shards: 3
output.console:pretty: trueenable: true
添加完成后,重启 filebeat
./filebeat -e -c shengxia-log.yml
filebeat.inputs:
- type: logenabled: truepaths:- /opt/elk/logs/*.logtags: ["web", "test"]fields:from: web-testfields_under_root: false
setup.template.settings:index.number_of_shards: 1
output.elasticsearch:hosts: ["192.168.40.150:9200","192.168.40.137:9200","192.168.40.138:9200"]
Logstash 配置
1.修改Logstash 配置文件(下面 output 将日志打印到本地,观察日志是否采集到,日志格式是否正确)
cat > /usr/local/logstash-7.16.1/config/logstash.conf << "EOF"
input {kafka {bootstrap_servers => "10.0.5.163:9092"topics => ["hosts_10-0-5-163"]group_id => "test"codec => "json"}
}filter {if [type] == "access" {json {source => "message"remove_field => ["message","@version","path","beat","input","log","offset","prospector","source","tags"]}}
}output {stdout {codec=>rubydebug}
}
EOF
2.执行前台启动命令
#查看是否已存在进程,将其停止
ps -ef |grep logstash |grep -v grep |awk '{print $2}' |xargs kill -9#启动 Logstash
logstash -f /usr/local/logstash-7.16.1/config/logstash.conf
3.查看kafka Group 和队列信息
#进入kafka 安装目录
cd /usr/local/kafka_2.12-3.4.0/bin
#查看所有topic
./kafka-topics.sh --bootstrap-server 10.0.5.163:9092 --lis
#查看Group
./kafka-consumer-groups.sh --bootstrap-server 10.0.5.163:9092 --list
#查看队列
./kafka-consumer-groups.sh --bootstrap-server 10.0.5.163:9092 --group test --describe
4.修改配置文件,将output 将日志写入elasticsearch
cat > /usr/local/logstash-7.16.1/config/logstash.conf << "EOF"
input {kafka {bootstrap_servers => "10.0.5.163:9092"topics => ["hosts_10-0-5-163"]group_id => "test"codec => "json"}
}
filter {if [type] == "access" {json {source => "message"remove_field => ["message","@version","path","beat","input","log","offset","prospector","source","tags"]}}
}output{if [type] == "access" {elasticsearch {hosts => ["http://127.0.0.1:9200"]user => "elastic"password => "elk@2023"index => "access-%{+YYYY.MM.dd}"}}else if [type] == "messages" {elasticsearch {hosts => ["http://127.0.0.1:9200"]user => "elastic"password => "elk@2023"index => "messages-%{+YYYY.MM.dd}"}}
}
EOF
4.后台启动 Logstash
#查看是否已存在进程,将其停止
ps -ef |grep logstash |grep -v grep |awk '{print $2}' |xargs kill -9#启动 Logstash
nohup logstash -f /usr/local/logstash-7.16.1/config/logstash.conf >/tmp/logstash.log 2>&1 &
查看服务日志是否正常
查看日志是否有 ERROR 持续输出
tailf /tmp/logstash.log#查看logstash 端口是否监听
netstat -lntp |grep 9600
相关文章:

【星海随笔】云解决方案学习日志篇(二) kafka、Zookeeper、Fielbeat
Elastic 中国社区官方博客 https://blog.csdn.net/ubuntutouch/category_9209092.html Kafka kafka的源代码是基于Scala语言编写的,运行在Java虚拟机(即:JVM)上。因此,在安装kafka之前需要先安装JDK Kafka 为什么依赖 Zookeepe…...

【测试专题】系统测试报告(原件Word)
软件测试报告在软件开发过程中起着至关重要的作用,主要有以下几个主要原因: 1、确保软件质量 2、提供决策支持 3、记录测试过程和结果 4、促进沟通和协作 5、符合标准和法规要求 6、改进测试流程和策略 7、降低风险 软件开发全套资料获取进主页或者本文末…...
C++中的模板方法模式
目录 模板方法模式(Template Method Pattern) 实际应用 数据处理流程 在线教育系统的课程模板 软件开发生命周期 总结 模板方法模式(Template Method Pattern) 模板方法模式是一种行为设计模式,它定义了一个操作…...

【数据结构】第十七弹---C语言实现选择排序
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、选择排序 1.1、基本思想 1.2、代码实现 1.3、代码测试 1.4、时空复杂度分析 总结 1、选择排序 1.1、基本思想 选择排序是一种简单直观的比…...
信号处理中的梯型权重操作(Tapering)
目录 1. 引言2. 一个Tapering操作的例子3. Tapering操作的简单实现延伸阅读1. 引言 Tapering 操作是对信号数据在水平和垂直方向上应用梯形权重,这个操作可以减弱数据边界效应,从而在进行傅里叶变换时减少伪影和边缘效应。本文将通过一个简单的例子来展示 Tapering 操作的具…...
深入解析分布式链路追踪:原理、技术及应用
目录 分布式链路追踪简介分布式链路追踪的基本概念 Span 和 Trace上下文传播采样策略 分布式链路追踪的工作原理常见的分布式链路追踪系统 ZipkinJaegerOpenTelemetry 分布式链路追踪的技术实现 数据收集数据传输数据存储数据展示 分布式链路追踪的应用场景 性能优化故障排除依…...

2024信息系统、信号处理与通信技术国际会议(ICISPCT2024)
2024信息系统、信号处理与通信技术国际会议(ICISPCT2024) 会议简介 2024国际信息系统、信号处理与通信技术大会(ICISPCT2024)将在青岛隆重开幕。本次会议旨在汇聚全球信息系统、信号处理和通信技术领域的专家学者,共同探索行业…...

用这个神级提示词插件,能让你的AI绘画工具Stable diffusion提示词直接写中文!
大家好,我是设计师阿威 最近,有同学在使用AI绘画工具 Stable Diffusion的时候和我说:老师,我英文不好,能不能直接让我写中文提示词啊?最好可以直接在SD的输入框就能直接写中文,不用切换网页或者…...
Android里的设计模式
一:设计模式分类 经典的23种设计模式是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(合称“Gang of Four”)在他们的书《设计模式:可复用面向对象软件的基础》中定义的。以下是这些设计模式的分类和简要介绍。 1.…...
token无感刷新
Token无感刷新通常指的是在用户不知情的情况下自动刷新认证Token,以保持用户的会话状态。这通常在使用JWT(JSON Web Tokens)作为认证方式时使用。以下是实现无感刷新的一种常见方法: 1. 前端请求拦截: 在发送请求前&a…...

Golang的协程调度器GMP
目录 GMP 含义 设计策略 全局队列 P的本地队列 GMP模型以及场景过程 场景一 场景2 场景三 场景四 场景五 场景六 GMP 含义 协程调度器,它包含了运行协程的资源,如果线程想运行协程,必须先获取P,P中还包含了可运行的G…...
C++ 后端,Vue前端
参考2篇博客 1-VUE、C前后端调用 2-Vue解决CORS header ‘Access-Control-Allow-Origin’ missing及同源、跨域问题 这里给出App.vue代码 <script setup lang"ts"> import HelloWorld from ./components/HelloWorld.vueimport axios from axios import { ref…...
使用Navicat Premium向mysql插入2000000条数据
DELIMITER // DROP PROCEDURE IF EXISTS sys_log; CREATE PROCEDURE sys_log() BEGIN DECLARE n int DEFAULT 1; WHILE(n<2000000) DO INSERT INTO sys_log VALUES (n, 超级系统管理员, 查询实时工况数据, /keyParameterMonitoring/getNewestUnitData, {\"role\"…...
docker命令记录
基本命令和参数 docker run: 运行一个新的容器实例。-itd: 组合参数,含义如下: -i: 以交互模式运行容器,保持标准输入打开。-t: 分配一个伪终端。-d: 后台运行容器,即使容器启动后依然返回控制台。 设备映射 --device/dev/dri…...

Java学习七
Java包 String对象 String案例 集合 ArrayList 集合...

麒麟Kylin | 操作系统的安装与管理
以下所使用的环境为:VMware Workstation 17 Pro、Kylin-Server-10-SP2-x86-Release-Build09-20210524 一、创建虚拟机 在VMware主机单击【创建新的虚拟机】 **在新建虚拟机向导中选择【自定义】,然后点击【下一步】 ** 保持默认选项,然后…...

数据结构预备知识(Java):包装类泛型
1、包装类 1.1 包装类 在Java中,每一个基本数据类型都有一个对应的包装类: 在SE的学习中我们已有过简单了解。 我们可以注意到,除了int类型的包装类为Integer,char类型的包装类为Character外,其余基本类型的包装类均…...
掌握Linux Vim:从基础到高级的全面指南
Vim是一款在Linux世界中备受推崇的文本编辑器,它以其强大的功能和高效的操作模式闻名于世。尽管Vim的学习曲线较陡,但一旦掌握,你将发现它在代码编辑和文本处理方面的无与伦比的优势。本文将从Vim的基础知识开始,逐步深入到高级用法和技巧,帮助你全面掌握这款强大的编辑器…...
打好“组合拳”,实现国有企业降本增效
在当前经济不确定性加剧、市场寒意明显的背景下,众多国有企业因历史积累的管理问题而陷入困境。随着经济形势的严峻,各行业普遍出现发展乏力的现象,促使企业开始重视“修炼内功”、“向内挖潜”,试图控制成本,以确保平…...

四川古力未来科技有限公司抖音小店解锁电商新机遇
在数字化浪潮席卷全球的今天,电商行业正以前所未有的速度蓬勃发展。四川古力未来科技有限公司紧跟时代步伐,积极拥抱变革,在抖音平台上开设小店,为品牌发展注入了新的活力。那么,四川古力未来科技有限公司抖音小店究竟…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...

运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.
报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符,最后运行:npm run lint --fix...