作者:v神
导语:云原生日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志数据解决平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
相信广大k8s用户在日志集群运维中都曾经遇到过:
- 集群中的某个应用被删除了,谁干的?
- Apiserver的负载突然变高,大量访问失败,集群中到底发生了什么?
- 集群节点被封锁了,是谁在什么时候操作的?
以前,排查这些问题,对客户来说并不容易。生产环境中的Kubernetes集群通常是一个相当复杂的系统,底层是各种异构的主机、网络、存储等云基础设施,上层承载着大量的应用负载,中间运行着各种原生(例如:Scheduler、Kubelet)和第三方(例如:各种Operator)的组件,负责对基础设施和应用进行管理和调度; 此外不同角色的人员频繁地在集群上进行部署应用、添加节点等各种操作。
现在,Kubernetes审计日志(Audit)正是帮助用户快速解决这些问题的重要工具。
什么是审计日志
在Kubernetes中,所有对集群状态的查询和修改都是通过向Apiserver发送请求,而审计日志是Kube-apiserver产生的可配置策略的结构化日志,记录了对Apiserver的访问事件。通过查看、分析审计日志,可以追溯对集群状态的变更;了解集群的运行状况;排查异常;发现集群潜在的安全、性能风险等等。
审计日志字段说明
每一条审计日志都是一个JSON格式的结构化记录,包括元数据(metadata)、请求内容(requestObject)和响应内容(responseObject)3个部分。其中元数据一定会存在,请求和响应内容是否存在取决于审计级别。元数据包含了请求的上下文信息,例如谁发起的请求,从哪里发起的,访问的URI等等。
如何使用审计日志去排查问题
日志服务CLS提供针对kubernetes审计日志的一站式服务,包含采集,存储,检索分析能力。用户仅需一键开启集群审计日志功能,即可获取开箱即用的审计日志可视化分析仪表盘。通过可视化的图表,用户可以轻松通过控制台解决大多数常见的运维问题,下面就让我们一起看看如何使用。
前提条件:用户购买TKE容器服务,开启集群审计日志,请参考操作指南
场景1:集群中的某个应用被删除了,谁干的?
进入TKE容器服务控制台,点击左侧菜单中【集群运维】>【审计检索】。
在【审计检索】页面中单击单击【K8S对象操作概览】标签,指定操作类型为delete和资源对象。
查询结果如下图所示:
由图可见,是 10001****7138
这个帐号,对应用「nginx」进行了删除。可根据帐号ID在【访问管理】>【用户列表】中找到关于此账号的详细信息。
场景2:Apiserver的负载突然变高,大量访问失败,集群中到底发生了什么?
在【审计检索】的【聚合检索】标签页中,提供了从用户、操作类型、返回状态码等多个维度对于Apiserver访问聚合趋势图。
通过以上图表得知,用户tke-kube-state-metrics
的访问量远高于其他用户,并且在“操作类型分布趋势”图中可以看出大多数都是list操作,在“状态码分布趋势”图中可以看出,状态码大多数为403,根据tke-kube-state-metrics
关键词,检索日志。
结合业务日志可知,由于RBAC鉴权问题导致tke-kube-state-metrics
组件不停的请求Apiserver重试,导致Apiserver访问剧增。
场景3:集群节点被封锁了,是谁在什么时候操作的?
在【审计检索】页面中,单击【节点操作概览】标签,填写被封锁的节点名。
查询结果如下图所示:
由图可见,是10001****7138
这个帐号在2020-1-30T06:22:18
时对172.16.18.13
这台节点进行了封锁操作。
以上就是本期TKE审计日志玩法分享,如果您有更多有意思的日志实践,欢迎投稿分享!
往期文章:
【日志服务CLS】Nginx日志数据全方位大解析
对象存储COS访问日志场景体验
【日志服务CLS】腾讯云日志服务CLS接入内容分发网络CDN
【日志服务CLS】应用TKE事件日志排查异常场景体验
CLB运维&运营最佳实践 ---访问日志大洞察