kubernetes生产环境使用filebeat sidecar收集日志
在生产环境中,ES 通常是不会在 k8s 集群中存在的,一般 MySQL 和 Elasticsearch 都是独立在 k8s 之外。 那么无论哪种 pod,要甩日志到 ES,最轻量的方案肯定是用 filebeat 甩过去了。 当然,如果是阿里的 ACK,logtail 和 logstore 配搭已经非常不错了,根本用不到 filebeat 和 ES。 可但是,我们不想为阿里 sls、logstore 出钱买单,就只能用 filebeat + ES 了 说一下 filebeat 的 sidecar 边车(僚机)用法: 如上图所示,简单说就是起一个 filebeat 的 logging-agent 边车(僚机),边车和主应用之间共享某个文件夹(mountPath),达到收集主应用日志并发送到 ES,而不用动 app-container 分毫。 我们以部署一个 Tomcat 应用为例来说明: 一、打造 filebeat 边车镜像 首先准备 Dockerfile FROM alpine:3.12 ARG VERSION=7.15.1 COPY docker-entrypoint.sh / RUN set -x \ && cd /tmp \ && wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${VERSION}-linux-x86_64.tar.gz \ && tar xzvf filebeat-${VERSION}-linux-x86_64.tar.gz \ && mv filebeat-${VERSION}-linux-x86_64 /opt \ && rm /tmp/* \ && chmod +x /docker-entrypoint.sh ENV PATH $PATH:/opt/filebeat-${VERSION}-linux-x86_64 WORKDIR /opt/filebeat-${VERSION}-linux-x86_64 ENTRYPOINT ["/docker-entrypoint.sh"] 我们以 alphine:3.12 为底版,然后下载 filebeat 7.15.1的二进制包并释放到 /opt 下,最后指定入口文件 /docker-entrypoint.sh ...