ELK zookeeper kafka

elk:统一日志收集系统

elasticsearch:分布式的全索引引擎的非关系型数据库

存储所有的日志信息,主和从 最少需要2台

logstash:动态的从各种指定的数据源,获取数据,而且对数据进行过滤,分析。

按照统一的格式发送到es

kibana:把es的数据进行展示,进行客户端可以理解的操作,汇总,分析和搜索数据的平台。

1两台服务器,好解决。

工作原理:

1、logstash收集日志数据

2、收集到的数据按照es的格式,发送到数据库

3、在图形界面展示--kibana

4、客户端访问kibana

数据库,99%都是物理服务器

nginx可以是微服务

redis可以是微服务部署

keep/lvs? docker可以部署,k8s不需要

elk

物理服务器:

8核16G/32G cpu和内核

16核32G

硬盘: 500G 机械硬盘

硬盘:1T 固态

品牌: 华为

ELK的安装

test1 es1

test2 es2

test3 logstash kibana

安装es logstash 内存不能少于4G

安装elasticsearch

安装java java -version

清理内核的命令

echo 3 > /proc/sys/vm/drop_caches

test1

test2

test3

echo 3 > /proc/sys/vm/drop_caches

安装kibana logstash

建立软连接

收集日志

-f file 从指定文件开始收集

--path.data /opt/test1 每开启一个logstash就会有一个数据文件,默认都在/var/log/logstash

elk的架构

es数据库 非关系型数据库,json格式

logstash 收集日志

kibana 图形化的工具

filebeat是一款轻量级的日志收集工具,不依赖java环境,

用来替代在机器上没有java环境的情况下进行日志收集。

filebeat启动收集日志,只要10M左右内存。

mysql1

general_log=on

general_log_file=/usr/local/mysql/data/mysql_general.log

logstash的端口,不是一定是5044,可以是任意端口,5044是logstash的默认端口

-e:输出格式为标准输出

-c:指定配置文件

test3

zookeeper

zookeeper:开源的分布式框架协调服务

zookeeper的工作机制

基于观察者模式设计的分布式结构,复制存储和管理架构当中的元信息,架构当中的应用接受观察者的监控,一旦数据有变化,通知对于的zookeeper,保存变化的信息。

zookeeper特点

1、最少要有3台服务器,一个领导者(leader),多个跟随者(follower)。
2、zookeeper要有半数以上的节点存货,整个架构就可以正常工作,所有都是奇数台部署
3、全局数据一致
4、数据更新的原子性,要么都成功,要么都失败。
5、实时性

zookeeper的数据结构

1、统一的命名服务,不是以IP来记录,可以用域名也可以是主机名来记录信息。

2、统一配置管理,所有的节点信息的配置要是一致的。

3、统一的集群管理,在整个分布式的环境中,必须实时的掌握每个节点的状态,如果状态发生变化,要及时更新。

nginx1 2 3

1:指的是服务器的序号

192.168.233.61:对应服务器的ip地址

3188: leader和follower之间交换信息的端口

3288:选举端口

对应主机按照序号分别创建 myid文件

kafka

kafka信息队列:

服务端向客户端发送一个指令,客户端收到指令并且通过这个指令反馈到服务器,完成一个异步方式的通信的流程。

kafka信息队列------->大数据场景非常合适

rabbitMQ------------->适合小场景的数据请求

activeMQ--------------->适合小场景的数据请求

信息队列的应用场景:

1、异步处理

用户的短信验证码,邮件通知

2、系统解耦

微服务架构中的服务之间的通信

降低各个组件之间的依赖程度(耦合度),提高组件的灵活性和可维护性

3、负载均衡

高并发系统中的任务处理

信息队列把多个任务分发到多个消费者实列,电商平台的订单系统

4、流量控制和限流

根据api请求来进行处理,通过控制信息的生产速度和消费的处理速度来完成限流。

端口:应用和应用之间通信

api接口:应用程序内部各个组件之间通信的方式

5、任务调度和定时任务:

信息队列可以定时的进行任务调度,按照消费者的计划生成对应的数据

6、数据同步和分发:

日志收集和数据收集

远程实现数据的统一管理

7、实时数据处理

8、备份和恢复

信息队列的模式:

1、点对点,一对一,生产者生产消息,这个是一对一的。

2、发布/订阅模式

消息的生产者发布一个主题,其他的消费者订阅这个主题,从而实现一对多。

主题:topic

kafka组件的名称

1、主题 topic,主题是kafka数据流的一个基本的单元,类似于数据的管道,生产者将消息发布到主题,其他的消费者订阅主题,来消费消息,主题可以被分区,分区有偏移量

2、生产者:将消息写入主题和分区

3、消费者:从分区和主题当中接受发布的消息,一个消费者可以订阅多个主题。

4、分区:一个主题可以被分为多个分区,每个分区都是数据的有序的子集,分区越多,消费者消费的速度就越快,避免生产者的消费堆积。分区当中有偏移量,按照偏移量进行有序存储,消费者可以独立的读写每个分区的数据。

如何读取分区的数据,一般是不考虑的。只有在消息出现堆积的时候,会考虑扩展分区数。

kafka的消费堆积出现应该如何处理:

消费者没有及时处理掉生产者发布的消息,导致消息堆积。

1、扩展分区数

5、偏移量:消息在分区当中的唯一标识,根据偏移量指定消费者获取消息的位置。

6、经纪人:zookeeper,存储分区的信息,kafka集群的元数据。

kafka消息出现堆积应该如何处理:

扩大分区的数量

kafka数据流向图

nginx1 2 3

不可以相同

可以设置一样的大小

添加kafka的全局变量

可以不做

一起启动

创建主题

nginx1

kafka-topics.sh --create --bootstrap-server 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --replication-factor 2 --partitions 3 --topic test1

--bootstrap-server :这里的地址一般是一个集群当中地址即可,默认的我们包含所有。

--replication-factor:定义主题的副本数2个副本 2-4个 副本是偶数。

partitions 3: 定义分区数 3 6个

生产消息

发布消息

查看kafka当前集群的主题数

nginx2

消费消息

nginx3

export KAFKA_HOME=/usr/local/kafka

export PATH=PATH:KAFKA_HOME/bin

如何修改主题的分区数:

leader:每一个分区都有一个leader

领导者负责处理分区的读写操作

0

1

2

Replicas:副本数0 1 2 分别对应每个leader

lsr:表示和哪个leader进行同步

Partition:分区的编号

修改分区数

删除主题

查看主题

完整数据架构

mysql1

test3

开启

logstash -f kafka.conf --path.data /opt/testa &

nginx1

启动消费者

相关推荐
运维&陈同学6 小时前
【Logstash01】企业级日志分析系统ELK之Logstash 安装与介绍
大数据·linux·elk·elasticsearch·云原生·自动化·logstash
2401_850410832 天前
ELK+filebeat+kafka
分布式·elk·kafka
zyplanke3 天前
Elasticsearch及ELK使用(四):与数据库DB交互
数据库·elk
高hongyuan3 天前
ELK日志平台搭建 (最新版)
elk
栀寒老醑6 天前
ELK日志收集
linux·运维·服务器·nginx·elk·centos·graylog
qq_448941086 天前
1、ELK的架构和安装
elk
007php0076 天前
gozero项目接入elk的配置与实战
运维·开发语言·后端·elk·golang·jenkins·ai编程
弗罗里达老大爷8 天前
ELK日志收集系统部署
运维·elk·jenkins
编程、小哥哥8 天前
ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana
elk·elasticsearch·jenkins