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
启动消费者
