- 数据流:
filebeat安装在要收集日志的应用服务器中,filebeat收集到日志之后传输到Kafka中,logstash通过kafka拿到日志,再由logstash传给后面的es,es将日志传给后面的kibana,最后通过kibana展示出来。
组件介绍:
ELasticsearch 只搜索和分析日志
Logstash 只收集和过滤日志和改格式
kibana 提供Web界面,汇总,分析和搜索重要数据日志
kafks 数据缓冲队列
zookeeper 为分布式系统提供一致性服务
filebeat 轻量级数据手机引擎
ES
- es运行依赖jdk8
- es优化:
1. 增加最大文件打开数
2. 增加最大进程数vim /etc/security/limits.conf
3. 增加最大内存映射数 - 启动es
nohup ./bin/elesticsearch &
- 默认端口:9200
- 主分片:是es的最小存储单元,一个index中的数据通常会存储在多个分片中,默认es会为每个index分为5个分片,分片不是越多越好,请求的分发和结果的合并都需要消耗时间和性能的。
- 主节点:主节点负责创建,删除索引,分配分片,追踪集群中的节点状态等工作。
- 数据节点:负责数据的存储和相关具体操作,比如搜索,数据节点对机器的配置要求比较高,比如磁盘,CPU,Memory和I/O的性能。
- 客户端节点:负责请求的分发和汇总
- 协调节点
- es添加节点
- 拷贝原有节点的ES相关文件到新机器
- 修改核心配置文件 jvm.options和elasticsearch.yml
- 访问9200端口进行验证
- es删除节点
- 暂停数据写入程序
- 关闭集群分片自动分配
- 手动执行打开集群自动分配
- 重启节点
- 打开集群分片自动分配
- 等待集群状态变green
- 重新开启数据写入程序
- 磁盘的三个默认警示水位线
- es不会将分片分配给使用磁盘超过85%的节点
- es会尝试从磁盘使用率超过90%的节点重新分配分片
- es使用率超过95%,对每个索引强制执行只读索引块,防止磁盘资源耗尽
- es默认30秒检查一次每个节点的磁盘使用情况
Kibana
- 基于nginx运行,需要安装nginx
- server.port 默认5601
- server.host 默认localhost
- elasticsearch 用来做查询的es节点的URL,默认http://ESip:9200
Logstash
- 运行同样依赖jdk,将logstash和kafka安装在一起
- 创建目录,将所有input,fifter,output配置文件全部放到该目录中
- 通过nginx的访问日志获取日志-----传输到logstash-----传输到es-----传输到kibana(通过nginx反代)
- 副本分片的主要目的就是故障转移,如果持有主分片的节点挂了,一个副分片就会晋升为主分片的角色
- logstach的事件处理流水线有三个主要角色完成:inputs,filters,outputs
- inputs常用插件
- file
- redis
- beats
- filter常用插件
- grok 匹配分割文本映射到关键字
- mutate 事件的变换,重命名,替换
- drop 完全丢弃事件
- clone 克隆事件
- output常用插件
- elasticsearch
- file
Kafka
- 特性
- 高吞吐量
- 可靠性:持久化到本地磁盘,并且支持数据备份防止数据丢失
- 容错性:允许n-1个节点失败
- 高并发
- kafka通过zookeeper来存储集群的信息
Zookeeper
- zookeeper是一个分布式协调服务,它的主要作用是为分布式系统提供一致性服务,提供的主要功能包括:配置维护,分布式同步等。
- 主要用来协调kafka的各个broker,不仅可以实现broker的负载均衡,而且当增加了broker或者某个broker故障了,zookeeper将会通知生产者和消费者,保证整个系统正常运转。
- 再kafka中,一个topic会被分成多个区并被分到多个broker上,分区的信息,以及broker的分布情况与消费者当前的状态信息都会保存在zookeeper中。