部署案例
logstash
9600-9700 表示 Logstash API 服务将尝试在 9600 到 9700 这个范围内的端口上监听 HTTP 请求。
开机自动运行logstash
收集节点日志
work节点是以daemonSet 的方式运行 filebeat。 这里使用的是containerd
kibana界面,进入stack manager — 索引管理 —
索引模式创建索引,创建k8s-* 选择时间戳 @timestamp 。 然后Discover 找k8s相关的日志
收集节点应用程序日志
同一台机器可以有多个logstash,端口不同,用于收集不同的日志
6.2
k8s-worker1是 nginx所在的节点
在kibana中的索引管理里也有了
收集pod 日志
一个pod中能运行多个容器,filebeat 以 sidecar的容器实现
接下来到 kibana就都一样了。
EFK
EFK由于其轻量级,所以可以直接部署在 k8s 集群之内的。ELK就部署在物理机上。
Fluentd 不需要logstash,自己就能完成数据格式化,方便后面处理
部署EFK
获取 EFK 部署清单文件
在master节点操作,切换git 分支是因为要和 kubectl version 同版本
例子es的statfulset用的存储用的emptydir,映射到宿主机的/data。生产环境不能这样用
在 Kubernetes 中,Endpoint 是一种 API 资源,它用于表示一个或多个 IP 地址和端口组合,这些组合是某个 Service 的实际后端。Endpoint 资源会动态更新,以反映集群中服务的可用 Pods。
因为是nodePort类型,所以host 可以是集群中任意节点 ip
service名称或者nodePort, 还有就是endpoint 来访问 es.
上面采取的是service名称的方式,svc + namespace + svc.cluster.local.
at的是dns。如果返回中有下面的,就证明成功
划线的ip就是 kubectl get svc -n kube-system里的 ip
笔记
logstash 负责: 接收数据 input — 解析过滤并转换数据 filter(此插件可选) — 输出数据 output
input — decode — filter — encode — output
elasticsearch 查询和保存数据
Elasticsearch 去中心化集群
Data node 消耗大量 CPU、内存和 I/O 资源
分担一部分压力是指在data node上汇聚,然后在client node 再一次汇聚,然后将搜索结果返回给用户
client node类似路由起,将集群请求发送的主节点,将数据请求发送到数据节点。配置文件中如果 node.master 和 node.data都为false,那么它就是client node
es 必须在普通用户下运行,为的是安全
Kafka
zookeeper管理Kafka。选举leader,还有consumer group变化时,进行再平衡
写消息允许多个Producer 写到一个Partition。 消费时,只能一个 消费组中的consumer 所消费。一个consumer 可以消费多个 Partition
大于是因为 这样消息数据就可以均匀地分布在各个broker中
Kafka 集群部署规划
先部署zookeeper,再Kafka
比如可以显示 topic 列表, 创建topic ,查看topic 状态, 删除topic
生产消息,消费消息
案例
Kafka MirrorMaker 是跨数据中心的流数据同步方案
配置MirrorMaker的 生产者和消费者,启动它就行了。MirrorMaker单独在一台机器上
每个kafka节点的带宽20M,每个服务器16c, 32g内存
Filebeat + Kafka + logstash + Elasticsearch
典型ELK 架构