K8s容器日志实时收集FileBeat+ES+Kibana

摘要

由于logstash过于消耗资源,不利于K8s容器日志获取。作为 Beats 家族的一员,Filebeat 是一个轻量级的日志传输工具,它的存在正弥补了 Logstash 的缺点:Filebeat 作为一个轻量级的日志传输工具可以将日志推送到中心 Logstash。

K8s容器日志实时收集FileBeat+ES+Kibana

ELK


k8s日志收集第一种方式
filebeat.png-197.6kB
k8s日志收集第二种方式
filebeat.png-197.6kB

环境说明

IP地址 服务 主机名
10.4.82.119 docker、k8s_master|node、 master
10.4.82.120 docker、 k8s_node、kibana node
10.4.82.115 es、Harbor镜像仓库、docker (主要作用就是打一个filebeat镜像) i4t

提示:filebeat跑在k8s容器内部,所以没有单独创建服务

一、FileBeat

作为 Beats 家族的一员,Filebeat 是一个轻量级的日志传输工具,它的存在正弥补了 Logstash 的缺点:Filebeat 作为一个轻量级的日志传输工具可以将日志推送到中心 Logstash。

在版本 5.x 中,Elasticsearch 具有解析的能力(像 Logstash 过滤器)— Ingest。这也就意味着可以将数据直接用 Filebeat 推送到 Elasticsearch,并让 Elasticsearch 既做解析的事情,又做存储的事情。也不需要使用缓冲,因为 Filebeat 也会和 Logstash 一样记住上次读取的偏移:
image_1d6v3v2fn29s1oa932m3nf1i0n9.png-24.1kB
如果需要缓冲(例如,不希望将日志服务器的文件系统填满),可以使用 Redis/Kafka,因为 Filebeat 可以与它们进行通信:
image_1d6v3vfrn16g7bmp18ct1cm7pvom.png-32.1kB

Filebeat 优点

Filebeat 只是一个二进制文件没有任何依赖。它占用资源极少,尽管它还十分年轻,正式因为它简单,所以几乎没有什么可以出错的地方,所以它的可靠性还是很高的。它也为我们提供了很多可以调节的点,例如:它以何种方式搜索新的文件,以及当文件有一段时间没有发生变化时,何时选择关闭文件句柄。

Filebeat 缺点

Filebeat 的应用范围十分有限,所以在某些场景下我们会碰到问题。例如,如果使用 Logstash 作为下游管道,我们同样会遇到性能问题。正因为如此,Filebeat 的范围在扩大。开始时,它只能将日志发送到 Logstash 和 Elasticsearch,而现在它可以将日志发送给 Kafka 和 Redis,在 5.x 版本中,它还具备过滤的能力。

典型应用场景

Filebeat 在解决某些特定的问题时:日志存于文件,我们希望

① 将日志直接传输存储到 Elasticsearch。这仅在我们只是抓去(grep)它们或者日志是存于 JSON 格式(Filebeat 可以解析 JSON)。或者如果打算使用 Elasticsearch 的 Ingest 功能对日志进行解析和丰富。

② 将日志发送到 Kafka/Redis。所以另外一个传输工具(例如,Logstash 或自定义的 Kafka 消费者)可以进一步丰富和转发。这里假设选择的下游传输工具能够满足我们对功能和性能的要求。

1.1 FileBeat工作原理

Filebeat是本地文件的日志数据采集器。作为服务器上的代理安装,Filebeat监视日志目录或特定的日志文件tail -f file并将它们转发给ES、Logstash、Kafka

Filebeat由二个主要组件组成:prospectorhavvester 这些组件一起工作读取文件并将时间数据发送到指定的输出

启动Filebeat时,它会启动一个或多个查找器,查看您的日志文件指定的本地路径。对**prospector**所在的每个日志文件,prospector启动harvester。每个harvester都会为新内容读取单个日志文件,并将新日志数据发送到libbeat,后者将聚合事件合并聚合数据发送到Filebeat配置的输出

kafka-img.png-83.3kB

harvester

负载读取单个文化的内容。读取每个文件,并将内容发送到the output。每个文件启动一个harvester,负责打开和关闭文件,这意味着在运行时文件描述符保持打开状态
如果文件在读取时被删除或重命名,Filebeat将继续读取文件。在harvester关闭之前,磁盘上的空间被保留。默认情况下,Filebeat将文件保持打开状态,直到达到close_inactive状态

关闭harvester会产生以下结果

