K8S使用filebeat统一收集应用日志
今年3月份在公司的内部k8s培训会上,开发同事对应用整合进pod提出了几个问题,主要围绕在java应用的日志统一收集、集中存放和java jvm内存监控数据收集相关的点上,本文将介绍使用filebeat实现pod日志的统一收集,集中存放使用集群外的elasticsearch,后续可以加上kibana及模板文件实现更友好的数据展示。
一、准备和测试tomcat基础镜像
该镜像主要是配置jdk环境变量和tomcat软件包部署,如果有特殊的需求,例如安装其他软件包、配置tomcat https等也可以在dockerfile里面实现。之后如果有对jdk和tomcat进行统一升级,更新基础镜像即可。
1、dockerfile编译镜像并推送到本地仓库
# docker pull centos
# cd tomcat/
# ls
# cat dockerfile
FROM centos
MAINTAINER yangliangwei "ylw@fjhb.cn"
WORKDIR /home
COPY java1.8.tgz /home/
RUN tar zxf /home/java1.8.tgz -C /usr/local/ && rm -rf /home/java1.8.tgz
ENV JAVA_HOME /usr/local/java/
ENV CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
COPY apache-tomcat-7.0.86.tar.gz /home/
RUN tar zxf apache-tomcat-7.0.86.tar.gz -C /home && rm -rf /home/apache-tomcat-7.0.86.zip
RUN mv /home/apache-tomcat-7.0.86 /home/tomcat
EXPOSE 8080
ENTRYPOINT /home/tomcat/bin/startup.sh && tail -f /home/tomcat/logs/catalina.out
# docker build -t tomcat_base:v1.0 .
# docker tag tomcat_base:v1.0 registry.59iedu.com
# docker push registry.59iedu.com/tomcat_base:v1.0
2、其他docker主机通过本地仓库下载镜像run测试
# docker pull registry.59iedu.com/tomcat_base:v1.0
# docker run -idt --name tomcat_test -p 8889:8080 registry.59iedu.com/tomcat_base:v1.0
# curl http://localhost:8889
二、在基础镜像上叠加app并推送到本地仓库
这里选择使用shopxx java开源项目来做模拟java app,将部署的shopxx打包好放入指定位置即可运行。为了简单,这里选择Shopxx调用的数据库放在k8s集群之外,只要pod网络可以正常访问即可。
# cd shopxx
# cat dockerfile
FROM registry.59iedu.com/tomcat_base:v1.0
MAINTAINER yangliangwei "ylw@fjhb.cn"
COPY ROOT.tgz /home/
RUN tar zxf /home/ROOT.tgz -C /home/tomcat/webapps/ && rm -rf /home/ROOT.tgz
# docker build -t tomcat_shopxx:v1 .
# docker tag tomcat_shopxx:v1 registry.59iedu.com/tomcat_shopxx:v1
# docker push registry.59iedu.com/tomcat_shopxx:v1
三、准备filebeat镜像
Filebeat容器主要负责将app容器里面的日志推送到elasticsearch, 为了降低耦合度及后续的维护难度,创建filebeat容器的时候将filebeat.yml配置文件以configmap的方式实现。所以在镜像编译部分不考虑filebeat.yml配置文件
# cd filebeat-v5.4.0/
# ls -lh
# cat dockerfile
FROM docker.io/centos
MAINTAINER YangLiangWei <ylw@fjhb.cn>
# Install Filebeat
WORKDIR /usr/local
COPY filebeat-5.4.0-linux-x86_64.tar.gz /usr/local
RUN cd /usr/local && \
tar xvf filebeat-5.4.0-linux-x86_64.tar.gz && \
rm -f filebeat-5.4.0-linux-x86_64.tar.gz && \
ln -s /usr/local/filebeat-5.4.0-linux-x86_64 /usr/local/filebeat && \
chmod +x /usr/local/filebeat/filebeat && \
mkdir -p /etc/filebeat
ADD ./docker-entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["/usr/local/filebeat/filebeat","-e","-c","/etc/filebeat/filebeat.yml"]
# cat docker-entrypoint.sh
#!/bin/bash
config=/etc/filebeat/filebeat.yml
env
echo 'Filebeat init process done. Ready for start up.'
echo "Using the following configuration:"
cat /etc/filebeat/filebeat.yml
exec "$@"
# docker build -t filebeat-v5.4.0 .
# docker tag filebeat-v5.4.0 registry.59iedu.com/filebeat:v5.4.0
# docker push registry.59iedu.com/filebeat:v5.4.0
四、准备yaml配置文件
1、tomcat.yaml文件
一个POD里面运行两个容器,两个容器通过emptydir的方式共享/home/tomcat/logs目录下的日志文件。Filebeat的配置文件通过configmap方式挂载进容器
# cat tomcat.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tomcat-shopxx
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
k8s-app: tomcat-shopxx
spec:
containers:
- image: registry.59iedu.com/filebeat:v5.4.0
imagePullPolicy: Always
name: filebeat
volumeMounts:
- name: app-logs
mountPath: /log
- name: filebeat-config
mountPath: /etc/filebeat/
- image: registry.59iedu.com/tomcat_shopxx:v1
name : tomcat-shopxx
imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- name: app-logs
mountPath: /home/tomcat/logs
volumes:
- name: app-logs
emptyDir: {}
- name: filebeat-config
configMap:
name: filebeat-config
2、configamp.yaml
通过configmap的形式创建filebeat.yml配置文件,指定收集日志的路径、elasticsearch的配置信息及索引名称
# cat configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
data:
filebeat.yml: |
filebeat.prospectors:
- input_type: log
paths:
- "/var/log/yum.log"
- "/log/*"
output.elasticsearch:
hosts: ["192.168.1.19:9600"]
index: "filebeat-tomcat-shopxx"
3、service.yaml文件
通过service.yaml文件将shopxx发布出去
# cat service.yaml
apiVersion: v1
kind: Service
metadata:
name: tomcat-shopxx
labels:
k8s-app: tomcat-shopxx
spec:
type: NodePort
ports:
- port: 8080
protocol: TCP
targetPort: 8080
name: http
nodePort: 8480
selector:
k8s-app: tomcat-shopxx
五、通过yaml配置文件创建pod、configmap、service
# kubectl create -f .
# kubectl get pod
# kubectl get svc
# kubectl get deployment
六、测试与验证
Filebeat容器日志:
Shopxx容器日志:
使用elasticsearch-head插件查看对应的索引:
访问web测试:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
微软HPC解决方案概述与实作
HPC解决方案是微软产品历史长河中的一个砂砾,国内很少有人提及,因此老王准备把这个砂砾擦擦,为大家呈现出来 开始之前我们不妨先来看下HPC的概念,前面我们花了将近50篇左右的文章,讲了微软高可用性群集,除了高可用群集,微软事实上还有负载均衡群集和高性能群集技术,负载均衡技术无非是ARR,NLB,DNS轮询,这些大家都常用的技术,而微软的高性能群集技术,就连专门做微软itpro的人也很少知道,因此本文我们就来从一个入门的角度,争取让不懂HPC的微软ITpro可以看懂,也可以让懂HPC但不了解微软产品的人看懂。 首先我们先来看下高性能群集与其它几种群集的不同 高可用群集:群集所有节点,来维持一个应用的持续运作,如果当前应用所在节点失败,自动故障转移至其它节点 负载均衡群集:群集所有节点来平衡一个应用的访问请求,利用每个节点的响应,以提高应用效能,同时支持故障转移 分布式群集:群集所有节点来共同完成一件事,一件事可以被分散成若干小事由不同节点处理,最终汇总结果 高性能群集:群集所有节点来共同完成一件事,通常以计算为主,综合群集的性能来达到快速完成计算目的 分布式群集与高性能群集进一步探讨 这...
-
下一篇
springboot + shiro之登录人数限制、登录判断重定向、session时间设置
springboot + shiro之登录人数控制 项目 前篇:spring boot + mybatis + layui + shiro后台权限管理系统:https://blog.51cto.com/wyait/2082803 本文是基于spring boot + mybatis + layui + shiro后台权限管理系统开发的,新增功能: shiro并发登陆人数控制(超出登录用户最大配置数量,清理用户)功能; 解决在父子页面中,判断用户未登录之后,重定向到登录页面嵌套显示问题; 解决ajax请求,判断用户未登录之后,如何重定向到登录页面问题; 解决使用并完成了功能1,导致的session有效时间冲突问题。 后篇: springboot + shiro 动态更新用户信息:https://blog.51cto.com/wyait/2112200 springboot + shiro 权限注解、统一异常处理、请求乱码解决 :https://blog.51cto.com/wyait/2125708 项目源码 项目源码:(包含数据库源码) github源码: https://github...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL数据库在高并发下的优化方案
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)