网站资料要提供哪些,电商网站搜索引擎怎么做,济南网站制作工具,网站怎么做口碑以下是一个详细的从在 Kubernetes 集群中部署 Filebeat#xff0c;到实现按web-oper、web-api微服务分离日志并存储到不同索引的完整方案#xff1a;
理解需求#xff1a;按服务分离日志索引
在 Kubernetes 集群中#xff0c;有web-oper和web-api两种微服务#xff0c;希…以下是一个详细的从在 Kubernetes 集群中部署 Filebeat到实现按web-oper、web-api微服务分离日志并存储到不同索引的完整方案
理解需求按服务分离日志索引
在 Kubernetes 集群中有web-oper和web-api两种微服务希望通过 Filebeat 将它们的日志分别收集到不同的索引中。 这样在后续查看和分析日志时可以更方便地根据服务进行区分例如在 Elasticsearch 中通过不同的索引来查询web-api和web-oper的日志。
准备工作已成功部署好es与Kibana
准备 Filebeat 配置文件
创建一个名为 filebeat.yml 的配置文件内容如下
filebeat.inputs:- type: containerpaths:- /var/log/containers/*.logprocessors:- add_kubernetes_metadata:host: ${NODE_NAME}matchers:- logs_path:logs_path: /var/log/containers/output.elasticsearch:hosts: [elasticsearch-cluster-ip:9200] # 替换为实际的Elasticsearch集群IP和端口indices:- index: web-api-log-%{yyyy.MM.dd}when:equals:kubernetes:labels:app: web-api- index: web-oper-log-%{yyyy.MM.dd}when:equals:kubernetes:labels:app: web-oper上述配置文件作用解析 ● filebeat.inputs 部分指定了从容器日志路径/var/log/containers/*.log这是 Kubernetes 默认存放容器日志之处收集日志并通过 add_kubernetes_metadata 处理器添加 Kubernetes 相关元数据便于后续精准筛选。
● output.elasticsearch 部分定义了输出目标为 Elasticsearch 集群重点是 indices 小节使用 when 条件语句搭配 equals 判断机制。如果容器的 kubernetes.labels.app 标签值为 web-api日志将发送至 web-api-log-%{yyyy.MM.dd} 索引若标签值是 web-oper则发送到 web-oper-log-%{yyyy.MM.dd} 索引。
创建 Filebeat 的 DaemonSet 资源定义文件
新建一个名为 filebeat-daemonset.yaml 的 YAML 文件用于在 Kubernetes 中部署 Filebeat
apiVersion: apps/v1
kind: DaemonSet
metadata:name: filebeatnamespace: kube-system # 推荐部署到kube-system命名空间便于统一管理系统级组件
spec:selector:matchLabels:app: filebeattemplate:metadata:labels:app: filebeatspec:containers:- name: filebeatimage: docker.elastic.co/beats/filebeat:7.14.0 # 按需选择Filebeat版本镜像volumeMounts:- name: varlogcontainersmountPath: /var/log/containers- name: varlogpodsmountPath: /var/log/pods- name: filebeat-configmountPath: /usr/share/filebeat/filebeat.yml # 挂载filebeat文件readOnly: truevolumes:- name: varlogcontainershostPath:path: /var/log/containers- name: varlogpodshostPath:path: /var/log/pods- name: filebeat-configconfigMap:name: filebeat-configDaemonSet 控制器确保所有或一部分的节点都运行了一个指定的 Pod 副本
每当向集群中添加一个节点时指定的 Pod 副本也将添加到该节点上。当节点从集群中移除时Pod 也就被垃圾回收了。删除一个 DaemonSet 可以清理所有由其创建的 Pod。
这个 DaemonSet 配置解析如下
metadata 定义了 DaemonSet 的名称 filebeat 以及所属命名空间。spec 里的 selector 和 template 标签配合确保每个节点上都运行符合 app: filebeat 标签的 Pod。containers 中定义Filebeat 容器挂载了容器日志目录/var/log/containers 和 /var/log/pods用于读取日志同时挂载了之前创建的 filebeat.yml 配置文件通过 configMap 方式挂载下面步骤会创建设置为只读防止容器内意外修改配置。volumes 部分对应上述 volumeMounts声明了hostPath 类型的本地日志目录挂载以及 configMap 类型挂载用于配置文件挂载。/var/log/pods目录存储了 Pod 级别的日志这些日志可能包含了关于 Pod 启动、停止以及内部容器之间交互的一些详细信息。例如Pod 初始化容器init container的日志可能会在这里有记录。初始化容器用于在主容器启动之前执行一些初始化任务如配置环境、检查依赖等其日志对于排查 Pod 启动问题非常重要。 创建 ConfigMap 用于挂载配置文件 执行以下命令创建包含 filebeat.yml 的 ConfigMap
kubectl create configMap filebeat-config --from-filefilebeat.yml -n kube-system此命令会将 filebeat.yml 文件内容封装进名为 filebeat-config 的 ConfigMap 里供 Filebeat 容器挂载使用。
在 Kubernetes 集群中部署 Filebeat 使用以下命令部署 Filebeat
kubectl apply -f filebeat-daemonset.yaml这条命令将依据 filebeat-daemonset.yaml 描述在集群中启动 Filebeat。
验证部署与日志收集效果 ● 查看 Filebeat 容器日志 通过 kubectl logs -n kube-system filebeat-pod-name 可通过 kubectl get pods -n kube-system | grep filebeat 查到检查有无报错信息排查配置或启动过程中可能出现的问题。 ● 在 Elasticsearch 端检查索引利用 Elasticsearch 的 API 或者 Kibana 工具查看是否成功创建了 web-api-log-%{yyyy.MM.dd} 和 web-oper-log-%{yyyy.MM.dd} 两个索引索引内是否陆续接收到对应服务的日志。
通过以上步骤即可在 Kubernetes 集群中成功部署 Filebeat并实现按 web-oper、web-api 服务分离日志存储到不同索引方便后续日志分析运维工作。 需留意配置文件中的 Elasticsearch 集群地址、Filebeat 镜像版本等关键信息依实际情况调整适配。