1.如果在harvester仍在读取文件时文件被删除,则关闭文件句柄,释放底层资源。
2.文件的采集只会在scan_frequency过后重新开始
3.如果在harvester关闭的情况下移动文件,则不会继续处理文件

prospector

负责管理harvester并找到所有要读取的文件来源。
如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester。每个prospector都在自己的Go斜程中运行

以下示例将Filebeat配置为从与指定的匹配的所有日志文件中收集行:

  1. filebeat.prospectors:
  2. - type: log
  3. paths:
  4. - /data/log/*.log
  5. - /data/log4j/*.log

Filebeat目前支持两种prospector类型:logstdin
每个prospector类型可以定义多次
日志prospector检查每个文件以查看harvester是否需要启动,是否已经运行

只有在harvest关闭后文件大小发生了变化,才会读到新行

注:Filebeat prospector只能读取本地文件,没有功能可以连接到远程主机来读取存储的日志或文件

Filebeat 保持文件状态

Filebeat 保存每个文件的状态并经常讲状态刷新到磁盘上的注册中心中。该状态用于记录harvest正在读取的最后偏移量,并确保发送所有日志行。

如果输出(例如ES或Logstash)无法访问,Filebeat会跟踪最后发送的行,并在输出再次可用时继续读取文件。

在Filebeat运行时,每个prospector内存中也会保存文件状态信息。由于文件可以被重命名活移动,因为文件名和路径不足易识别文件。对每个文件,Filebeat存储唯一标示符以检测文件是否先前已经采集过

Filebeat如何确保至少一次交付

Filebeat保证事件至少会被传送到配置的输出一次,并且不会丢失数据。Filebeat能够实现此行为,因为它将每个事件的传递状态存储在注册文件中。在输出阻塞或未确认所有事件的情况下,Filebeat将继续尝试发送事件,直到接收端确认已收到。

如果Filebeat在发送事件的过程中关闭,它不会等待输出确认所有收到事件。发送到输出但在Filebeat关闭前未确认的任何事在重新启动Filebeat时会再次发送。这可以确保每个事件至少发送一次,但最终会重复事件发送到输出。也可以通过设置shutdown_timeout选项来配置Filebeat以在关闭之前等待特定事件

注:
Filebeat的至少一次交付保证包括日志轮换和删除旧文件的限制。如果将日志文件写入磁盘并且写入速度超过Filebeat可以处理的速度,或者在输出不可用时删除了文件,则可能会丢数据。在Linux,Filebeat也可能因为inode重用而跳过行

本段参考:https://www.jianshu.com/p/6282b04fe06a

二、环境配置

Docker安装

  1. wget http://down.abcdocker.com/docker/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
  2. wget http://down.abcdocker.com/docker/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
  3. yum 安装
  4. yum install docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm -y
  5. yum install docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm -y
  6. systemctl enable docker
  7. systemctl start docker
  8. sed -i '/ExecStart=\/usr\/bin\/dockerd/i\ExecStartPost=\/sbin/iptables -I FORWARD -s 0.0.0.0\/0 -d 0.0.0.0\/0 -j ACCEPT' /usr/lib/systemd/system/docker.service
  9. sed -i '/dockerd/s/$/ \-\-storage\-driver\=overlay2/g' /usr/lib/systemd/system/docker.service
  10. systemctl daemon-reload
  11. systemctl restart docker
  12. #设置存储引擎和防火墙

2.1 Tomcat镜像制作

222.png-34.4kB

我们这里以Tomcat项目为基础进行测试

  1. Docker文件内容如下
  2. #这里需要把apache和jdk下载到本地,需要和Dockerfile在同一目录
  3. wget http://down.abcdocker.com/docker/jdk1.8.0_66.tar.gz
  4. wget http://down.abcdocker.com/docker/apache-tomcat-8.5.39.tar.gz
  5. [root@i4t tomcat_test]# cat Dockerfile
  6. # docker pull centos
  7. ###############################################################################
  8. # INSTALLATION
  9. ###############################################################################
  10. # www.i4t.com
  11. ##############################################################################
  12. # .o. .o8 .o8 oooo
  13. # .888. "888 "888 `888
  14. # .8"888. 888oooo. .ooooo. .oooo888 .ooooo. .ooooo. 888 oooo .ooooo. oooo d8b
  15. # .8' `888. d88' `88b d88' `"Y8 d88' `888 d88' `88b d88' `"Y8 888 .8P' d88' `88b `888""8P
  16. # .88ooo8888. 888 888 888 888 888 888 888 888 888888. 888ooo888 888
  17. # .8' `888. 888 888 888 .o8 888 888 888 888 888 .o8 888 `88b. 888 .o 888
  18. # o88o o8888o `Y8bod8P' `Y8bod8P' `Y8bod88P" `Y8bod8P' `Y8bod8P' o888o o888o `Y8bod8P' d888b
  19. #
  20. #
  21. # **** ****
  22. # *** *** ** ***
  23. # * * ** *
  24. #
  25. # ** **
  26. # *** **
  27. # ****
  28. #####################################################################################
  29. FROM centos
  30. MAINTAINER www.i4t.com "cyh@i4t.com"
  31. WORKDIR /tmp
  32. ## Please see https://i4t.com/3552.html install JDK
  33. COPY jdk1.8.0_66.tar.gz /tmp
  34. RUN tar zxf /tmp/jdk1.8.0_66.tar.gz -C /usr/local/ && rm -rf /tmp/jdk1.8.0_66.tar.gz
  35. RUN ln -s /usr/local/jdk1.8.0_66 /usr/local/jdk
  36. #/etc/profile
  37. ENV JAVA_HOME /usr/local/jdk
  38. ENV CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  39. ENV PATH $PATH:$JAVA_HOME/bin
  40. # add apache
  41. # Please see i4t.com && baidu.com
  42. COPY apache-tomcat-8.5.39.tar.gz /tmp
  43. RUN tar zxf apache-tomcat-8.5.39.tar.gz -C /usr/local && rm -rf /tmp/apache-tomcat-8.5.39.zip
  44. RUN mv /usr/local/apache-tomcat-8.5.39 /usr/local/tomcat
  45. #port
  46. EXPOSE 8080
  47. ###############################################################################
  48. # START
  49. ###############################################################################
  50. ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out

构建tomcat镜像

  1. [root@i4t ~]# docker build -t i4t.com/tomcat/tomcat.v1 /data/tomcat_test/
  2. Sending build context to Docker daemon 205.6 MB
  3. Step 1/14 : FROM centos
  4. ---> 9f38484d220f
  5. Step 2/14 : MAINTAINER www.i4t.com "cyh@i4t.com"
  6. ---> Using cache
  7. ---> 4a7c687c3bf7
  8. Step 3/14 : WORKDIR /tmp
  9. ---> Using cache
  10. ---> 4bc766547f5c
  11. Step 4/14 : COPY jdk1.8.0_66.tar.gz /tmp
  12. ---> Using cache
  13. ---> 2fd3ec55a068
  14. Step 5/14 : RUN tar zxf /tmp/jdk1.8.0_66.tar.gz -C /usr/local/ && rm -rf /tmp/jdk1.8.0_66.tar.gz
  15. ---> Using cache
  16. ---> 3cb37cce7028
  17. Step 6/14 : RUN ln -s /usr/local/jdk1.8.0_66 /usr/local/jdk
  18. ---> Using cache
  19. ---> 790555e157f7
  20. Step 7/14 : ENV JAVA_HOME /usr/local/jdk
  21. ---> Using cache
  22. ---> 9a0bcf883c98
  23. Step 8/14 : ENV CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  24. ---> Using cache
  25. ---> 9d4f614f7979
  26. Step 9/14 : ENV PATH $PATH:$JAVA_HOME/bin
  27. ---> Using cache
  28. ---> b99a4730d3ea
  29. Step 10/14 : COPY apache-tomcat-8.5.39.tar.gz /tmp
  30. ---> Using cache
  31. ---> 73a8408bc879
  32. Step 11/14 : RUN tar zxf apache-tomcat-8.5.39.tar.gz -C /usr/local && rm -rf /tmp/apache-tomcat-8.5.39.zip
  33. ---> Using cache
  34. ---> 34d63da07d30
  35. Step 12/14 : RUN mv /usr/local/apache-tomcat-8.5.39 /usr/local/tomcat
  36. ---> Using cache
  37. ---> 7dae5cb15207
  38. Step 13/14 : EXPOSE 8080
  39. ---> Using cache
  40. ---> 8ec8c8470149
  41. Step 14/14 : ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out
  42. ---> Using cache
  43. ---> 0eac795556fb
  44. Successfully built 0eac795556fb
  45. #更改镜像名称
  46. docker tag [原镜像] [新镜像]
  47. 例子:docker tag i4t.com/tomcat/tomcatv1 i4t.com/tomcat/i4tv1

镜像打包完成后,我们在docker容器手动启动镜像进行测试

  1. [root@i4t tomcat]# docker run -idt --name i4t_tomcat_test -p 80:8080 i4t.com/tomcat/tomcat.v1
  2. f6f1621d9464ea2d17a4611393b1950e36f5b7b6c9234f322d636d47fee94e10
  3. #run 运行容器
  4. -it 进入容器
  5. -d 后台运行
  6. --name 新容器名称
  7. -p 映射端口
  8. i4t.com/tomcat/tomcat.v1 镜像名称

在Docker本机使用curl命令验证服务是否正常运行 (主要是判断docker build是否有问题)
curl.png-484.8kB
容器正常启动访问说明我们tomcat镜像是没有问题
tomcat-web.png-455.6kB

当我们镜像打包完成docker启动正常之后,直接push到Harbor镜像仓库即可

  1. docker push i4t.com/tomcat/i4tv1

下面是harbor搭建文档
harbor安装

这里稍微说明一点,如果是线上环境,需要替换war包操作。可以将上面制作的tomcat镜像为基础镜像,在写一个dockerfile。我这里提供一下

  1. #这里不是重点,我不详细说。步骤放在这
  2. # cat dockerfile
  3. FROM i4t.com/tomcat/tomcat.v1
  4. MAINTAINER abcdocker "i4t.com"
  5. COPY ROOT.tgz /data/
  6. RUN tar zxf /data/ROOT.tgz -C /usr/local/tomcat/webapps/ && rm -rf /data/ROOT.tgz
  7. # docker build -t tomcat_video:v1
  8. # docker tag tomcat_video:v1 i4t.com/tomcat_video:v1
  9. # docker push i4t.com/tomcat_video:v1

2.2 Filebeat 制作镜像

我们这里讲的是使用Filebeat来收集日志,ELK安装具体可以参考
ELK 二进制安装并收集nginx日志

filebeat-logo.png-196.2kB

tomcat服务已经可以正常运行,现在我们部署filebeat镜像

  1. [root@i4t filebeat]# docker build -t tomcat_filebeat:v2 /data/filebeat/
  2. Sending build context to Docker daemon 50.63 MB
  3. Step 1/9 : FROM docker.io/centos
  4. ---> 9f38484d220f
  5. Step 2/9 : MAINTAINER www.i4t.com <cyh@i4t.com>
  6. ---> Using cache
  7. ---> bbc4c3a8b392
  8. Step 3/9 : WORKDIR /usr/local
  9. ---> Using cache
  10. ---> 7af655ce0f61
  11. Step 4/9 : ENV FILEBEAT_VERSION 6.7.0
  12. ---> Using cache
  13. ---> 227c02e65a80
  14. Step 5/9 : RUN set -x && curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz && tar xf filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz -C /usr/local && ln -s /usr/local/filebeat-${FILEBEAT_VERSION}-linux-x86_64 /usr/local/filebeat && chmod +x /usr/local/filebeat/filebeat && mkdir -p /etc/filebeat
  15. ---> Running in 6d86756e5c4a
  16. + curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.0-linux-x86_64.tar.gz
  17. % Total % Received % Xferd Average Speed Time Time Time Current
  18. Dload Upload Total Spent Left Speed
  19. 100 11.1M 100 11.1M 0 0 382k 0 0:00:29 0:00:29 --:--:-- 1149k
  20. + tar xf filebeat-6.7.0-linux-x86_64.tar.gz -C /usr/local
  21. + ln -s /usr/local/filebeat-6.7.0-linux-x86_64 /usr/local/filebeat
  22. + chmod +x /usr/local/filebeat/filebeat
  23. + mkdir -p /etc/filebeat
  24. ---> 8920fb78ff5d
  25. Removing intermediate container 6d86756e5c4a
  26. Step 6/9 : ADD ./docker-entrypoint.sh /usr/bin/
  27. ---> d2989df722b1
  28. Removing intermediate container dbe668e7cd75
  29. Step 7/9 : RUN chmod +x /usr/bin/docker-entrypoint.sh
  30. ---> Running in eb7c7304647a
  31. ---> 5ea2cb81cad6
  32. Removing intermediate container eb7c7304647a
  33. Step 8/9 : ENTRYPOINT docker-entrypoint.sh
  34. ---> Running in bed03d3aa8e3
  35. ---> cb9d8de0d329
  36. Removing intermediate container bed03d3aa8e3
  37. Step 9/9 : CMD /usr/local/filebeat/filebeat -e -c /etc/filebeat/filebeat.yml
  38. ---> Running in 253dcfbc0ff7
  39. ---> f26910a9c61d
  40. Removing intermediate container 253dcfbc0ff7
  41. Successfully built f26910a9c61d

Filebeat Dockerfile内容

  1. [root@i4t filebeat]# cat Dockerfile
  2. ###############################################################################
  3. # INSTALLATION
  4. ###############################################################################
  5. FROM docker.io/centos
  6. MAINTAINER www.i4t.com <cyh@i4t.com>
  7. # Install Filebeat
  8. WORKDIR /usr/local
  9. ENV FILEBEAT_VERSION=5.4.0
  10. RUN set -x \
  11. && curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz \
  12. && tar xf filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz -C /usr/local \
  13. && ln -s /usr/local/filebeat-${FILEBEAT_VERSION}-linux-x86_64 /usr/local/filebeat \
  14. && chmod +x /usr/local/filebeat/filebeat \
  15. && mkdir -p /etc/filebeat
  16. ADD ./docker-entrypoint.sh /usr/bin/
  17. RUN chmod +x /usr/bin/docker-entrypoint.sh
  18. ENTRYPOINT ["docker-entrypoint.sh"]
  19. CMD ["/usr/local/filebeat/filebeat","-e","-c","/etc/filebeat/filebeat.yml"]
  20. ######### 脚本内容
  21. [root@i4t filebeat]# cat docker-entrypoint.sh
  22. #!/bin/bash
  23. config=/etc/filebeat/filebeat.yml
  24. env
  25. echo 'Filebeat init process done. Ready for start up.'
  26. echo "Using the following configuration:"
  27. cat /etc/filebeat/filebeat.yml
  28. exec "$@"
  29. ## Dockerfile和脚本在同一个目录下,然后进行build

打包完成后我们push到harbor仓库,和tomcat镜像一样的操作

  1. [root@i4t tmp]# docker tag tomcat_filebeat:v2 i4t.com/filebeat/v1
  2. [root@i4t tmp]# docker push i4t.com/filebeat/v1:latest
  3. The push refers to a repository [i4t.com/filebeat/v1]
  4. de0545fc627a: Pushed
  5. 8bd9a1a2863c: Pushed
  6. f01cc0f2d07b: Pushed
  7. d69483a6face: Pushed
  8. latest: digest: sha256:03a8f15e28d012eb19aeb29b4920f7ab5df5365054896fa40f83a97aa1cb55cf size: 1155

2.3 Elasticsearch安装

1.JDK环境安装
2.Elasticsearch安装

这里不写了,博客有很多了
参考https://i4t.com/3552.html

服务正常启动即可 (我们这里只需要安装es和es-head插件即可,logstash在另外一台)
image_1d7jo79vjgsn136116fk1chd592r.png-827.5kB

2.4 kibana安装

https://i4t.com/3552.html
只要服务正常启动,没有报错即可
image_1d7jpvv551sb0fjd1opt1aef5f45g.png-267.4kB

2.5 测试镜像

这里我们使用k8s环境进行测试,没有搭建k8s可以参考 [k8s 1.11源码安装]

tomcat.yaml

  1. [root@yzsjhl82-119 tomcat_test]# cat tomcat_test.yaml
  2. apiVersion: extensions/v1beta1
  3. kind: Deployment
  4. metadata:
  5. name: tomcat-abcdocker
  6. namespace: default
  7. spec:
  8. replicas: 1
  9. template:
  10. metadata:
  11. labels:
  12. k8s-app: tomcat-web
  13. spec:
  14. containers:
  15. - image: 镜像地址/filebeat/v2
  16. imagePullPolicy: Always
  17. name: filebeat
  18. volumeMounts:
  19. - name: app-logs
  20. mountPath: /logs
  21. - name: filebeat-config
  22. mountPath: /etc/filebeat/
  23. - image: 镜像地址/filebeat/tomcat.v1:latest
  24. name : tomcat-web
  25. imagePullPolicy: Always
  26. ports:
  27. - containerPort: 8080
  28. volumeMounts:
  29. - name: app-logs
  30. mountPath: /usr/local/tomcat/logs
  31. volumes:
  32. - name: app-logs
  33. emptyDir: {}
  34. - name: filebeat-config
  35. configMap:
  36. name: filebeat-config

tomcat_server.xml (端口暴露)

  1. [root@master tomcat_test]# cat tomcat_server.yaml
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5. name: tomcat-web
  6. labels:
  7. k8s-app: tomcat-web
  8. spec:
  9. type: NodePort
  10. ports:
  11. - port: 8080
  12. protocol: TCP
  13. targetPort: 8080
  14. name: http
  15. nodePort: 30001
  16. selector:
  17. k8s-app: tomcat-web

configmap.xml
通过configmap的形式创建filebeat.yml配置文件,指定收集日志的路径、elasticsearch的配置信息及索引名称

  1. [root@master tomcat_test]# cat tomcat_configmap.yaml
  2. apiVersion: v1
  3. kind: ConfigMap
  4. metadata:
  5. name: filebeat-config
  6. data:
  7. filebeat.yml: |
  8. filebeat.prospectors:
  9. - input_type: log
  10. paths:
  11. - "/logs/*"
  12. output.elasticsearch:
  13. hosts: ["10.4.82.115:9200"]
  14. index: "filebeat-tomcat-log"
  15. # hosts指定es地址
  16. # index 索引名称

创建索引

  1. [root@master tomcat_test]# kubectl create -f tomcat_configmap.yaml
  2. configmap/filebeat-config created
  3. [root@master tomcat_test]# kubectl create -f tomcat_test.yaml
  4. deployment.extensions/tomcat-abcdocker created
  5. [root@master tomcat_test]# kubectl create -f tomcat_server.yaml
  6. service/tomcat-web created

2.6 服务检查

我们需要检查以下

1.检查pod是否运行正常
2.检查server是否正常
3.检查configmap是否创建完成
4.kubectl常用命令  https://k.i4t.com/15356201695268.html

查看服务整个状态是否正常

  1. [root@master tomcat_test]# kubectl get svc,pod,configmap
  2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  3. service/kubernetes ClusterIP 10.254.0.1 <none> 443/TCP 97d
  4. service/nginx-service NodePort 10.254.167.71 <none> 80:31000/TCP 97d
  5. service/tomcat-web NodePort 10.254.237.208 <none> 8080:30001/TCP 3m
  6. NAME READY STATUS RESTARTS AGE
  7. pod/tomcat-abcdocker-56f9547997-2zz7c 2/2 Running 0 3m
  8. NAME DATA AGE
  9. configmap/filebeat-config 1 3m

查看pod容器是否异常

  1. 1.查看tomcat镜像日志
  2. kubectl logs tomcat-abcdocker-56f9547997-2zz7c filebeat
  3. #这里的pod名称可能不是这个
  4. 2.查看filebeat镜像日志
  5. kubectl logs tomcat-abcdocker-56f9547997-2zz7c tomcat-web

Kubernetes kubectl 命令自动补全

容器只要没有error报错就ok

Filebeat log
蓝色为ES地址,红色为启动正常
image_1d7jnsolpkc91esh16pamt51s0311.png-853.2kB
tomcat log
image_1d7jo02tp1n4nurb11l9uo01vob21.png-1135.6kB

k8s服务是没有问题,我们浏览器访问一下
端口为31000
image_1d7jo3vm015gq1es46jhth51q9b2e.png-237.3kB

接下来查看一下es日志

  1. [root@i4t ~]# curl -XGET '10.4.82.115:9200/_cat/indices?v&pretty'
  2. health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
  3. yellow open filebeat-tomcat-log jRWrRLQjQ2SPTAe-wmy_EA 5 1 272 0 244.6kb 244.6kb

通过head插件查看是否有数据
image_1d7johc8q1fmi1po1qr14l81t8r38.png-62.9kB

并且已经实时打印
image_1d7joidqkmfr103li87rio1l2l3l.png-503.5kB

进入kibana控制台
image_1d7jpruua1i8j1h7hqd1bq4bkd4m.png-168.1kB

image_1d7jpt76018hn37gmu1djt1c7k53.png-235.8kB


新闻联播老司机

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:3   其中:访客  3   博主  0

  1. avatar xad 0
    nice,正好学到k8s :cool:
  2. avatar zzc 0
    司机,文章写的很棒,点赞。另外,在2.6服务检查章节下,有一个FileBeat写成了FileBaet,强迫症受不住啊,=-=
    • avatar 新闻联播老司机 1
      已修改! 感谢阅读!