网站首页 > 技术文章 正文
近期实践了在k8s集群内对各个应用的日志处理,起因是开发那边反应服务器环境调试的时候查看日志特别麻烦,毕竟在开发本地毫无问题的代码在服务器上没有bug的概率还是比较低的。之前也有上elastic技术栈的计划,但是做得并没有那么完善。
介绍
在k8s集群中,可以将日志简单得分为三类:节点级别日志、集群级别日志和运行在集群内的应用日志,这里仅仅实践了集群内的应用日志。
elastic技术栈的大致架构为: app ---> filebeat(fluenetd,logstash) ---> elasticsearch ---> kibana
在CICD流程中自动化部署的服务上线后,日志收集工具实时监听应用的日志信息,并将日志推送到elasticsearch,开发就可以在kibana上搜索到日志,考虑到logstash过于庞大,则用轻量级的filebeat替代
一般说来,收集应用日志有以下三种做法:
1. 在集群中每个节点运行一个filebeat的pod,因为运行在节点上的容器会将控制台的标准输出保存在/var/lib/docker/containers目录下,因此只需将该目录以volume的形式挂载在日志收集组件的pod里
2. 在每个应用的pod里加一个filebeat容器,用volume把应用容器里的日志文件共享到filebeat容器里
3. 在每个应用的容器里加一个filebeat服务,直接本地读取日志文件
第一种做法最简单便捷,实验下来发现读取到的日志有遗漏,而且有一些无关的日志,于是我采取的是第二种做法
实验要点
计划用一个egg应用容器和一个filebeat日志容器组成pod,用filebeat读取egg应用容器的日志,并将日志传给es。
制作filebeat的docker镜像
FROM debian:jessie RUN mkdir /opt/filebeat WORKDIR /opt/filebeat RUN apt update -y && apt install -y wget && \ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.0-linux-x86_64.tar.gz -O filebeat-6.4.0-linux-x86_64.tar.gz && tar zxvf filebeat-6.4.0-linux-x86_64.tar.gz && \ rm -rf filebeat-6.4.0-linux-x86_64.tar.gz && \ apt-get purge -y wget && \ apt-get autoremove -y && \ apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN mv ./filebeat-6.4.0-linux-x86_64/* ./ && mv filebeat /usr/local/bin/ COPY filebeat.yml /opt/filebeat/filebeat.yml CMD filebeat
部署pod
apiVersion: v1 kind: Pod metadata: name: test-logstash spec: containers: - name: egg-example image: {your egg image url} imagePullPolicy: IfNotPresent volumeMounts: - name: app-logs mountPath: /root - name: filebeat image: {filebeat image you built} imagePullPolicy: IfNotPresent volumeMounts: - name: app-logs mountPath: /root volumes: - name: app-logs emptyDir: {}
简单地用egg.js写了一些测试接口,打包成docker镜像,部署时加上filebeat的容器,监听egg-example项目的日志,最终可以看到egg-example项目的日志被完整地读取并写入es中。
猜你喜欢
- 2024-09-22 经典案例复盘——运维专家讲述如何实现K8S落地
- 2024-09-22 EFK 日志系统收集K8s日志 (二)
- 2024-09-22 Docker安装ELK并实现JSON格式日志分析
- 2024-09-22 开发利器丨如何使用ELK设计微服务中的日志收集方案?
- 2024-09-22 智汇华云 | 集群日志动态采集方案
- 2024-09-22 使用Elastic进行事件响应的便携式SIEM
- 2024-09-22 日志服务架构设计
- 2024-09-22 如何将 Python 项目日志接入到 ELK
- 2024-09-22 搭建ELK容器化,so easy
- 2024-09-22 Elasticsearch Service 数据接入
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)