怎样进行Kubernetes日志查询分析实践

75次阅读
没有评论

共计 2987 个字符,预计需要花费 8 分钟才能阅读完成。

这期内容当中丸趣 TV 小编将会给大家带来有关怎样进行 Kubernetes 日志查询分析实践,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

简介:下面将介绍如何基于日志服务实现对 Kubernetes(以下简称 K8s)日志的采集以及查询分析,此外,还附带了对 Ingress、Audit 方案的简要介绍。为了方便大家通过操作来加深理解,提供了详细的操作步骤以及对应截图和配置代码。

准备工作

为了完成后续的相关操作,我们需要准备一个 K8s 集群,操作步骤如下:

登陆容器服务控制台。

创建一个标准托管集群(杭州区域),在向导中勾选上 **【使用 EIP 暴露 API Server】和【使用日志服务】**。

集群创建完毕后,回到集群列表页面,点击 **【更多 - 通过 CloudShell 管理集群】**。

在 CloudShell 中输入 kubectl get ds -n kube-system,结果中显示的 logtail-ds 即为了实现数据采集所安装的日志服务组件。

打开日志服务控制台,可以看到和 K8s 集群 ID 所对应的 project 也已经创建完毕。

操作截图如下:

图:创建托管集群(步骤 2)

图:打开 CloudShell(步骤 3)

图:在 CloudShell 中查看日志服务组件(步骤 4)

图:打开日志服务控制台,查看 project(步骤 5)

1. 数据采集

在 K8s 环境下,容器日志数据从大体上分为两类:容器标准输出和容器内文本文件,前者是容器特有的一种日志存在形式,后者和传统的文本文件日志类似,只是文件存放在各个容器内部,相互之间隔离。下面我们将介绍如何对这两种类型的日志进行采集。

1.1. Mock 数据

我们将使用如下两个 YAML 文件分别生成标准输出和容器内文件两种形式的 mock 数据。
容器标准输出

#  创建两个  pod  来生成  mock  数据
apiVersion: batch/v1
kind: Job
metadata:
 name: nginx-stdout-log-demo-1
 namespace: nginx-stdout
spec:
 template:
 metadata:
 name: nginx-stdout-log-demo-1
 spec:
 containers:
 - name: nginx-stdout-log-demo-1
 image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
 command: [/bin/mock_log]
 args: [--stderr=false ,  --stdout=true ,  --log-type=nginx ,  --total-count=100000000 ,  --logs-per-sec=5]
 restartPolicy: Never
apiVersion: batch/v1
kind: Job
metadata:
 name: nginx-stdout-log-demo-2
 namespace: nginx-stdout
spec:
 template:
 metadata:
 name: nginx-stdout-log-demo-2
 spec:
 containers:
 - name: nginx-stdout-log-demo-2
 image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
 command: [/bin/mock_log]
 args: [--stderr=false ,  --stdout=true ,  --log-type=nginx ,  --total-count=100000000 ,  --logs-per-sec=5]
 restartPolicy: Never

容器内文本文件(/var/log/access.log)

apiVersion: batch/v1
kind: Job
metadata:
 name: nginx-file-log-demo
 namespace: nginx-file
spec:
 template:
 metadata:
 name: nginx-file-log-demo
 spec:
 restartPolicy: Never
 containers:
 - name: nginx-file-log-demo
 image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
 command: [/bin/mock_log]
 args: [--log-type=nginx ,  --stdout=false ,  --stderr=false ,  --path=/var/log/access.log ,  --total-count=100000000 ,  --logs-per-sec=5]

操作步骤:

打开 CloudShell,参考准备工作中的步骤 3。

在集群中应用上面提及的两个 YAML(Github)。

执行 kubectl get pods 查看负责生成日志的几个 Pod。

查看两个 Pod 生成日志的情况(根据实际情况替换命令中的 pod 名)

标准输出:执行 kubectl logs -n nginx-stdout –tail=10 nginx-stdout-log-demo-1-7kvwx。

容器内文件:执行 kubectl exec -n nginx-file nginx-file-log-demo-7frsp — bash -c tail /var/log/access.log。

$ kubectl create namespace nginx-stdout
$ kubectl create -f https://raw.githubusercontent.com/goclis/kubernetes-mock-log/master/pod_nginx_stdout.yaml
$ kubectl create namespace nginx-file
$ kubectl create -f https://raw.githubusercontent.com/goclis/kubernetes-mock-log/master/pod_nginx_file.yaml

命令:生成 mock 数据(步骤 2)

$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
nginx-file nginx-file-log-demo-7frsp 1/1 Running 0 2m9s
nginx-stdout nginx-stdout-log-demo-1-7kvwx 1/1 Running 0 2m12s
nginx-stdout nginx-stdout-log-demo-2-4x7vw 1/1 Running 0 2m12s

命令:查看日志服务组件(步骤 3)

上述就是丸趣 TV 小编为大家分享的怎样进行 Kubernetes 日志查询分析实践了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2987字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)