文件上传网站源码,百度竞价推广优势,网站建设策划书怎么写,东莞建站模板elk的架构
es数据库#xff1a;非关系型数据库#xff0c;json格式
logstash#xff1a;收集日志
kibana#xff1a;图形化的工具
↓ 以上三种结合起来即为日志收集系统
filebeat
作用#xff1a;filebeat是一款轻量级的日志收集工具#xff0c;不依赖java环境非关系型数据库json格式
logstash收集日志
kibana图形化的工具
↓ 以上三种结合起来即为日志收集系统
filebeat
作用filebeat是一款轻量级的日志收集工具不依赖java环境用来替代在机器上没有java环境的情况下进行日志收集
filebeat启动收集日志只要10m左右的内存
filebeat.inputs:type: logenabled: truepaths:- /var/log/nginx/access.log- /var/log/nginx/error.logtags: [nginx]#标签为了后续logstash进行识别的fields:service_name: 192.168.233.21 nginx#设定显示的索引名称log_type: nginxfrom: 192.168.233.21type: logenabled: truepaths:- /usr/local/mysql/data/mysql_general.logtags: [mysql]fields:service_name: 192.168.233.21_mysqllog_type: mysqlfrom: 192.168.233.21zookeeper kafka
zookeeper 开源的分布式框架协调服务
zookeeper的工作机制 1、基于观察者模式设计的分布式结构负责存储和管理架构当中的元信息架构当中的应用接受观察者的监控一旦数据有变化它会通知对应的zookeeper保存变化的信息
特点 1、最少要有3台机器一个领导者leader多个跟随者follower组成 2、zookeeper要有半数以上的节点存活集群就可正常工作所以都是奇数台部署 3、全局数据一致 4、数据更新的原子性要么都成功要么都失败 5、实时性
zookeeper的数据架构
1、统一命名服务不是以ip来记录可以用域名也可以用主机名来记录信息
2、统一配置管理所有节点信息的配置要一致
3、统一集群管理在整个分布式的环境中必须实时的掌握每个节点的状态如果状态发生变化要及时更新 kafka消息队列
服务端向客户端发送一个指令客户端收到指令并且通过这个指令反馈到服务端完成一个异步方式的通信的流程
kafka消息队列 -----------》大数据场景非常合适
rabbitMQ ------------》适合处理小场景的数据请求
activeMQ -------------》适合处理小场景的数据请求
消息队列的应用场景
1、异步处理
用户的短信验证码邮件通知
2、系统解耦 微服务架构中的服务之间的通信 降低各个组件之间的依赖程度耦合度提高组件的灵活性和可维护性
3、负载均衡
高并发系统中的任务处理
4、流量控制和限流 根据api请求来进行处理通过控制消息的生产速度和消费的处理速度来完成限流 端口应用和应用之间通信 api接口应用程序内部各个组件之间通信的方式
5、任务调度和定时任务
消息队列可以定时的进行任务调度按照消费者的计划生成对应的数据
6、数据同步和分发 日志收集和数据收集 远程的实现数据的统一管理
7、实时数据处理
8、备份和恢复
消息队列的模式
1、点对点1对1生产者生产消息消费者消费
2、发布/订阅模式
消息的生产者发布一个主题其他的消费者订阅这个主题从而实现一对多 主题topic
kafka组件的名称 1、主题 topic主题是kafka数据流的一个基本的单元类似于数据的管道生产者将消息发布到主题其他的消费者订阅主题来消费消息主题可以被分区分区有偏移量
2、生产者将消息写入主题和分区
3、消费者从主题和分区当中消费发布的消息一个消费者可以订阅多个主题
4、分区一个主题可以被分为多个分区每个分区都是数据的有序的子集分区越多消费者消费的速度就越快可以避免生产者的消费堆积分区当中有偏移量按照偏移量进行有序存储消费者可以独立的读写每个分区的数据一般是不考虑的只有在消息出现堆积的时候会考虑扩展分区数
kafka的消费堆积出现应该如何处理:
消费者没有及时处理生产者发布的消息导致消息堆积
1、扩展分区数
5、偏移量消息在分区当中的唯一标识 test1 test2 test3 分区1
0 1 2
6、经纪人zookeeper存储分区的信息kafka集群的元数据 log.retention.hours168单位为小时即7天默认是7天 消费队列当中数据保存的最大时间
./kafka-server-start.sh -daemon /usr/local/kafka/config/server.propertieskafka-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个副本不宜超过6个影响性能副本数必须是偶数
–partitions 3定义分区数
./kafka-topics.sh --list --bootstrap-server 192.168.233.61:9092查看主题数
kafka-console-consumer.sh --bootstrap-server 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --topic test1 --from-beginning消费
kafka-console-producer.sh --broker-list 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --topic test1生产
修改主题的分区数
kafka-topics.sh --bootstrap-server 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --alter --topic test1 --partitions 6 Topic: test1 TopicId: 2vuwpY75Qj2bk2e9EYS4Vg PartitionCount: 3 ReplicationFactor: 2 Configs:Topic: test1 Partition: 0 Leader: 1 Replicas: 1,0 Isr: 1,0
Topic: test1 Partition: 1 Leader: 0 Replicas: 0,2 Isr: 0,2
Topic: test1 Partition: 2 Leader: 2 Replicas: 2,1 Isr: 2,1leader: 每一个分区都有一个leader 领导者负责处理分区的读写操作
Replicas: 副本数0 1 2分别对应每个leader Isr: 表示和哪个leader进行同步 Partition: 分区的数量
删除topic
kafka-topics.sh --delete --bootstrap-server 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092 --topic test1 filebeat在kafka集群上创建主题
kafka {bootstrap_servers 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092topics nginx_mysqltype nginx_kafkacodec json指定数据的格式是jsonauto_offset_reset latestlatest从尾部开始earliest 从头部开始decorate_events true传递给es的数据额外的附加kafka的属性数据
}input {kafka {bootstrap_servers 192.168.233.61:9092,192.168.233.62:9092,192.168.233.63:9092topics nginx_mysqltype nginx_kakfacodec jsonauto_offset_reset latestdecorate_events true
}
}
output {if nginx-1 in [tags] {elasticsearch {hosts [192.168.233.10:9200,192.168.233.20:9200]index %{[fields][service_name]}-%{YYYY.MM.dd}}}if mysql-1 in [tags] {elasticsearch {hosts [192.168.233.10:9200,192.168.233.20:9200]index %{[fields][service_name]}-%{YYYY.MM.dd}}}
}